gpt4 book ai didi

java - 应用程序崩溃后,Android 蓝牙连接不会关闭

转载 作者:太空狗 更新时间:2023-10-29 12:49:14 24 4
gpt4 key购买 nike

我正在使用 SPP 配置文件连接到我的设备:

    Set<BluetoothDevice> devices = ba.getBondedDevices();
for(BluetoothDevice bd : devices)
{
String name = bd.getName();
if(name.equals("CELLMETER"))
{
try
{
BluetoothSocket bs = bd.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
bs.connect();
} catch (IOException e)
{
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
}

一切似乎都很好,我创建了一个函数,我正在关闭输入输出缓冲区并关闭套接字。但是,当应用程序崩溃或我在断点到达时停止应用程序时,套接字不会关闭,即使在我手动终止进程之后,它也无法用于来自新应用程序实例的新连接。

我做错了什么?对于每次崩溃/调试操作,我都必须重启手机 :(

它仅在 Android 2.3.5 (Samsung 5830i) 和 Android 4.0.4 (Freelander P10) 上出现。在我的 Android 4.2.1 (Galaxy Nexus) 上一切正常,应用程序崩溃后连接自动关闭。 (好像是因为有新的蓝牙栈)

最佳答案

我可以看到 2 个选项来解决这个问题:1- 在您的应用程序中添加一个 UncaughtExceptionHandler,最好在应用程序派生类中:

        mUEHandler = new Thread.UncaughtExceptionHandler()
{
@Override
public void uncaughtException(Thread t, Throwable e)
{
// Close any opened sockets here

defaultUEH.uncaughtException(t, e);
}
};

Thread.setDefaultUncaughtExceptionHandler(mUEHandler);

但这只能解决应用程序崩溃问题。如果用户关闭该应用程序,则根本无法进入该应用程序。

2- 存储一些套接字标识,允许您在应用重新启动时关闭它。

它并不完美,但可以解决您的问题。

关于java - 应用程序崩溃后,Android 蓝牙连接不会关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14280623/

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