1

Je suis en train d'analyser les périphériques BLE avecDispositif de balayage BLE ne fonctionne pas

mBluetoothAdapter.startLeScan(this); 

(je sais que son obsolète pour les nouvelles versions, mais juste pour voir cela fonctionne avec mon téléphone [4.4], je l'utilise). Il commence donc à scanner et continue sans commettre d'erreur mais aucun périphérique n'est détecté. L'événement OnLEScan est également déclenché mais le paramètre de l'appareil est null. Mon appareil LE est là et connecté. En recherchant sur google, j'ai trouvé ceci se produit si l'adaptateur Bluetooth n'a pas d'UUID. Comment définir l'UUID? Quand OnLeScan est-il appelé/déclenché? N 'y a-t-il pas une autre solution?

Mon code de rappel va ici

//BluetoothAdapte.LEScanCallBack on MainActivity 
@Override 
public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord){ 
    Log.i(TAG, "New LE Device: " + device.getName() + "@" + rssi); 
    if(Device_Name.equals(device.getName())){ 
      mDevices.put(device.hashCode(), device); 
      invalidateOptionsMenu(); 
     } 
} 

Répondre

0

Anroid 4.4 est pas compatible, je l'ai utilisé appareil Android 5.1 et cela a fonctionné comme un charme!

0
  • Utilisez ce code comme il vous donner un aperçu de toutes les données disponibles dans votre appareil BLE (affiche les données dans les journaux).
  • Les UUID sont essentiellement fournis par le fabricant de l'appareil et vous ne pouvez pas le configurer vous-même.
  • Par exemple: J'utilisais BLE Beacons et son fabricant m'a fourni l'API qui m'a aidé à récupérer son UUID.
  • Parfois, un identifiant spécial est disponible sur l'appareil lui-même (identifiant d'usine dans mon cas) qui peut vous aider à récupérer votre UUID et cela aussi sur le site Web ou l'API du fabricant.

    BluetoothAdapter bluetoothAdapter; 
    BluetoothLeScanner bluetoothLeScanner; 
    
    
    
    bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
    bluetoothLeScanner = bluetoothAdapter.getBluetoothLeScanner(); 
    
    
    
        bluetoothLeScanner.startScan(new ScanCallback() { 
         @Override 
         public void onScanResult(int callbackType, ScanResult result) { 
          super.onScanResult(callbackType, result); 
    
          String s = "\nRssi : "+result.getRssi()+"" + 
            "\nName (Get Device) : "+result.getDevice().getName()+"" + 
            "\nBytes"+result.getScanRecord().getBytes()+"" + 
            "\nGet Device : " + result.getDevice()+"" + 
            "\nAddress : "+result.getDevice().getAddress()+"" + 
            "\nService UUIds : "+result.getScanRecord().getServiceUuids().get(0)+"" +  //Unique 
            "\nName (Scan Record) : "+result.getScanRecord().getDeviceName()+"" + 
            "\nUuids device : "+result.getDevice().getUuids()+"" + 
            "\nDescribe contents : "+result.describeContents(); 
    
          //This will show you all the data in logs. 
          Log.e("All Data",s); 
    
    
    
         } 
    
         @Override 
         public void onBatchScanResults(List<ScanResult> results) { 
          super.onBatchScanResults(results); 
         } 
    
         @Override 
         public void onScanFailed(int errorCode) { 
          super.onScanFailed(errorCode); 
         } 
        }); 
    
    } 
    
+0

Merci beaucoup! semble être la bonne réponse seulement que j'obtiens l'erreur: la recherche de méthode a échoué pour le sélecteur "getBluetoothLeScanner" avec la signature "() Landroid/bluetooth/le/BluetoothLeScanner;" \t lorsque je fais cela -> mBluetoothLeScanner = mBluetoothAdapter.getBluetoothLeScanner(); – Samra

+0

Ma version de compilateur java est 1.7 (si c'est important) – Samra

+0

Vous pourriez obtenir cette erreur parce que ** BluetoothLeScanner ** a été ajouté dans API 21 (Android 5.0). Donc, essayez de définir 'minSdkVersion 21'. –