mtk硬件启动关闭蓝牙功能的项目:mtk上层操作GPIO应用示例
项目要求:
接上篇:
1:蓝牙按键(KCOL2+KROW1)长按3秒,软件上控制GPIO144拉高2秒后关闭,蓝牙就开启并搜索配对。同时拉高GPIO98,控制音频的模拟开关切换蓝牙音源。
2:蓝牙在工作状态下,给出个1.8V的高电平,给GPIO145用来检测蓝牙的工作状态。
3:蓝牙在工作装态下想要重新配对,在长按蓝牙按键3秒,控制GPIO97拉高3秒后关闭,蓝牙模块在收到这个信号后执行清空列表和重新搜索功能。
4:蓝牙按键(KCOL2+KROW1)长按8秒,软件上控制GPIO144拉高2秒后关闭,蓝牙模块就关闭了。
本篇讲述如何控制。
1, 设置蓝牙控制GPIO为初始状态,GPIO97 98 144全部设置为GPIOOUT,且下拉。GPIO145设置为GPIOIN。
2,侦测开机事件boot_completed,在这个intent处理程序中,检查bt的switched的状态,如果为//checked状态,那么打开蓝牙,如果为非checked状态,则不理会。
第一步,在AndroidManifest.xml中添加:
<receiverandroid:name="BootCompletedReceiver">
<intent-filter>
<actionandroid:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
不要忘记加入权限:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
另外,接收BOOT_COMPLETED,不能安装,必须直接push到/system/app/
在当前包下面建立BootCompletedReceiver.java文件
我们定义两个SharedPreferences来保存系统的bt和ethernet状态,因为省电需求,我们每次开机都保持Ethernet和BT为关闭。
packagecom.mediatek.oobe;
importandroid.app.Activity;
importandroid.content.BroadcastReceiver;
importandroid.content.Context;
importandroid.content.Intent;
importandroid.content.SharedPreferences;
importandroid.util.Log;
publicclassBootCompletedReceiverextends