Мое приложение требовало подключения 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, но на сотовом телефоне происходит сбой. Поэтому я думаю, что предоставление этих двух дополнений является обязательным.
Заранее спасибо !