7
votes

Application utilisant le profil SPP Bluetooth ne fonctionne pas après la mise à jour de Android 4.2 à Android 4.3

J'ai écrit une application simple basée sur Bluetoothchat. Je communique entre le téléphone et un module Bluetooth à l'aide de profil SPP. Le téléphone initie toujours la communication. L'application a fonctionné à PEFectly sur Android 4.2, en utilisant Nexus 3 et Samsung Galaxy 3. Après la mise à jour de Android 4.3, l'application ne fonctionne plus. Je connecte tout le temps, je peux envoyer une externe et recevoir les bonnes données, mais après la 1ère commande de sortie, l'application toujours déconnectée après environ 6 secondes. Comme indiqué dans le LOGCAT ci-dessous, il apparaît qu'il existe un problème de minuterie sur l'intrustream. XXX

Qu'est-ce que DM_PM_TIMER? J'ai essayé de connecter une manière différente avec une rfcom sécurisée et insécurité. Je sais que la chat Bluetooth n'est pas optimisée pour recevoir le tampon. Je l'ai donc modifié, pas d'effet. J'ai utilisé la commande de chasse-chasse pour la sortie extérieure, mais aucun effet non plus. xxx

aucune idée est qu'il y a une solution de contournement? Ou une erreur évidente dans mon code

merci xxx


1 commentaires

pouvez-vous trouver une solution la même chose que je suis confrontée


3 Réponses :


3
votes

J'ai trouvé un travail autour. Il est déconnecté s'il n'y a pas d'activité de streaming pendant quelques secondes. J'ai réussi à avoir des sorties ou des entrées en streaming plusieurs fois par seconde, et il ne se déconnecte jamais maintenant.


0 commentaires

11
votes

Nous pouvons confirmer la déconnexion Bluetooth après 6 secondes lors de la communication de notre application Nexus 4 à un ECG Bluetooth externe (dispositif médical) après la mise à niveau de Android 4.2 à 4.3. Cela se produit spécifiquement lors d'une mesure ECG avec de nombreuses données entrantes (d'ECG à l'application Android), mais pas de données sortantes. La communication Bluetooth "normale" avec certaines données entrantes et sortantes de temps en temps ne semble pas être affectée.

Après 6 secondes, nous voyons les mêmes messages journaux adb signalés par JJM P>

dm_pm_timer expires
dm_pm_timer expires 0
proc dm_pm_timer expires
btm_sec_disconnected - Clearing Pending flag


1 commentaires

Très bizarre mais nous avons commencé à avoir ce problème sur le passage à l'Android 8 ...



1
votes

J'ai trouvé sur Stackoverflow une réponse qui m'a aidé à résoudre le problème. Je suppose que cela a quelque chose à voir avec l'intrustream et la sortie ne sont pas fermés correctement et annulés, ainsi que la prise Bluetooth. Après avoir utilisé cette fonction:

 * Reset input and output streams and make sure socket is closed. 
     * This method will be used during shutdown() to ensure that the connection is properly closed during a shutdown.  
     * @return
     */
    private void resetConnection() {
        setState(STATE_NONE);
        Log.d(TAG, "reset connection");
        if (mmInStream != null) {
            try {
                mmInStream.close();
            } catch (Exception e) {
                Log.d(TAG,"exception in closing inputstream - " + e.getMessage());
            }
            mmInStream = null;
        }
        if (mmOutStream != null) {
            try {
                mmOutStream.close();
            } catch (Exception e) {
                Log.d(TAG,"exception in closing outputstream - " + e.getMessage());
            }
            mmOutStream = null;
        }
        if (mmSocket != null) {
            try {
                mmSocket.close();
            } catch (Exception e) {
                Log.d(TAG,"exception in closing socket - " + e.getMessage());
            }
            mmSocket = null;
        }
    }


0 commentaires