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

相关问题