【问题标题】:Can't accept an incoming bluetooth connection unless device is discoverable除非设备是可发现的,否则无法接受传入的蓝牙连接
【发布时间】:2013-05-20 14:53:03
【问题描述】:

我已经被这个弄得筋疲力尽了。

我有一个典型的 BluetoothServerSocket,我正在尝试连接 A&D 体重秤 (UC-321PBT)。他们公司的应用程序 (myFitnessCompanion) 似乎没有很多连接问题,但只有当我的手机“可发现”时,秤才会连接到我的应用程序。请注意,这是在我与体重秤配对之后。

这里真正需要的唯一关键代码是监听器的打开方式,除此之外它是典型的蓝牙

serverSocket = adapter.listenUsingRfcommWithServiceRecord("PWAccessP", UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));

(我也试过listenUsingInsecureRfcommWithServiceRecord甚至反射来打开一个端口)

我从另一部手机询问我的手机蓝牙以获取 myFitnessCompanion 应用程序使用的“PWAccessP”值,甚至使用该应用程序获取体重秤以与我的手机配对。

当我使手机可发现时,秤将进入我的套接字侦听器,但除此之外,我看到 BluetoothDevice 开始进行低级连接监视意图“BluetoothDevice.ACTION_ACL_CONNECTED”,但除非我将手机置于可发现状态模式它不会触发我的服务器套接字的 'accept()' 方法。配对屏幕不会出现在新连接上。

任何帮助将不胜感激。考虑到我必须让手机“可发现”才能在我的应用中发生连接,而 myFitnessCompanion 在配对后随时允许连接,我看不出 myFitnessCompanion 是如何解决这个问题的。

提前致谢。

【问题讨论】:

  • 想通了...当未配对时,电话需要可被设备发现才能找到它。配对后,设备会保存电话正在侦听的端口并尝试在该端口上重新连接。如果它可以找到该设备,但无法在端口上连接,则它假定它不应该连接,并会寻找任何“可发现”的设备来连接,然后保存该端口。作为一种解决方案,我在绑定设备后缓存了端口,并使用反射“重新打开”listenUsingRfcommOn 端口。
  • 有没有办法将电子秤与您的电脑预先配对?我也在尝试体重秤,只是在我的情况下,我有电脑而不是手机。到目前为止,我所做的一切似乎都不起作用。我的 sw 似乎没有检测到比例周期。你的手机上有什么BT堆栈?你知道这有什么不同吗?

标签: android bluetooth


【解决方案1】:

A 和 D 设备作为主设备,android 设备作为从设备。所以安卓设备必须处于可发现模式。我用 listenUsingRfcommWithServiceRecord 和 listenUsingInsecureRfcommWithServiceRecord 方法进行了测试。

            try {
                tmp = mBluetoothAdapter
                        .listenUsingInsecureRfcommWithServiceRecord(NAME,
                                MY_UUID); // #2
                // tmp.accept();
                // tmp =
                // mBluetoothAdapter.listenUsingRfcommWithServiceRecord(NAME,
                // MY_UUID);
                // tmp =
                // mAdapter.getRemoteDevice("").createRfcommSocketToServiceRecord(MY_UUID);
                mServerSocket = tmp;
                mPortNumber = getPortNr();

            } catch (IOException e) {
                //Log.e("DROID", "listen() failed", e);
                flag=false;
                return flag;
            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-20
    • 2016-07-08
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    相关资源
    最近更新 更多