我正在开发一个应用程序,我想连接蓝牙设备主要问题是我不希望用户输入所需的引脚而不是应用程序应该自己做...我没有任何连接相关的问题...只想要按应用程序本身插入并完成引脚认证过程.
我发现以下代码我确信它正在工作但不确定如何在此代码中添加引脚?
private void pairDevice(BluetoothDevice device) {
try {
Log.d("pairDevice()", "Start Pairing...");
Method m = device.getClass().getMethod("createBond", (Class[]) null);
m.invoke(device, (Object[]) null);
Log.d("pairDevice()", "Pairing finished.");
} catch (Exception e) {
Log.e("pairDevice()", e.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道如何在上面的代码或任何类似的代码中输入pin来解决问题..谢谢
在Android 2.1中,要取消配对蓝牙设备,您可以转到蓝牙设置,长按设备并选择取消配对以取消配对该设备.我希望能够从我的应用程序中执行此操作.我可以使用BluetoothAdapter.getBondedDevices()检索配对/绑定设备列表,但我找不到如何取消配对.我已经探索了BluetoothChat示例,我搜索了sdk,但仍然无法找到允许这样做的API.
如何取消配对蓝牙设备?
我正在通过Android应用程序与蓝牙低功耗设备绑定/配对.启动绑定时,会显示"输入PIN" - 对话框.当我从代码设置引脚时它会自动消失.对话框出现并消失得足够慢以使用户感到困惑和烦恼.我怎么能避免这个对话?
我在Android BLE指南中找不到任何关于绑定的内容https://developer.android.com/guide/topics/connectivity/bluetooth-le.html
我得到了另一个问题的帮助,但解决方案并没有删除对话框. 在进行程序化配对时,如何避免或取消Android的蓝牙配对通知?
这个问题建议删除SDK中的接收器. Android防止蓝牙配对对话框
在API中真的没办法解决这个问题吗?关于这个问题的大多数问题已经有几年了,最近Android蓝牙API已经发生了很多变化.我目前正在使用API 19(4.4 Kitkat)但我会使用API 22(5.1 Lollipop),如果这会有所帮助.
这就是我如何进行粘合:
myBluetoothDevice.createBond();
Run Code Online (Sandbox Code Playgroud)
然后,我听取配对意图,以便能够在合适的时刻提供引脚.我也听取了绑定意图.
//Register before calling createBond
context.registerReceiver(broadcastReceiver, new IntentFilter(BluetoothDevice.ACTION_BOND_STATE_CHANGED));
context.registerReceiver(broadcastReceiver, new IntentFilter(BluetoothDevice.ACTION_PAIRING_REQUEST));
//The recievers
final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_PAIRING_REQUEST.equals(action))
{
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
byte[] pin = convertPinToBytes("111111"); //convertPinToBytes for some reason not available in API, so I made a copy
device.setPin(pin);
}
if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(action)) {
if (BluetoothDevice.BOND_BONDED …Run Code Online (Sandbox Code Playgroud) android bluetooth-lowenergy android-4.4-kitkat android-5.0-lollipop
我们应该在哪里插入setPin(String pin)配对蓝牙设备?应该在之前createBond还是之后调用函数?
在这篇文章中的答案如何通过蓝牙连接两个设备通过参数发送配对代码?JAVA-Android传达了应该在调用之前调用它createBond()
但问题是,当我进行程序化配对时,如何避免或取消Android的蓝牙配对通知?告诉其中在蓝牙配对完成的步骤setPin被称为后createBond().如果这样做,那么它应该在BroadcastReceiver中调用,我们在那里获得配对请求的回调.
哪种方法正确?真的很困惑!