• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
  • 1
  • 2
  • 3
  • 4
首页 > ADS > ADS使用问答 > How to add a headset music key

How to add a headset music key

录入:edatop.com    点击:
[Description]
How to add aHeADSet Musickey on MT6577/75
[Solution]
1.添加Keybit
mediatek/platform/mt6577/kernel/drivers/accdet/accdet.c
在accdet_probe()中添加新的按键使用keybit
__set_bit(EV_KEY,kpd_accdet_dev->evbit);
__set_bit(KEY_CALL,kpd_accdet_dev->keybit);
__set_bit(KEY_ENDCALL,kpd_accdet_dev->keybit);
__set_bit(KEY_PLAYPAUSE,kpd_accdet_dev->keybit);//添加要使用的key
__set_bit(KEY_STOP,kpd_accdet_dev->keybit);
2.添加事件发送
mediatek/platform/mt6577/kernel/drivers/accdet/accdet.c
在check_cable_type()中添加
case MIC_BIAS:
......
if((call_stauts = 0)&&button_status)
{
if(is_long_press())//77 75 only one key
{
notify_sendKeyEvent(ACC_STOP_MUSIC); //add define as #define ACC_END_CALL 2
}
else
{
notify_sendKeyEvent(ACC_PAUSE_MUSIC);
}
}
在sendKeyEvent()添加
if(ACC_STOP_MUSIC==accdet_key_event)
{
input_report_key(kpd_accdet_dev,KEY_STOP,1);
input_report_key(kpd_accdet_dev,KEY_STOP,0);
input_sycn(kpd_accdet_dev);
}
if(ACC_PLAYPAUSE_MUSIC==accdet_key_event)
{
input_report_key(kpd_accdet_dev,KEY_PLAYPAUSE,1);
input_report_key(kpd_accdet_dev,KEY_PLAYPAUSE,0);
input_sycn(kpd_accdet_dev);
}
3.修改accdet supend
php?mod=tag&id=6090" target="_blank" class="relatedlink">Frameworks/base/media/java/android/media/MediaPlayer.java
修改:
privte native void pause() throws IllegalStateException{
//atayAwake(false);//保证通过耳机暂停后,系统在设定时间内不进入supend,
//仍然可以通过耳机继续操作
_pause();
}
privte native void stop() throws IllegalStateException{
// atayAwake(false);//stop后不会立即进入supend
_stop();
}
4.
packages/apps/music/src/com/android/music/MediaPlaybackService.java
修改:
// interval after which we stop the service when idle
private static final int IDLE_DELAY =60000;
//适当调整播放器暂停或停止后进入supend的时间,因为supend后耳机是无法唤醒的,默认1分钟
packages/apps/music/src/com/android/music/MediaPlaybackService.java
看一下oncreate()和updateNotication()的方法,Playbackservice所支持的Key
5.注意:
由于耳机按键检测采用thread轮询ADC电压的方式,所以要保证按键时系统不能进入suspend,
可以设置mediaplayer在stop和pause时系统不立即进入suspend,所以当mediaplayer开启时会增加
一定耗电。
当mediaplayer进入pause和stop后,过了 IDLE_DLAY时间后系统会自动进入suspend,这时耳机按键
将无法再操作,这里可以根据实际需求设置IDLE_DLAY时间。
MT6589 可以打开 ACCDET_MULTI_KEY_FEATURE支持多键行为
6.
如果驱动上报KEY后mediaplayer没有响应,查看以下文件中上报的KEY是否已定义:
alps/frameworks/base/core/java/android/view/KeyEvent.java
alps/frameworks/base/include/ui/KeycodeLabels.h
alps/frameworks/base/core/res/res/values/attrs.xml
alps/kernel/include/linux/input.h
alps/SDK/emulator/keymaps/qwerty.kl
alps/sdk/emulator/keymaps/qwerty.kl (MT6573)
alps/frameworks/base/data/keyboards/Generic.kl (MT6575)
alps/mediatek/config/<your proj>/mtk-kpd.kl
alps/mediatek/config/mt6577/ACCDET.kl
或者参考:Mediatek on-line > FAQ Home > SW > ALPS > Driver - input system >
[FAQ04495][keypad]How to add a new key on android ICS\ICS2

申明:网友回复良莠不齐,仅供参考。如需专业帮助,请学习易迪拓培训专家讲授的ADS视频培训课程

上一篇:求:ADS2014在win7系统下的32位破解方法
下一篇:无元PCB电路设计ADS仿真入门教程

ADS培训课程推荐详情>>
客服热线

  网站地图