我正在尝试通过蓝牙连接两台设备。我已经能够做到了,但是当连接启动时,操作系统要求我提供配对代码。
我想要做的是以编程方式提供该代码。有没有办法连接这些设备并发送配对代码而不要求用户插入它?
注意:我确实有配对代码,我只是不希望用户插入它,而是应用程序将从保存位置获取它并使用它。
注意2:必须使用配对码。因此,使用createInsecureRfcommSocketToServiceRecord()或不使用配对代码的类似连接不是一种选择。
答案 0 :(得分:1)
通过反射调用隐藏方法“setPin(byte [])”是解决方案。我共享代码。
private void PairDevice(BluetoothDevice pDevice, String pin)
{
try
{
Log.d("pairDevice()", "Start Pairing...");
Method pairMethod = pDevice.getClass().getMethod("setPin", byte[].class);
Boolean lReturn = (Boolean) pairMethod.invoke(pDevice, pin.getBytes("UTF8"));
if(lReturn.booleanValue())
{
Log.d("pairDevice()", "Pairing Finished...");
Method bondMethod = pDevice.getClass().getMethod("createBond");
bondMethod.invoke(pDevice);
}
}
catch(Exception ex)
{
Log.e("pairDevice()", ex.getMessage());
}
}
另外,这个答案有更详细的说明。 Android bluetooth setpin function
答案 1 :(得分:0)
我认为this link会帮助您找到所需内容。
我更多地考虑“当您使用蓝牙API启动加密连接时,会自动执行配对。”部分链接。我没有尝试过,但认为自动配对意味着没有用户输入。