サーバ側の実装PCをサーバ側とします。頼りに調べたので不正確かもしれません。後の作りはほぼソケットを使ったサーバと同じです。引数のURLプロトコル:ベースのプロトコルを指定。RFCOMMの場合は「btspp:」。一覧表はどこに有るか不明。MACアドレス:サーバ側は「localhost」に固定。UUID:適当にツールで生成します。サービスをデバイスに登録して置くとクライアントがサービス一覧でUUIDを取得できます。Androidはペアリング済みのデバイスで無いとサービス(UUID)を取得できませんでした。登録しなくでも接続は可能な様子。一応、スレッドで同時接続可能にしてあるが実際にできるかは未確認です。UUIDは独自プロトコルのサービスの場合は固有に生成する。各種ツールで生成する。注:このまま使わないように。RFCOMMベースのサーバの開始。用なのでベースプロトコルによって変わる。ローカルデバイスにサービスを登録。クライアントからの接続待ち。接続されたたセッションを返す。並列にセッションを晴れるかは試していない。英小文字の受信データを英大文字にしてエコーバックする。}}クライアント側の実装Androidがクライアント側になります。今回はペアリング済みのデバイスとの接続なのでデバイスの検索はしません。検索はBluetooth実装の肝だったりするのですが以下の理由からはしょりました。アプリで実装しても設定画面のペアリング処理とほぼ同じになる。AndroidからPCを検索するにはPC側を一時的に公開設定にする必要があり接続毎は非実用的。PCを公開しっ放しはセキュリティ上の問題から不可。ManifestAndroid.xmlデフォルトにパーミッションを追加しただけです。android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>ADMINは今回は使っていませんがデバイスの検索で必要になるので入れといた方が良いです。呼んでいる所以外は普通のActivityです。ペアリング済みデバイスの一覧を表示してユーザに選ばせる。ペアリング済みデバイスをダイアログのリストに設定する。選択されたデバイスを通知する。}}BluetoothTask.javaBluetoothのメイン処理です。デバイス検索を行わないBluetoothの最小構成の手順はこれだけです。bluetoothSocket.close();ただし、connect()以降は通信が発生するためすべて非同期処理とする必要があります。Bluetoothの使用許可が無い場合にユーザに許可を求める処理ははしょってます。UUIDはサーバと一致している必要がある。独自サービスのUUIDはツールで生成する。注:このまま使わないように。Bluetoothの初期化。取れなければBT未実装デバイス。BTが設定で有効になっているかチェック。ユーザに許可を求める処理。ペアリング済みのデバイス一覧を返す。デバイス選択ダイアログ用。非同期で指定されたデバイスの接続を開始する。選択ダイアログから選択されたデバイスを設定される。非同期でBluetoothの接続を閉じる。非同期でメッセージの送受信を行う。Bluetoothと接続を開始する非同期タスク。時間がかかる場合があるのでProcessDialogを表示する。双方向のストリームを開くところまで。Bluetoothと接続を終了する非同期タスク。不要かも知れないが念のため非同期にしている。サーバとメッセージの送受信を行う非同期タスク。英小文字の文字列を送ると英大文字で戻ってくる。戻ってきた文字列を下段のTextViewに反映する。}}実行ペアリングまずPCとAndroidのペアリングが必要です。Bluetoothの設定で「このコンピュータの検出を許可する」に設定します。注:ペアリング終了後、必ず非公開に戻してください。AndroidのBluetoothの設定で「デバイス検出」をタップして暫く待つとPCが検出されるのでタップします。私のPCに設定した名前です。お使いのPCの名前が表示されます。PCに許可を求めるポップアップが出るのでクリックします。確認画面が出るので「次へ」をクリックします。Androidにダイアログが出ているので「ペアを設定する」をタップします。※パスキーは本来(4)の画面と一致します。キャプチャの都合です。PCとAndroidでそれぞれデバイスが認識されていればOKです。