У меня возникли проблемы с подключением Bluetooth для сканирования устройств с помощью Samsung Galaxy s5.BluetoothLescan() не находит никаких устройств
Я на Android 6.0 и настроить разрешения на мое приложение для сканирования, так как:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
// Android M Permission check
if (this.checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("This app needs location access");
builder.setMessage("Please grant location access so this app can devices.");
builder.setPositiveButton(android.R.string.ok, null);
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
public void onDismiss(DialogInterface dialog) {
requestPermissions(new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_COARSE_LOCATION);
}
});
builder.show();
}
Я предполагаю, что это работает правильно, потому что я получил всплывающий просить разрешения, которые я принял.
Моя функция сканирования:
private void scanLeDevice(final boolean enable) {
if (enable) {
// Stops scanning after a pre-defined scan period.
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mScanning = false;
Log.i("start" , "Stopping scan...");
mBluetoothLeScanner.stopScan(mScanCallback);
}
}, SCAN_PERIOD);
mScanning = true;
Log.i("start" , "Starting scan...");
mBluetoothLeScanner.startScan(mScanCallback);
} else {
mScanning = false;
mBluetoothLeScanner.stopScan(mScanCallback);
}
}
Теперь он останавливается и начинает сканирование правильно, так как Logcat дает мне журналы. Но это просто не находит никаких устройств, которые действительно странны, потому что я сижу рядом со своим ноутбуком и вторым телефоном с поддержкой Bluetooth.
Вот мой обратный вызов, кстати, если кому-то интересно:
Private ScanCallback mScanCallback = new ScanCallback() {
@Override
public void onScanResult(int callbackType, ScanResult result) {
System.out.println("BLE// onScanResult");
Log.i("callbackType", String.valueOf(callbackType));
Log.i("result", result.toString());
BluetoothDevice btDevice = result.getDevice();
}
@Override
public void onBatchScanResults(List<ScanResult> results) {
System.out.println("BLE// onBatchScanResults");
for (ScanResult sr : results) {
Log.i("ScanResult - Results", sr.toString());
}
}
@Override
public void onScanFailed(int errorCode) {
System.out.println("BLE// onScanFailed");
Log.e("Scan Failed", "Error Code: " + errorCode);
}
};
Теперь, как вы можете видеть, сканирование не подведет, так как Logcat не дает мне журнал о сканировании не удалось, но apperantly его также не найти любые устройства ...
Logcat:
06-07 17:13:02.622 16802-16802/com.example.joey.findmycar I/start: Starting scan...
06-07 17:13:02.802 16802-16802/com.example.joey.findmycar W/DisplayListCanvas: DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
06-07 17:13:02.882 16802-16802/com.example.joey.findmycar I/Timeline: Timeline: Activity_idle id: [email protected] time:699666571
06-07 17:13:14.632 16802-16802/com.example.joey.findmycar I/start: Stopping scan...
Я добавил необходимые разрешения на мой манифест:
Я пробовал почти все возможности, и я начинаю думать, что Bluetooth на моем телефоне может как-то сломаться, что странно, потому что я могу вручную обнаруживать и подключаться к устройствам в настройках Android.
так как вы попробовали на Android 6, вы пробовали давать разрешение местоположения, а также, как и от Android 6 года место должно быть включено в то время как просмотрит BLE устройства.Таким образом, вам также нужно запросить разрешение на выполнение для местоположения. – Gautam
Убедитесь, что службы определения местоположения также включены (Настройки> Местоположение> Вкл.), Как если бы это было отключено, вы не получите никаких результатов сканирования, даже если у вас есть разрешение на размещение ». – kcoppock
Похоже, у вас установлен тайм-аут примерно на 10 секунд, верно? Что произойдет, если вы просто отпустите его, пока не будет вызван один из обратных вызовов? –