当前位置: 首页 > 知识库问答 >
问题:

调用蓝牙连接线程时不加载应用程序

申屠裕
2023-03-14

我正在制作一个Android应用程序,应该连接到Arduino HC-06模块。

我查看了Android文档,并试图让它与提供的代码一起工作。

然而,当我试图在我的三星A32 5G上运行代码时,所有视图都无法加载(空白屏幕),连接没有建立,我从logcat得到以下输出:

2021-11-04 10:25:32.798 15490-15546/com.example.carremote D/StrictMode: StrictMode policy violation: android.os.strictmode.LeakedClosableViolation: A resource was acquired at attached stack trace but never released.
@Override
public void run()
{
    try
    {
        while (true)
        {
            BS = BSS.accept();
            Log.println(Log.INFO,TAG, "[*] Looking for Connection");

            if(BS != null)
            {
                x = new EstablishedBTConnection(BS);
                Log.println(Log.INFO, TAG, "[*] Connection established!");
                x.manageConnection(1);
                BSS.close();
                break;
            }
        }
    } catch (IOException e)
    {
        e.printStackTrace();
        Log.println(Log.INFO, TAG, "[*] Connection failed!");
    }
}
BS = BSS.accept();

如果您需要任何其他代码片段,我可以提供他们,如果这个问题是重复的(我无法找到任何类似的问题),只要写一个注释与链接,我会删除它。

如有任何帮助,不胜感激,提前致谢!

共有1个答案

羊舌自强
2023-03-14

然而,当我试图在我的三星A32 5G上运行代码时,所有的视图都无法加载(空白屏幕),连接没有建立

提供的代码阻塞UI线程(或也称为主线程),直到建立蓝牙连接。因此,UI线程根本无法获得绘制UI的控件。在官方的doccumentation中查看关于Android UI线程的更多细节。文档中的规则之一:

不要阻塞UI线程

StrictMode policy violation: android.os.strictmode.LeakedClosableViolation: A resource was acquired at attached stack trace but never released.
BSS.close();
 类似资料:
  • 我正在开发一个应用程序来控制自定义设备。该定制设备具有双模蓝牙功能,可在双模功能下接受Android和iOS连接。 有了Android,我需要使用经典连接。我用几部智能手机和平板电脑做了一些测试。然而,对于一些平板电脑型号,我很难连接。 我有一台联发科的MT6572 SOC平板电脑,它有4.4.2Android系统。我也有一个三星Galaxy Tab E和展讯的SC8830 SOC,它有4.4.4

  • 我在Android和Arduino之间找到了蓝牙的源代码,我复制并粘贴了它。 它没有显示任何代码错误。 当我试图运行它时,它会因消息而中断 问题出在哪里,怎么办? 以下是源代码:

  • 这是我的第一个问题。我一路寻找,尝试了很多,但没有得到我想做的。问题是:我有一个应用程序使用SoundPool播放声音,仅此而已。但是要加载的东西很多(>50),一个一个加载需要时间。看一看; @Override公共视图onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){View V

  • 连接设备 接口说明 用于连接 扫描出来的蓝牙设备。 参数说明 字段 类型 必须? 说明 device RKBLEDevice 是 蓝牙设备 示例代码 Swift: RokidMobileSDK.binder.connect(device: RKBLEDevice) Objc: [RokidMobileSDK.binder connect:device]; 断开设备 接口说明 用于断开已经连接的

  • 连接蓝牙设备 接口说明 接口需传入蓝牙名称(蓝牙address重启后会变) 参数说明 字段 类型 必须? 说明 name String 是 设备名称 举个大栗子 RokidMobileSDK.binder.connectBT(name, new IBTConnectCallBack() { @Override public void onConnectSucceed(BTDevic

  • 我目前正在尝试开发一款软件,需要连接一个蓝牙“经典”设备和至少2-3个蓝牙低能耗设备。当然,与这些设备进行通信,因此仅能够配对设备还不够,还需要与它们进行连接和通信。 我使用Nexus 4(Android 4.3)作为连接到这些蓝牙和蓝牙LE设备的单元。 这是否可能,或者是否存在某种限制,即只能同时连接一种或另一种蓝牙设备?