Сканирование BLE не работает - PullRequest
0 голосов
/ 12 июня 2018

Я новичок, работающий над BLE-сканером, используя образец кода Google: https://github.com/googlesamples/android-BluetoothLeGatt

В настоящее время код не может обнаружить ни одно устройство. В этом посте говорится, что это из-за того, что службы определения местоположения отключены или их явно не запрашивают во время выполнения.Я уже включил необходимые разрешения в свой манифест.

Я добавил несколько строк кода, которые, я думаю, должны работать.

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getActionBar().setTitle(R.string.title_devices);
        mHandler = new Handler();


        if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
            Toast.makeText(this, R.string.ble_not_supported, Toast.LENGTH_SHORT).show();
            finish();
        }

        // Initializes a Bluetooth adapter.  For API level 18 and above, get a reference to
        // BluetoothAdapter through BluetoothManager.
        final BluetoothManager bluetoothManager =
                (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
        mBluetoothAdapter = bluetoothManager.getAdapter();

        // Checks if Bluetooth is supported on the device.
        if (mBluetoothAdapter == null) {
            Toast.makeText(this, R.string.error_bluetooth_not_supported, Toast.LENGTH_SHORT).show();
            finish();
            return;
        }



    // Quick permission check
        int permissionCheck = this.checkSelfPermission("Manifest.permission.ACCESS_FINE_LOCATION");
        permissionCheck += this.checkSelfPermission("Manifest.permission.ACCESS_COARSE_LOCATION");
        if (permissionCheck != 0) {

            this.requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 1001); //Any number
        }

    }

Я думаю, что добавленная мной быстрая проверка разрешений должна сработать, но, похоже, приложение не обнаруживает никаких устройств.

1 Ответ

0 голосов
/ 12 июня 2018

Я встречал тот же случай, с которым вы сталкиваетесь.Если вы используете Android 6.0 или выше, чем.Вы должны запросить разрешение на местоположение во время выполнения.После получения адаптера Bluetooth, давайте вставим строку кода, как показано ниже, чтобы запросить разрешение на местоположение.Когда ваше приложение запустится, появится диалоговое окно с вопросом, согласны ли вы поделиться своим местоположением.

ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 1001);

Дайте ответ на мой ответ, если это неправильный ответ на ваш вопрос, я немедленно удалю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...