2017-09-12 2 views
0

J'ai développé un service de premier plan qui devrait gérer une communication Bluetooth Low Energy entre un appareil HW spécifique.Android Communication entre le service et l'activité d'autres projets

Ce service a une activité dans laquelle vous pouvez configurer certains paramètres pour gérer le service, de toute façon il fonctionne avec l'activité tué aussi.

Le service contient également un BootReceiver et il est démarré avec le démarrage du périphérique.

Maintenant, mon but est de créer un autre projets avec un ou plusieurs activityes, celles-on à communiquer avec les données de service et excange.

J'ai cherché un aswer sur le net et ce sont les résultats:

  • Bind et l'interface

Il semble que celui-ci est le correct, mais il est beaucoup plus compliqué et cela implique beaucoup de code pour un peu de données.

  • Diffusion récepteur

récepteur de diffusion est facile à mettre en œuvre, mais si je dois lire des données de chaque bluetooth 100ms par exemple? Je ne pense pas que ce soit la bonne façon.

Quelle est la bonne façon d'implémenter une telle communication?

+0

Essayez avec 'aidl' https://developer.android.com/guide/components/aidl.html –

+0

Proposez-vous d'utiliser aidl pour ce type de communication? Je vais le lire quand même, merci –

+0

Oui, quand vous devez accéder au service d'une autre application –

Répondre

1

Dans Android, nous avons plusieurs façons de partager des données entre l'application, il est dépend - combien de données vous souhaitez partager entre les applications, les problèmes de cyber, les problèmes de consommation de la batterie et timing:

1) Vous pouvez Utilisez AIDEL dans les deux applications afin de partager des données, s'il vous plaît être conscient que vous n'êtes pas en mesure d'envoyer des objets, vous devez convertir les données en parcelable ou byte-array. avantages - de bonnes solutions pour les données courtes. 2) SharedPreferences et utilisez le même android: sharedUserId = "android.uid.share" sur les deux applications - non recommandé en raison d'une consommation de batterie et le problème de synchronisation, idéal pour partager des données volumineuses.

3) Vous pouvez utiliser le modèle client/serveur et ouvrir une socket unix sur les applications bot - avantages - fiable et peut être sécurisé, par contre - durée de vie de la batterie courte.

4) Récepteur de diffusion - [non recommandé] en raison d'un problème de synchronisation potentiel.

5) en utilisant le fichier partagé à la carte SD - non recommandé.

+0

Dans mon cas, je dois envoyer de petites données, pas d'objets, juste booléen et entier; mais vraiment rapide et requently. Reconnaissez-vous Aidl? –

+0

Oui, dans ce cas, aidl est le meilleur moyen de communiquer entre les applications. –