2 coolsssss coolsssss 于 2016.02.25 09:55 提问

Android 蓝牙ble配对 发送PIN码无效问题

在做蓝牙配对时,发现调用setPin函数发送PIN码,如123456时,蓝牙设备那边一直显示PIN错误。
我试过了无论是字符串的123456,还是数字123456都不行,但是使用全0的PIN可以配对成功,请大神指教。。

 byte[] pin = (byte[]) BluetoothDevice.class.getMethod("convertPinToBytes", String.class).invoke(BluetoothDevice.class, "123456");
  Log.i("pair", Arrays.toString(pin));
  boolean flag = device.setPin(pin);

4个回答

u010494578
u010494578   2016.02.25 10:03

配对码不是自己乱定的,一般的手机配对码是0000或者1234

u010494578
u010494578   2016.02.25 10:05

private static final Method _setPin = getMethod(BluetoothDevice.class, "setPin", new Class[] { byte[].class });
public boolean setPin(byte[] pin) throws Exception {
if (_setPin == null)
throw new NoSuchMethodException("setPin");

    try {
        return (Boolean)_setPin.invoke(mDevice, pin);
    } catch (InvocationTargetException tex) {
        if (tex.getCause() instanceof Exception)
            throw (Exception)tex.getCause();
        else
            throw tex;
    }
}
希望对你有帮助
u010494578
u010494578 回复松鼠小白: 嵌入式工程师给设备设置什么pin码,android端设置配对时就使用什么pin码。另外需要特别关注的是:android里利用反射机制去设置pin码这个方法并不是百分之百可靠
接近 2 年之前 回复
coolsssss
coolsssss 嵌入式那边把PIN码改成“000000”后,我这边发送“000000”就可以配对了。但是用其它的PIN码就不可以,请问是为啥啊?
接近 2 年之前 回复
coolsssss
coolsssss 那个PIN码是嵌入式工程师设置的,现在是发送“123456”的PIN码配对不了,请问是不是对发送的PIN码有什么格式要求啊?
接近 2 年之前 回复
luochoudan
luochoudan   Ds   Rxr 2016.02.25 11:50

没有格式要求,就是6位数字,建议两遍都找找原因。

zrf1335348191
zrf1335348191   2016.02.25 13:07

设备端pin码两个选择0000或1234

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!