gpt4 book ai didi

java - 为什么我会失去蓝牙客户端/服务器连接?

转载 作者:太空狗 更新时间:2023-10-29 16:24:18 27 4
gpt4 key购买 nike

我正在尝试通过蓝牙从桌面应用程序(用 Java 编写)连接到 Android 应用程序。
对于桌面应用程序,我使用的是 BlueCove API。
当我启动服务器(桌面应用程序)并启动 Android 应用程序时,连接正常。 (即客户端发送“Hello World”,服务器将其打印在控制台中)。但是当我离开应用程序(通过按返回或主页按钮)并返回时,套接字连接似乎丢失了。

如何检查蓝牙套接字是否已连接?
我想检查套接字的连接是否再次连接。

我应该在onPauseonResume 方法中写什么(如果是这样的话)?
我想在 onDestroy 方法中我应该关闭套接字。

这里是客户端服务器的源代码:
Server
Client

我还尝试使用 IntentFilter 来检查连接状态,但没有用。

@Override
public void onCreate(Bundle savedInstanceState) {
// .....

IntentFilter filter1 = new IntentFilter(BluetoothDevice.ACTION_ACL_CONNECTED);
IntentFilter filter2 = new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED);
IntentFilter filter3 = new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECTED);
this.registerReceiver(mReceiver, filter1);
this.registerReceiver(mReceiver, filter2);
this.registerReceiver(mReceiver, filter3);

}

//The BroadcastReceiver that listens for bluetooth broadcasts
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

if (BluetoothDevice.ACTION_FOUND.equals(action)) {
//Device found
Toast.makeText(BluetoothClient.this, "Device not found", 2).show();
}
else if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) {
//Device is now connected
Toast.makeText(BluetoothClient.this, "Device connected", 2).show();
}
else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
//Done searching
Toast.makeText(BluetoothClient.this, "Done searching", 2).show();
}
else if (BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED.equals(action)) {
//Device is about to disconnect
Toast.makeText(BluetoothClient.this, "Device about to connect", 2).show();
}
else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) {
//Device has disconnected
Toast.makeText(BluetoothClient.this, "Device disconnected", 2).show();
}
}
};

最佳答案

Server
Client

我已经修改了 2 个源代码文件。
现在它应该工作正常。在进入移动应用程序之前是否未打开 BT 存在一些小错误(一段时间内卡住太多),对于那些想要使用此客户端/服务器的人,您应该看看 onPause() , onResume(), onDestroy() 函数。

问题是我没有正确使用套接字。

希望对想用BT实现这样的应用的人有用。

关于java - 为什么我会失去蓝牙客户端/服务器连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6062566/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com