0

Я делаю проект для обнаружения устройства BLE, окружающего вас. Но, однако, устройство не может найти устройство BLE рядом. Устройство поддерживает BLE, но мое кодирование не может обнаружить устройство BLE. Пожалуйста, помогите мне, если какая-либо ошибка или что-то не хватает.Не удается найти устройство Bluetooth LE

public class MainActivity extends AppCompatActivity { 

BluetoothLeScanner leScanner; 
ArrayList<ScanFilter> scanFilters; 
ScanSettings settings; 
ProgressDialog dialog; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button scanStartbtn= (Button) findViewById(R.id.startscanbtn); 
    final BluetoothAdapter adapter=BluetoothAdapter.getDefaultAdapter(); 

    settings=new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build(); 
    scanFilters=new ArrayList<ScanFilter>(); 
    scanStartbtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      leScanner=adapter.getBluetoothLeScanner(); 
      leScanner.startScan(scanFilters,settings,mScanCallback); 
      Toast.makeText(MainActivity.this, "Scanning started", Toast.LENGTH_LONG).show(); 

     } 
    }); 

} 



ScanCallback mScanCallback=new ScanCallback() { 
    @Override 
    public void onScanResult(int callbackType, ScanResult result) { 
     super.onScanResult(callbackType, result); 
     Toast.makeText(MainActivity.this, "Hey I found BLE device+onScanResult" + result.toString(), Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    public void onBatchScanResults(List<ScanResult> results) { 
     super.onBatchScanResults(results); 
     dialog.dismiss(); 
     for(ScanResult result:results) { 
      Toast.makeText(MainActivity.this, "Hey I found BLE device" + result.toString(), Toast.LENGTH_LONG).show(); 
     } 
    } 

    @Override 
    public void onScanFailed(int errorCode) { 
     super.onScanFailed(errorCode); 

     if(errorCode==1) { 
      Toast.makeText(MainActivity.this, "Scan is already started" + errorCode, Toast.LENGTH_LONG).show(); 
     }else if(errorCode==3) 
     { 
      Toast.makeText(MainActivity.this, "Scan is interrupted due to internal error" + errorCode, Toast.LENGTH_LONG).show(); 
     }else{ 
      Toast.makeText(MainActivity.this, "Unexpected error" + errorCode, Toast.LENGTH_LONG).show(); 
     } 
    } 
}; 
} 

спасибо.

+0

adapter.startScan() –

+0

Я использовал BluetoothLeScanner объект leScanner.startScan(). который приходит на api 21 и его не отстает. – user3549768

+0

Зачем вам BluetoothLeScanner? –

ответ

0

Я думаю, что код ниже достаточно:

final BluetoothAdapter adapter=BluetoothAdapter.getDefaultAdapter(); 
     adapter.startLeScan(new BluetoothAdapter.LeScanCallback() { 
      @Override 
      public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) { 

      } 
     }) 
Смежные вопросы