Использование средства выбора устройства Android Bluetooth

Мое приложение требовало подключения Bluetooth. И на первом этапе я пытаюсь открыть стандартную активность "Выбор устройства Bluetooth", чтобы помочь пользователю найти новое устройство или выбрать устройство из списка.

Проблема в том, что я не могу получить рабочий пример для выбора устройства Bluetooth. Задача проста. Чтобы начать действие с намерением "android.bluetooth.devicepicker.action.LAUNCH"

И средство выбора устройств открывается без проблем.

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

.putExtra("android.bluetooth.devicepicker.extra.LAUNCH_PACKAGE","com.extreme.controlcenter"

.putExtra("android.bluetooth.devicepicker.extra.DEVICE_PICKER_LAUNCH_CLASS","com.extreme.controlcenter.WelcomeActivity")

Я думал, что параметры должны быть такими

*"android.bluetooth.devicepicker.extra.LAUNCH_PACKAGE"*

должно иметь имя моего пакета, поэтому я передал только это. Это "com.extreme.controlcenter"

Вторым должно быть имя компонента, который должен получать широковещательную рассылку, выполняемую после выбора устройства. Здесь я попытался указать имя класса с функцией onReceive().

Но проблема в том, что функция onReceive() НЕ вызывается, когда устройство выбирается в средстве выбора устройств!

public void onReceive(Context context, Intent intent) {

            String action = intent.getAction();

            //Device Selected on Device Picker
            if("android.bluetooth.devicepicker.action.DEVICE_SELECTED".equals(action)) {
                //context.unregisterReceiver(this);

                BluetoothDevice device = (BluetoothDevice) intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

                Toast.makeText(context, "device" + device.getAddress(), Toast.LENGTH_SHORT).show();

                String MAC = device.getAddress();
                //Log.d("my", MAC);

                Intent intent2 = new Intent(WelcomeActivity.this, ControlActivity.class);
                intent2.putExtra(EXTRA_DEVICE_ADDRESS, MAC);
                startActivity(intent2);
            }


        };

Я создал фильтр намерений и зарегистрировал получение в onCreate() основного действия.

 // Register the BroadcastReceiver
    IntentFilter filter = new IntentFilter("android.bluetooth.devicepicker.action.DEVICE_SELECTED");


    registerReceiver(mReceiver, filter); 

Во-первых, если я не предоставлю эти два дополнения, событие Broadcast будет получено успешно. Но этот код работает только на моем TAB, но на сотовом телефоне происходит сбой. Поэтому я думаю, что предоставление этих двух дополнений является обязательным.

Заранее спасибо !


person Avinash Gupta    schedule 15.10.2012    source источник


Ответы (1)


«com.extreme.controlcenter.WelcomeActivity» в ваших EXTRA должен быть классом BroadcastReceiver, таким как MyBroadcastReceiver.class.getName(). У меня также это объявлено в манифесте внутри тегов

person PVS    schedule 30.10.2012