私のアプリケーションには Bluetooth 接続が必要でした。そして、最初のフェーズでは、標準のアクティビティ「Bluetooth デバイス ピッカー」を開いて、ユーザーが新しいデバイスをスキャンしたり、リストからデバイスを選択したりできるようにしようとしています。
問題は、Bluetooth デバイス ピッカーの実際の例を取得できないことです。タスクは簡単です。インテント「android.bluetooth.devicepicker.action.LAUNCH」でアクティビティを開始するには
また、デバイス ピッカーは問題なく開いています。
しかし、デバイス ピッカーには 4 つのエクストラが必要であり、以下にリストされている 2 つのエクストラの正確なパラメータを把握することができません。
.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」です
2 番目は、デバイスの選択後に行われるブロードキャストを受信する必要があるコンポーネントの名前です。ここでは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);
1 つのことは、これら 2 つの追加要素を提供しない場合、ブロードキャストイベントは正常に受信されるということです。しかし、そのコードは私の TAB でのみ実行されますが、携帯電話でも同じことがクラッシュします。したがって、これら 2 つのエクストラを提供することは必須だと思います。
前もって感謝します !