スマホでのBluetooth通信(接続)4
■受信の問題解決せず。
AndroidスマホからPCへデータ送信を行いたいけど、うまくいかない。PC側の問題ではないかと思いあれこれ調べたら、Tera Termで受け取るような記事もあったので、それを参考に設定。
まず、PCのBluetooth設定で受信用のポートを設定。下のCOM4。
次にTera Termを起動して、シリアルのポート設定を確認すると上で追加したポートが表示され、Bluetoothリンク経由の標準シリアル(COM4)との記載がある。これを指定すると、Tera Termが受信待ちのような状態となる。
これでPC側はBluetoothデバイスを経由しての通信待ち状態になっているはず。このときに、スマホから作成したアプリを起動してwrite メソッドを実行すれば、指定したバイトデータが送信されると思うけど、Tera Term上は何の反応もない。アプリ自体もエラーが出るわけでもない。
試しているサンプルは、もともとBluetooth Classicのサンプルで、今回使っている実機がPC側がBluetoothバージョン5.2(ファームウェアのLMPが11)、スマホ側が5.1(Xepria Ace III の仕様から)。バージョン4以降は、Bluetooth LEという通信モードもあるので、何か通信モードの設定が必要とか?そんなことはないと思うけど。
また、以前connectの部分でエラーが出た際に回避するやり方を取っていたので、そのあたりが原因?もう一度回避策の記事を読んでみると、ここのエラーは少し有名なものみたいで、別の対策もあった。こちらの方が変更が少ないようなのでこちらでも試してみた(下のコードでBluetoothSocket, bs_ をgetClass()とかでいじっている行)。ただ、どちらにしてもエラーが出るわけではない。
try {
bs_.connect();
} catch (IOException e) {
try {
Log.d("connect2_before", "qqq");
try {
bs_ = (BluetoothSocket) bd_.getClass().getMethod("createRfcommSocket", new Class[]{int.class}).invoke(bd_, 1);
} catch (Exception e3) {
Log.e("www", "aa", e3);
}
bs_.connect();
}
}
あと、Bluetoothのアクセス権限の周りに原因があるかと思い、サンプルコードにあった BLUETOOTH、BLUETOOTH_ADMIN も追加してみた。
と、いろいろと試しては見たけど、Tera Termに反応なし。
作成したアプリの問題というより、アンドロイドとPC間の設定周りの問題だと思うけど、はまってるところ。生成AIに質問してもヒントになりそうな回答も出ないしなー。