2013-05-10 4 views
0

En exécutant le code ci-dessous, ma tablette Galaxy (SCH-I905 - Android 4.0.4) détecte correctement trois services Bluetooth sur un PC. Exécution du même code sur un Galaxy Nexus - Android 4.2.2) trouve seulement l'un des services. Toutes les idées sont appréciées:Android Bluetooth Service de découverte donne des résultats différents sur deux appareils différents - est-ce la version Android?

private final BroadcastReceiver ServiceReceiver = new BroadcastReceiver() 
{ 
    public void onReceive(Context context, Intent intent) 
    { 
     String action = intent.getAction(); 
     if (BluetoothDevice.ACTION_UUID.equals(action)) 
     { 
      BluetoothDevice device = intent.getParcelableExtra("android.bluetooth.device.extra.DEVICE"); 
      Parcelable[] uuidExtra = intent.getParcelableArrayExtra("android.bluetooth.device.extra.UUID"); 

      for(int i = 0; i < uuidExtra.length; i++) 
      { 
       Toast.makeText(this, device.getName() + ": " + uuidExtra[i].toString(), Toast.LENGTH_LONG).show(); 
      } 
     } 
    } 

};

Dans le débogueur Eclipse, le tableau suivant montre trois occurrences [00001000-0000-1000-8000-00805f9b34fb, 00001115-0000-1000-8000-00805f9b34fb, 00001202-0000-1000-8000-00805f9b34fb] pour la tablette, mais seulement [00001115-0000-1000-8000-00805f9b34fb] pour le Nexus. Je ne sais pas s'il s'agit d'un problème de version ou de matériel. Merci, John

Une dernière note - J'utilise ... BluetoothDevice device = intention.getParcelableExtra (BluetoothDevice.EXTRA_DEVICE); device.fetchUuidsWithSdp();

Répondre

1

John

Cela semble être un problème de version Android. J'ai eu exactement les mêmes résultats en utilisant un désir htc (Android 2.3) qui a travaillé avec un code similaire au vôtre et une tablette lenovo (Android 4.2.2) qui ne se connectera jamais, peu importe ce que je fais. À la lecture d'un million de messages ici est ce que je l'ai découvert à ce jour:

1) Assurez-vous que vous annulez la découverte sur votre carte avant d'essayer de se connecter 2) Essayez d'utiliser la réflexion, certaines personnes affirment cela a fonctionné pour les 3 Essayez donc quelque chose comme ça

Method m = device.getClass().getMethod("createInsecureRfcommSocket", new Class[] {int.class}); 
socket = (BluetoothSocket) m.invoke(device, 1); 
bluetoothAdapter.cancelDiscovery(); 
socket.connect(); 
Questions connexes