除非设备可被发现,否则无法接受传入的蓝牙连接

时间:2012-11-14 05:03:53

标签: android bluetooth

我已经用这个结束了我的智慧。

我有一个典型的BluetoothServerSocket,我正在尝试连接到A& D Weight scale(UC-321PBT)。他们的公司有一个应用程序(myFitnessCompanion)似乎没有很多连接问题,但如果我的电话“可被发现”,那么规模只会连接到我的应用程序。请注意,这是在我与比例配对之后。

这里真正需要的唯一关键代码是监听器如何打开,超出它的典型蓝牙

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

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

我从另一部手机查询我的手机蓝牙,获取myFitnessCompanion应用程序使用的'PWAccessP'值,甚至使用该应用程序获得与我的手机配对的比例。

当我发现手机可被发现时,比例将进入我的套接字监听器,但除此之外,我看到蓝牙设备开始进行低级连接监控意图'BluetoothDevice.ACTION_ACL_CONNECTED',但除非我有可发现的手机模式它不会触发我的服务器套接字的'accept()'方法。配对屏幕不会出现在新连接上。

任何帮助将不胜感激。考虑到我必须让手机“可被发现”才能在我的应用程序中与myFitnessCompanion进行连接,以便在配对后随时连接我无法看到myFitnessCompanion如何解决这个问题。

提前致谢。

1 个答案:

答案 0 :(得分:1)

A和D设备作为Master,android设备作为slave。所以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;
            }