Android用のアプリケーションを開発しています。このアプリは、Bluetooth (BT) デバイスと通信する必要があります (いくつかのバイトを送信します)。デバイス (Samsung Galaxy mini) でのこのアプリのデバッグ/実行に問題があります。BT ソケットを作成してデバッグを停止すると、電話がフリーズし、バッテリーを取り出して再起動する必要があります。このアプリを(Eclipseから)実行する場合、すべて問題ありませんが、再度実行しようとすると、電話がフリーズし、アプリがインストールされません。2回目の実行前にこのアプリを手動でアンインストールしようとすると、電話が再びフリーズします。問題のあるコードは次のとおりです。
private final BluetoothDevice mmDevice;
private UUID uuid;
public ConnectionThread(BluetoothDevice device) {
Log.d(TAG, "create ConnectionThread");
uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
BluetoothSocket tmp = null;
mmDevice = device;
try {
tmp = mmDevice.createRfcommSocketToServiceRecord(uuid);
} catch (IOException e) { }
mmSocket = tmp;
socketConnected = true;
}
これはスレッドのコンストラクタです。行にコメントすると
tmp = mmDevice.createRfcommSocketToServiceRecord(uuid);
電話はフリーズしないので、ソケットの作成に問題があります(接続していません)。デバッグや実行のたびに電話を再起動するのはかなり面倒で、まだ多くの作業を行う必要があります。
このアプリを電話から (Eclipse から切断して) 実行すると、問題なく動作します。どこに問題があるのか、またはそれを修正する方法はありますか? ありがとうございました。