2

我正在使用BLE startLescan,但它現在已經過時。現在我改變了我的API level to 23 (from 20)並使用BluetoothLeScanner來達到此目的。 我啓動掃描功能:NoSuchMethod異常

public void startScan(){ 
    mBluetoothLeScanner = mBluetoothAdapter.getBluetoothLeScanner(); 

    mBluetoothLeScanner.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); 
      } 
     }); 

當我到了第一線,

java的拋出一個nosuchmethod異常:

方法查找失敗選擇 「getBluetoothLeScanner」 與 簽名「( )Landroid /藍牙/ LE/BluetoothLeScanner;」

+0

向我們展示了'startScan'方法上面的代碼。如何初始化'mBluetoothAdapter'?/ –

回答

0

如果您的設備具有API版本20或降低將無法使用新的API。因此,您需要實現兩種掃描方法,並根據設備的os版本檢查應該使用哪個版本。 (Kitkat將不支持新的掃描API!)

1

這種情況下需要BluetoothAdapter的一個實例。做這樣的事情:

Context mContext = getBaseContext(); 
BluetoothAdapter mBluetoothAdapter = (BluetoothManager) mContext.getSystemService(Context.BLUETOOTH_SERVICE).getAdapter(); 
BluetoothLeScanner mBluetoothLeScanner = mBluetoothAdapter.getBluetoothLeScanner(); 

mBluetoothLeScanner.startScan(new ScanCallback() {…. 

} 
+0

藍牙適配器在那裏,我在開頭初始化它:BluetoothManager manager =(BluetoothManager)getSystemService(BLUETOOTH_SERVICE); \t \t \t \t \t \t mBluetoothAdapter = manager.getAdapter(); – Samra

相關問題