Une équipe de quatre développera un service qui vous permettra de vérifier l'emplacement actuel et l'état de la congestion du bus sur le Web en analysant les informations de localisation du bus circulant sur le campus et l'image à l'intérieur du bus dans une recherche gratuite à l'université. devenu. Le développement de toute l'équipe s'est installé, et je l'ai posté avec l'intention de résumer les domaines dont j'étais en charge.
Cela peut être difficile à comprendre car il se concentre sur le contenu dont j'étais en charge. Je vous serais très reconnaissant de bien vouloir signaler les points difficiles à comprendre ** ou les points qui devraient être corrigés **.
Veuillez vous référer au matériel affiché sur slideshare pour le contenu des autres responsables. Essayez de développer un système de bus de circulation universitaire en équipe. Le code source est publié sur GitHub.
Avec ce système, j'étais en charge du développement du client bus. Le rôle du client de bus est de mesurer les informations de localisation et l'état de congestion du bus. Envoi de l'image dans le bus au serveur API. C'est le rôle du client de bus dans tout le système.
Un client de bus est réalisé en développant une application Android avec les trois fonctions suivantes et en installant un terminal Android sur lequel l'application est installée dans le bus.
Le contenu des données JSON (à gauche: informations de position, à droite: informations d'image).
tamabus ├ AndroidManifest.xml ├ MainActivity.java ├ UploadTask.java ├ activity_main.xml ├ colors.xml ├ strings.xml └ styles.xml
--AndroidManifest.xml: un fichier qui décrit les autorisations à utiliser --MainActivity.java: Le programme décrit ici fonctionne. --UploadTask.java: classe de traitement de communication asynchrone lors de la publication de données sur le serveur --activity_main.xml: fichier qui décrit la disposition de l'écran de l'application --colors.xml, strings.xml, styles.xml: fichiers contenant des informations telles que les couleurs, les chaînes de caractères et les formats utilisés dans l'application.
Voici l'écran de l'application. La caméra est toujours activée et l'image est projetée en continu sur l'objet TextureView, qui est un composant de l'interface graphique Android. Sous l'objet TextureView, les lettres bleues représentent la latitude et les lettres rouges représentent la longitude. Sous la latitude et la longitude, le temps écoulé depuis le lancement de l'application est affiché. Le temps écoulé est mis à jour toutes les 10 secondes, et lorsque le temps écoulé est mis à jour, on peut voir que les informations de position et les informations d'image ont été transmises.
Le déroulement après le lancement de l'application est le suivant. Une fois le processus d'initialisation des variables, etc. effectué, il est confirmé si l'autorité d'information de position et l'autorisation d'utilisation de la caméra sont autorisées. Si les deux autorisations sont autorisées, le flux allant de «Obtenir les informations de localisation du GPS» à «Post-image encodée» est bouclé toutes les 10 secondes.
Au début du développement, je pensais que la prise de vue automatique avec un appareil photo pouvait utiliser la fonction de classe Intent d'Android Studio pour appeler une véritable application d'appareil photo et prendre automatiquement des photos avec l'application appareil photo lancée. Cependant, il s'est avéré que l'application pour appareil photo authentique ne peut pas prendre de photos à moins que quelqu'un n'appuie sur l'obturateur et qu'elle ne peut pas prendre de photos automatiquement. Comment obtenir l'image dans le bus était le plus gros problème au début du développement.
L'image prise côté client de bus est codée avec Base64 et les données d'image converties en chaîne de caractères sont envoyées à localhost dans le test. Le côté récepteur a réussi à recevoir la chaîne de caractères des données d'image, mais n'a pas pu décoder la chaîne de caractères.
Je cherchais des informations sur la façon d'obtenir une image autre que de lancer une véritable application d'appareil photo et d'appuyer sur le déclencheur pour prendre une photo, mais je ne l'ai pas trouvée. J'ai donc pensé que je pourrais le trouver si je cherchais des informations en anglais, et lorsque je cherchais des informations en anglais, j'ai capturé ce qu'il y avait dans la caméra dans l'objet TextureView du composant GUI, et capturé l'image qui a été transférée à l'objet TextureView dans un certain laps de temps. J'ai trouvé une méthode appelée, et j'ai pu résoudre le problème avec cette méthode.
Si je l'ai décodé du côté Android avant d'envoyer la chaîne de caractères codés, il pourrait être décodé correctement, j'ai donc supposé que Post pourrait en être la cause. Après enquête, j'ai trouvé que le symbole + dans la chaîne de caractères publiée a été remplacé par un espace demi-largeur. J'ai envoyé les données à localhost dans le test. La ligne rouge ci-dessous est la pièce convertie en un espace demi-largeur.
Le problème a été résolu en créant un programme qui remplace l'espace demi-largeur inclus dans la chaîne de caractères reçue côté serveur par le symbole +.
Un environnement d'affichage des données JSON des informations de localisation et des informations d'image reçues par XAMPP a été construit sur localhost. Vous pouvez voir que les données peuvent être envoyées correctement.
Le client de bus dont je suis en charge est terminé, je prévois donc d'aider à l'analyse d'image qui analyse le degré de congestion des images transmises. Je voudrais ajuster le calendrier avec les membres, reprendre le développement et le mettre en service.