Из-за того, что у меня были проблемы с Bluetooth на Android Lollipop, я попытался изменить метод сканирования.
Итак, я попытался использовать новый пакет. В предыдущей версии я вызвал startScan (mLeScanCallback), и все работает, но теперь, когда я вызываю startScan (mScanCallback), у меня есть ошибка: «D/BluetoothLeScanner: не удалось найти обратную оболочку».
Не найдено ни одного устройства, и ListAdapter, который я использую для отображения устройств, пуст.BluetoothLeScanner не смог найти обратную оболочку
Строки комментариев - это предыдущий код (и он сработал!). Это мой код:
public class Selection extends ListActivity implements ServiceConnection {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mHandler = new Handler();
// Initializes a Bluetooth adapter through BluetoothManager.
final BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
mBluetoothAdapter = bluetoothManager.getAdapter();
getApplicationContext().bindService(new Intent(this, MetaWearBleService.class), this, Context.BIND_AUTO_CREATE);
}
private void scanLeDevice(final boolean enable) {
final BluetoothLeScanner bluetoothLeScanner = mBluetoothAdapter.getBluetoothLeScanner();
if (enable) {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
//mBluetoothAdapter.stopLeScan(mLeScanCallback);
bluetoothLeScanner.stopScan(mScanCallback);
setListAdapter(listAdapter);
}
}, SCAN_PERIOD);
//mBluetoothAdapter.startLeScan(mLeScanCallback);
bluetoothLeScanner.startScan(mScanCallback);
} else {
//mBluetoothAdapter.stopLeScan(mLeScanCallback);
bluetoothLeScanner.stopScan(mScanCallback);
setListAdapter(listAdapter);
}
}
private ScanCallback mScanCallback =
new ScanCallback() {
public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {
runOnUiThread(new Runnable() {
@Override
public void run() {
listAdapter.addDevice(device);
}
});
}
};
Вместо ListAdapter расширяет BaseAdapter и использовать ViewHolder. Если это необходимо, я публикую его.
И что это значит «D/BluetoothLeScanner: не удалось найти обратную оболочку»? Что это неправильно?
В противном случае, как я не могу решить проблему сканирования с помощью Android Lollipop? В Lollipop у меня часто возникают ошибки в отношении BluetoothGatt. Я не знаю, чтобы его минимизировать (или решить).
Благодаря