我正在开发Android应用程序。这个应用程序应该与蓝牙(BT)设备通信(发送一些字节)。我在我的设备(Samsung Galaxy mini)上调试/运行此应用时遇到问题。当我创建BT套接字并停止调试时,电话会冻结,我必须通过取出电池重新启动它。在运行这个应用程序的情况下(从Eclipse)一切正常,但是当我尝试再次运行它时,电话冻结和应用程序未安装。如果我在第二次运行之前尝试卸载此应用程序,手机会再次冻结。这是一个有问题的代码:蓝牙插槽冻结手机
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断开连接),它没有任何问题。任何想法可能是一个问题或如何解决它?谢谢。
听起来像一个固件错误,不是吗? – 2013-03-13 11:15:13
@CodePainters:固件或IDE错误。我发现了一个相同的主题:http://stackoverflow.com/questions/4408287/android-bluetooth-socket-freeze-application。所以如果我在onDestroy回调中关闭BT,一切都可以。 – DanielH 2013-03-13 12:51:28
IDE?不太可能。而且Android无论如何都充满了bug ... – 2013-03-13 12:54:50