0

我已经打了我的智慧与这个。

我有一个典型的 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 是如何解决这个问题的。

提前致谢。

4

1 回答 1

1

A和D设备作为Master,android设备作为slave。所以安卓设备必须处于可发现模式。我用 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;
            }
于 2013-05-20T06:36:59.783 回答