[解決済み] Bluetoothデバイスが接続されているかどうかをプログラムで判断するにはどうすればよいですか?
2023-03-18 18:34:29
質問
ペアリングされたデバイスのリストを取得する方法はわかりましたが、それらが接続されているかどうかを確認するにはどうしたらよいでしょうか。
携帯電話の Bluetooth デバイスのリストに表示され、接続状態が記載されているので、可能なのでしょう。
どのように解決するのですか?
AndroidManifestにBluetooth権限を追加してください。
<uses-permission android:name="android.permission.BLUETOOTH" />
次に、インテント・フィルタを使って
ACTION_ACL_CONNECTED
,
ACTION_ACL_DISCONNECT_REQUESTED
そして
ACTION_ACL_DISCONNECTED
の放送があります。
public void onCreate() {
...
IntentFilter filter = new IntentFilter();
filter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);
filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED);
filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);
this.registerReceiver(mReceiver, filter);
}
//The BroadcastReceiver that listens for bluetooth broadcasts
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
... //Device found
}
else if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) {
... //Device is now connected
}
else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
... //Done searching
}
else if (BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED.equals(action)) {
... //Device is about to disconnect
}
else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) {
... //Device has disconnected
}
}
};
ちょっとしたメモ。
- アプリケーション起動時に接続デバイスの一覧を取得する方法はありません。Bluetooth API では クエリ を聞くことはできませんが、その代わりに 変更 .
- 上記の問題に対する不安定な回避策は、すべての既知の/ペアリングされたデバイスのリストを取得することです... その後、各デバイスに接続してみてください (接続されているかどうかを判断するため)。
- あるいは、バックグラウンド サービスで Bluetooth API を監視し、デバイスの状態をディスクに書き込んで、アプリケーションが後で使用できるようにすることもできます。
関連
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] AndroidでラジオボタンにOnClickListenerを設定するには?
-
[解決済み] ArrayList<MyCustomClass>をJSONArrayに変換する。
-
[解決済み] Android端末がHDPI画面かMDPI画面かを確認する方法は?
-
[解決済み] react nativeアプリのバージョン番号を更新する方法
-
[解決済み] Gradleでビルドタイプを使用し、ContentProviderを使用する同じアプリを1つのデバイスで実行する。
-
[解決済み] TextView.setTextSizeの挙動がおかしい - テキストビューのテキストサイズを画面ごとに動的に設定する方法
-
[解決済み] サポートライブラリのアクションバーをPreferenceActivityに追加するには?
-
[解決済み] Android: xml リソースからの整数値
-
[解決済み] HttpURLConnectionを使ったPOSTによるファイル送信
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Nexus 4でUSBデバッグモードを見つける方法とオンにする方法
-
[解決済み] Android Debug Bridgeでアプリケーションのインストール時にINSTALL_FAILED_VERSION_DOWNGRADEを無視する方法はありますか?
-
[解決済み] プログラム的に電話をかけるには?
-
[解決済み] HttpPostによる画像送信
-
[解決済み] Androidのソースコードにある@hideの意味とは?
-
[解決済み] 複数のフィルタを持つBroadcastReceiverか、複数のBroadcastReceiverか?
-
[解決済み] Androidアプリケーションのヒープサイズを大きくするには?
-
[解決済み] Androidでツールバーの戻るボタンの色を変えるには?
-
[解決済み] 文字列リソースにHTML?
-
[解決済み] <string> XMLで改行やタブを作るには(eclipse/android)?