Android7.0 获取蓝牙设备电量

编程入门 行业动态 更新时间:2024-10-22 16:33:49

Android7.0 获取<a href=https://www.elefans.com/category/jswz/34/1768306.html style=蓝牙设备电量"/>

Android7.0 获取蓝牙设备电量

参考=4&fps=1

1.修改 HeadsetStateMachine
packages/apps/Bluetooth/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
BluetoothAssignedNumbers.GOOGLE随便用哪个公司的,记得和注册广播那里一直。
processVendorSpecificAt可以去看看,如果还有哪些at command不支持的话,可以再添加。

    static {classInitNative();VENDOR_SPECIFIC_AT_COMMAND_COMPANY_ID = new HashMap<String, Integer>();VENDOR_SPECIFIC_AT_COMMAND_COMPANY_ID.put("+XEVENT", BluetoothAssignedNumbers.PLANTRONICS);VENDOR_SPECIFIC_AT_COMMAND_COMPANY_ID.put("+ANDROID", BluetoothAssignedNumbers.GOOGLE);
//aaron
Log.e("a", "put IPHONEACCEV " );VENDOR_SPECIFIC_AT_COMMAND_COMPANY_ID.put("+XAPL", BluetoothAssignedNumbers.GOOGLE);VENDOR_SPECIFIC_AT_COMMAND_COMPANY_ID.put("+IPHONEACCEV", BluetoothAssignedNumbers.GOOGLE);}

2.注册广播BluetoothSettings
packages/apps/Settings/src/com/android/settings/bluetooth/BluetoothSettings.java
在settings中的蓝牙界面中注册广播,然后把电量显示出来。

        //aaronIntentFilter filter=new IntentFilter();filter.addAction(BluetoothHeadset.ACTION_VENDOR_SPECIFIC_HEADSET_EVENT);//filter.addCategory(BluetoothHeadset.VENDOR_SPECIFIC_HEADSET_EVENT_COMPANY_ID_CATEGORY+"."+BluetoothAssignedNumbers.GOOGLE);filter.addCategory(BluetoothHeadset.VENDOR_SPECIFIC_HEADSET_EVENT_COMPANY_ID_CATEGORY+"."+BluetoothAssignedNumbers.GOOGLE);getActivity().registerReceiver(mIntentReceiver,filter);Log.i("a", "registerReceiver  ");//endprivate BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {final String action = intent.getAction();if (action.equals(BluetoothHeadset.ACTION_VENDOR_SPECIFIC_HEADSET_EVENT)) {Log.i("a", "intent  "+intent);String command = intent.getStringExtra(BluetoothHeadset.EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD);if ("+IPHONEACCEV".equals(command)) {Object[] args = (Object[]) intent.getSerializableExtra(BluetoothHeadset.EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_ARGS);if (args.length >= 3 && args[0] instanceof Integer && ((Integer)args[0])*2+1<=args.length) {for (int i=0;i<((Integer)args[0]);i++) {if (!(args[i*2+1] instanceof Integer) || !(args[i*2+2] instanceof Integer)) {continue;}if (args[i*2+1].equals(1)) {float level = (((Integer)args[i*2+2])+1)/10.0f;Log.i("a", "battery   "+level);break;}}}}}}};

附上HFP命令AT+IPHONEACCEV

描述:报告耳机的状态变更
发起者:耳机
格式:AT+IPHONEACCEV=[Number of key/value pairs ],[key1 ],[val1 ],[key2 ],[val2 ],…
参数:
Number of key/value pairs : 接下来参数的数量
key: 被报告状态变化的类型
1 = 电量等级
2 = 暂停状态
val: 更改的值
Battery events:0-9之间数字的字符串 A string value between ‘0’ and ‘9’.
Dock state: 0 = undocked, 1 = docked.
Example: AT+IPHONEACCEV=1,1,3

更多推荐

Android7.0 获取蓝牙设备电量

本文发布于:2024-03-12 03:14:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1730560.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:蓝牙   电量   设备

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!