Android Bluetooth ACTION_DISCOVERY_FINISHED не работает - PullRequest
7 голосов
/ 23 октября 2011

Я написал свое первое приложение для Android, и все работает на самом деле ну, кроме ... в подпрограмме ниже, ACTION_DISCOVERY_FINISHED , кажется, никогда не вызывается (или трансляция или получена или что-то). Независимо от того, что блок кода в этом " еще, если " не работает.

Я тестировал только на моей Motorola Atrix , поэтому мне интересно, в этом ли проблема. Поскольку я тестирую функциональность Bluetooth, я не думаю, что смогу использовать эмулятор Android для эффективного тестирования.

Мысли

private BluetoothAdapter mBtAdapter;
mBtAdapter.startDiscovery();

private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();

        // When discovery finds a device
        if (BluetoothDevice.ACTION_FOUND.equals(action)) {
        //do something
        }

        else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
            //do something else
        }
    }
}

Ответы [ 2 ]

19 голосов
/ 23 октября 2011

2 возможных решения:

  1. Вместо создания анонимного получателя создайте подкласс BroadcastReceiver с той же самой реализацией, а затем объявите его в манифесте своего проекта (не забудьте объявить, что ваш получатель получает эти действия, которые вы хотите).

  2. Динамически зарегистрируйте его в своей деятельности / услуге следующим образом:

    IntentFilter filter = new IntentFilter();
    filter.addAction(BluetoothDevice.ACTION_FOUND);
    filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
    this.registerReceiver(mReceiver, filter);
    

Я не уверен, нужно ли вам отменять регистрацию при регистрации в активности / службе (я знаю, что вам нужно при регистрации из контекста приложения), так что проверьте это.

0 голосов
/ 26 июня 2012

Вам необходимо добавить строку

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

в манифест

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