android – 蓝牙忘记密码

android – 蓝牙忘记密码,第1张

概述所以我正在开发一个连接到嵌入式蓝牙设备的应用程序.这个设备推出了不同的版本和我的测试设备,每个工作都很好.通过安全的rfcomm套接字进行通信.然而,另一组设备给了我毛骨悚然.他们有点失去了边界状态.虽然它们被标记为已配对,但每次我建立连接时,都会要求我重新输入PIN码.这真的不是理想的.此外,这种行为并非在所有设备上发生,而是大多数设备.实际上,唯一不会忘记PIN的设备是Galaxy Nexus 所以我正在开发一个连接到嵌入式蓝牙设备的应用程序.这个设备推出了不同的版本和我的测试设备,每个工作都很好.通过安全的rfcomm套接字进行通信.然而,另一组设备给了我毛骨悚然.他们有点失去了边界状态.虽然它们被标记为已配对,但每次我建立连接时,都会要求我重新输入PIN码.这真的不是理想的.此外,这种行为并非在所有设备上发生,而是大多数设备.实际上,唯一不会忘记PIN的设备是galaxy Nexus S.三星galaxy Nexus,ACE,GIO和X10 mini Pro倾向于“忘记”该设备之前配对.使用API​​ lvl 10,我已经尝试过不安全的RFCOMM连接,但没有成功.
我迷失在这里.有人有想法吗?

最好的祝福!

解决方法 你设备的getBTMajorDeviceClass是什么?
如果是BluetoothClass.Device.Major.UNCATEGORIZED,请尝试生成您自己的UUID:

private UUID generateUuID() {String androID_ID = Secure.getString(getApplicationContext()    .getContentResolver(),Secure.ANDROID_ID);Log.i("System out","androID_ID : " + androID_ID);final TelephonyManager tm = (TelephonyManager) getBaseContext()    .getSystemService(Context.TELEPHONY_SERVICE);final String tmDevice,tmSerial,androIDID;tmDevice = "" + tm.getdeviceid();Log.i("System out","tmDevice : " + tmDevice);tmSerial = "" + tm.getSimserialNumber();Log.i("System out","tmSerial : " + tmSerial);androIDID = ""    + androID.provIDer.Settings.Secure.getString(        getContentResolver(),androID.provIDer.Settings.Secure.ANDROID_ID);UUID deviceUuID = new UUID(androIDID.hashCode(),((long) tmDevice.hashCode() << 32) | tmSerial.hashCode());return deviceUuID;}

并在套接字创建时使用它createRfcommSocketToServiceRecord(generateUuID());

*需要READ_PHONE_STATE

总结

以上是内存溢出为你收集整理的android – 蓝牙忘记密码全部内容,希望文章能够帮你解决android – 蓝牙忘记密码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1124854.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存