关于Android开发手机蓝牙连接设备的,连接时出了问题可能是客户端线程socket.connect()的问题
服务器好像没问题,但是客户端在连接后页面就直接没了//作为客户端线程代码privateclassConnectThreadextendsThread{privatefin...
服务器好像没问题,但是客户端在连接后页面就直接没了
//作为客户端线程代码
private class ConnectThread extends Thread{
private final BluetoothDevice device;
public ConnectThread(BluetoothDevice device){
this.device=device;
BluetoothSocket tmp=null;
try {
tmp =device.createInsecureRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
} catch (IOException e) {
e.printStackTrace();
}
mSocket=tmp;
}
public void run(){
bluetoothAdapter.cancelDiscovery();
try {
Message msg = new Message();
msg.obj = "请稍候,正在连接服务器:";
msg.what = STATUS_CONNECT;
handler.sendMessage(msg);
mSocket.connect();
msg.obj = "连接成功:";
msg.what = STATUS_CONNECT;
handler.sendMessage(msg);
connectedThread=new ConnectedThread(mSocket);
connectedThread.start();
} catch (IOException e) {
Message msg = new Message();
msg.obj = "连接服务端异常!断开连接重新试一试。";
msg.what = STATUS_CONNECT;
handler.sendMessage(msg);
}return;
}
public void cancel(){
try {
mSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
调试报错截图: 展开
//作为客户端线程代码
private class ConnectThread extends Thread{
private final BluetoothDevice device;
public ConnectThread(BluetoothDevice device){
this.device=device;
BluetoothSocket tmp=null;
try {
tmp =device.createInsecureRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
} catch (IOException e) {
e.printStackTrace();
}
mSocket=tmp;
}
public void run(){
bluetoothAdapter.cancelDiscovery();
try {
Message msg = new Message();
msg.obj = "请稍候,正在连接服务器:";
msg.what = STATUS_CONNECT;
handler.sendMessage(msg);
mSocket.connect();
msg.obj = "连接成功:";
msg.what = STATUS_CONNECT;
handler.sendMessage(msg);
connectedThread=new ConnectedThread(mSocket);
connectedThread.start();
} catch (IOException e) {
Message msg = new Message();
msg.obj = "连接服务端异常!断开连接重新试一试。";
msg.what = STATUS_CONNECT;
handler.sendMessage(msg);
}return;
}
public void cancel(){
try {
mSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
调试报错截图: 展开
1个回答
2016-12-14
展开全部
在sendMessage()之后,为什么又重新创建线程了?
在seneMessage()之后,直接进行后续的收发处理就可以了。
没有进行主动断开操作之前,连接一般都是维持着的,不会断开。
如果你重新创建线程,而线程里面又向服务器发起新的连接了,所以服务器接收新连接后,很可能会切断旧的连接。
不要把一个消息重复发送多次(发送队列里面已经存在了此消息)。如果想多次发送同样的内容,就创建内容一样的多个消息进行发送。
在seneMessage()之后,直接进行后续的收发处理就可以了。
没有进行主动断开操作之前,连接一般都是维持着的,不会断开。
如果你重新创建线程,而线程里面又向服务器发起新的连接了,所以服务器接收新连接后,很可能会切断旧的连接。
不要把一个消息重复发送多次(发送队列里面已经存在了此消息)。如果想多次发送同样的内容,就创建内容一样的多个消息进行发送。
深圳市容大彩晶科技有限公司
2024-11-20 广告
2024-11-20 广告
作为深圳市容大彩晶科技有限公司的工作人员,可以明确告知您,**部分广告机支持网络连接和Wi-Fi功能**。具体是否支持,需根据产品型号和配置来确定。公司广告机产品功能丰富,若您有购买意向或需了解更多产品详情,请咨询我们的销售人员。
广告机代...
点击进入详情页
本回答由深圳市容大彩晶科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询