首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Android不能打开RN-41粗纱网络设备的连接?

为什么Android不能打开RN-41粗纱网络设备的连接?
EN

Stack Overflow用户
提问于 2014-06-12 10:27:05
回答 1查看 558关注 0票数 0

我只是尝试用RN-41微芯片打开套接字,据我所知,芯片一直在监听传入的连接,是可发现的等等。为什么套接字总是直接关闭?

代码语言:javascript
复制
private class Connect extends Thread {
        private final BluetoothSocket mmSocket;
        private final BluetoothDevice mmDevice;

        public Connect(BluetoothDevice device) {

            BluetoothSocket tmp = null;
            mmDevice = device;
            try {
                // MY_UUID is the app's UUID string, also used by the server code
                tmp = device.createInsecureRfcommSocketToServiceRecord(UUID.fromString("EB46DDA9-0D00-4C34-9365-D6AA6C111D1C"));
                Log.v("SOCKET SUCCESS", "HAST SOCKET"); 
            } catch (IOException e) { }
            mmSocket = tmp;
        }

        public void run() {


            try {

                mmSocket.connect();
                Log.v("SOCKET SUCCESS", "VERBUNDEN");
            } catch (IOException connectException) {

                Log.v("SOCKET SUCCESS", "KEINE VERBINDUNG");
                try {
                    mmSocket.close();
                    Log.v("SOCKET SUCCESS", "SOCKET CLOSED");
                } catch (IOException closeException) { 
                    Log.v("SOCKET SUCCESS", "SOCKET CLOSE FAIL");
                }
                return;
            }
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-12 14:01:08

我在谷歌上搜索了一天,一切都很顺利。不幸的是,我仍然不知道为什么和如何工作,但它的工作完美。我修改了Connect类构造函数代码,如下所示:

代码语言:javascript
复制
public Connect(BluetoothDevice device) {
            // Use a temporary object that is later assigned to mmSocket,
            // because mmSocket is final
            BluetoothSocket tmp = null;
            mmDevice = device;

            // Get a BluetoothSocket to connect with the given BluetoothDevice
            //try {
                // MY_UUID is the app's UUID string, also used by the server code
                //ParcelUuid[] ids = device.getUuids();
                //UUID deviceID = ids[0].getUuid();
                //tmp = device.createInsecureRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));//deviceID);//UUID.fromString("EB46DDA9-0D00-4C34-9365-D6AA6C111D1C"));

                Method m = null;
                try {
                    m = mmDevice.getClass().getMethod("createInsecureRfcommSocket", new Class[] { int.class });
                } catch (NoSuchMethodException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } 
                try {
                    tmp = (BluetoothSocket)m.invoke(mmDevice, Integer.valueOf(1));
                } catch (IllegalAccessException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IllegalArgumentException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (InvocationTargetException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                Log.v("SOCKET SUCCESS", "HAST SOCKET");
            //} catch (IOException e) { }
                mmSocket = tmp;
        }

来源:

Android Bluetooth SPP with Galaxy S3

附注:如果有人有一点时间来解释上面的代码,我会非常感激的。谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24182120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档