当前位置:编程学习 > wap >>

关于用nexus 4 开发BLE应用过程,有时候会出现连接蓝牙设备时连不上,除非在设置里把蓝牙关调再重新打开蓝牙,然后再连设备才能连接,这是什么问题?

各位大侠们,小弟目前在用nexus4做蓝牙4.0的开发,系统是android 4.3(是自己刷得),
问题:有时候会出现连接蓝牙设备时连不上,除非在设置里把蓝牙关调再重新打开蓝牙,然后再连设备才能连接,这是什么问题??求解。。 android BLE ANDROID 4.3 nexus 4 android 4.3 --------------------编程问答-------------------- 补充:调用 discoverServices:这个方法,没有任何的回调,服务和特征值都没有回调了。 有时候也出现在设置上关蓝牙关不掉,这个时候手机是必须重启才可以再连接了。 --------------------编程问答-------------------- 遇到同样问题,交流一下 --------------------编程问答--------------------
引用 1 楼 asdlai 的回复:
补充:调用 discoverServices:这个方法,没有任何的回调,服务和特征值都没有回调了。 有时候也出现在设置上关蓝牙关不掉,这个时候手机是必须重启才可以再连接了。

我也出现过在调用这个方法后,能进回调,但是会报status 129(GATT内部错误) --------------------编程问答-------------------- 链接时会出现配对提示框当选择配对会回调onConnectionStateChange链接成功并开始发现服务,但30秒后会出现onServicesDiscovered received: 129,然后再次出现配对提示框,一直都连不上,除非重启蓝牙设置,才能重新链接设备 --------------------编程问答-------------------- 补充:点击配对按钮时会进入链接成功回调方法
@Override
        public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
            String intentAction;
            if (newState == BluetoothProfile.STATE_CONNECTED) {
                intentAction = ACTION_GATT_CONNECTED;
                mConnectionState = STATE_CONNECTED;
                broadcastUpdate(intentAction);
                Log.i(TAG, "Connected to GATT server.");
                // Attempts to discover services after successful connection.
                Log.i(TAG, "Attempting to start service discovery:" +
                        mBluetoothGatt.discoverServices());

            } else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
                intentAction = ACTION_GATT_DISCONNECTED;
                mConnectionState = STATE_DISCONNECTED;
                Log.i(TAG, "Disconnected from GATT server.");
                broadcastUpdate(intentAction);
            }
        }
30秒后会回调发现服务,特征回调方法 返回状态为129
@Override
        public void onServicesDiscovered(BluetoothGatt gatt, int status)
        {
            if (status == BluetoothGatt.GATT_SUCCESS)
            {
                broadcastUpdate(ACTION_GATT_SERVICES_DISCOVERED);
            }
            else
            {
                Log.w(TAG, "onServicesDiscovered received: " + status);
            }
        }
--------------------编程问答--------------------
引用 5 楼 asdlai 的回复:
补充:点击配对按钮时会进入链接成功回调方法
@Override
        public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
            String intentAction;
            if (newState == BluetoothProfile.STATE_CONNECTED) {
                intentAction = ACTION_GATT_CONNECTED;
                mConnectionState = STATE_CONNECTED;
                broadcastUpdate(intentAction);
                Log.i(TAG, "Connected to GATT server.");
                // Attempts to discover services after successful connection.
                Log.i(TAG, "Attempting to start service discovery:" +
                        mBluetoothGatt.discoverServices());

            } else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
                intentAction = ACTION_GATT_DISCONNECTED;
                mConnectionState = STATE_DISCONNECTED;
                Log.i(TAG, "Disconnected from GATT server.");
                broadcastUpdate(intentAction);
            }
        }
30秒后会回调发现服务,特征回调方法 返回状态为129
@Override
        public void onServicesDiscovered(BluetoothGatt gatt, int status)
        {
            if (status == BluetoothGatt.GATT_SUCCESS)
            {
                broadcastUpdate(ACTION_GATT_SERVICES_DISCOVERED);
            }
            else
            {
                Log.w(TAG, "onServicesDiscovered received: " + status);
            }
        }


引用 5 楼 asdlai 的回复:
补充:点击配对按钮时会进入链接成功回调方法
@Override
        public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
            String intentAction;
            if (newState == BluetoothProfile.STATE_CONNECTED) {
                intentAction = ACTION_GATT_CONNECTED;
                mConnectionState = STATE_CONNECTED;
                broadcastUpdate(intentAction);
                Log.i(TAG, "Connected to GATT server.");
                // Attempts to discover services after successful connection.
                Log.i(TAG, "Attempting to start service discovery:" +
                        mBluetoothGatt.discoverServices());

            } else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
                intentAction = ACTION_GATT_DISCONNECTED;
                mConnectionState = STATE_DISCONNECTED;
                Log.i(TAG, "Disconnected from GATT server.");
                broadcastUpdate(intentAction);
            }
        }
30秒后会回调发现服务,特征回调方法 返回状态为129
@Override
        public void onServicesDiscovered(BluetoothGatt gatt, int status)
        {
            if (status == BluetoothGatt.GATT_SUCCESS)
            {
                broadcastUpdate(ACTION_GATT_SERVICES_DISCOVERED);
            }
            else
            {
                Log.w(TAG, "onServicesDiscovered received: " + status);
            }
        }


你要30秒这么久么  每次都这样 还是偶尔 --------------------编程问答-------------------- 我一旦调用了discoverServices,立马就返回129,不用30秒
我用Nexus 4/Note 2(CM10.2)
看来是Android 4.3的蓝芽堆栈问题。 --------------------编程问答--------------------
引用 6 楼 zhangwm1219 的回复:
Quote: 引用 5 楼 asdlai 的回复:

补充:点击配对按钮时会进入链接成功回调方法
@Override
        public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
            String intentAction;
            if (newState == BluetoothProfile.STATE_CONNECTED) {
                intentAction = ACTION_GATT_CONNECTED;
                mConnectionState = STATE_CONNECTED;
                broadcastUpdate(intentAction);
                Log.i(TAG, "Connected to GATT server.");
                // Attempts to discover services after successful connection.
                Log.i(TAG, "Attempting to start service discovery:" +
                        mBluetoothGatt.discoverServices());

            } else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
                intentAction = ACTION_GATT_DISCONNECTED;
                mConnectionState = STATE_DISCONNECTED;
                Log.i(TAG, "Disconnected from GATT server.");
                broadcastUpdate(intentAction);
            }
        }
30秒后会回调发现服务,特征回调方法 返回状态为129
@Override
        public void onServicesDiscovered(BluetoothGatt gatt, int status)
        {
            if (status == BluetoothGatt.GATT_SUCCESS)
            {
                broadcastUpdate(ACTION_GATT_SERVICES_DISCOVERED);
            }
            else
            {
                Log.w(TAG, "onServicesDiscovered received: " + status);
            }
        }


引用 5 楼 asdlai 的回复:
补充:点击配对按钮时会进入链接成功回调方法
@Override
        public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
            String intentAction;
            if (newState == BluetoothProfile.STATE_CONNECTED) {
                intentAction = ACTION_GATT_CONNECTED;
                mConnectionState = STATE_CONNECTED;
                broadcastUpdate(intentAction);
                Log.i(TAG, "Connected to GATT server.");
                // Attempts to discover services after successful connection.
                Log.i(TAG, "Attempting to start service discovery:" +
                        mBluetoothGatt.discoverServices());

            } else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
                intentAction = ACTION_GATT_DISCONNECTED;
                mConnectionState = STATE_DISCONNECTED;
                Log.i(TAG, "Disconnected from GATT server.");
                broadcastUpdate(intentAction);
            }
        }
30秒后会回调发现服务,特征回调方法 返回状态为129
@Override
        public void onServicesDiscovered(BluetoothGatt gatt, int status)
        {
            if (status == BluetoothGatt.GATT_SUCCESS)
            {
                broadcastUpdate(ACTION_GATT_SERVICES_DISCOVERED);
            }
            else
            {
                Log.w(TAG, "onServicesDiscovered received: " + status);
            }
        }


你要30秒这么久么  每次都这样 还是偶尔

有时候链接不上时会弹出配对提示框,如果点击了是就要30秒,然后返回129,如果点击否,则5秒又会提升配对提示,返回129 --------------------编程问答-------------------- 当出现129提示时,就会一直连不上设备,不管配对提示框点击是或否,还是会返回129,除非在设置里把蓝牙关调再重新打开蓝牙,然后再连设备才能连接 --------------------编程问答--------------------
引用 9 楼 asdlai 的回复:
当出现129提示时,就会一直连不上设备,不管配对提示框点击是或否,还是会返回129,除非在设置里把蓝牙关调再重新打开蓝牙,然后再连设备才能连接

129就是没发现服务,这步没完成 下面的当然也。。 --------------------编程问答--------------------
引用 9 楼 asdlai 的回复:
当出现129提示时,就会一直连不上设备,不管配对提示框点击是或否,还是会返回129,除非在设置里把蓝牙关调再重新打开蓝牙,然后再连设备才能连接
为什么去加个配对提示框呢 --------------------编程问答--------------------
引用 10 楼 zhangwm1219 的回复:
Quote: 引用 9 楼 asdlai 的回复:

当出现129提示时,就会一直连不上设备,不管配对提示框点击是或否,还是会返回129,除非在设置里把蓝牙关调再重新打开蓝牙,然后再连设备才能连接

129就是没发现服务,这步没完成 下面的当然也。。

额,当调用mBluetoothGatt = device.connectGatt(this, false, mGattCallback);会出现提示框不是自己加的,我现在问题是链接不稳定,有时候能连上,但有时候出现129就一直连不上,我想问怎样解决129链接问题,多谢! --------------------编程问答--------------------
引用 12 楼 asdlai 的回复:
Quote: 引用 10 楼 zhangwm1219 的回复:

Quote: 引用 9 楼 asdlai 的回复:

当出现129提示时,就会一直连不上设备,不管配对提示框点击是或否,还是会返回129,除非在设置里把蓝牙关调再重新打开蓝牙,然后再连设备才能连接

129就是没发现服务,这步没完成 下面的当然也。。

额,当调用mBluetoothGatt = device.connectGatt(this, false, mGattCallback);会出现提示框不是自己加的,我现在问题是链接不稳定,有时候能连上,但有时候出现129就一直连不上,我想问怎样解决129链接问题,多谢!

了解,我之前一个项目是用nexus 4测试的,后来换了小米2S 刷的4.3,问题解决了。当时初步定位到是设备的问题,现在在做的这个项目  问题又出现了  129.也是很困惑,有问题多交流下吧 --------------------编程问答-------------------- 我也遇到一样的问题,还没有找到问题的原因所在。最近在翻ANDROID的代码,还没有啥收获
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,