1,在这个周的工作中,这个问题让我纠结了好久,问度娘不知道,上android开发者官网似乎进入了词海,翻了下上了个GOOGLE,还是没有很好的答案。
2,后来得到一个相关的APK,研究过后发现原来跟线控耳机长按时,出来百度语音搜索应该一个原理(有装百度手机客户端的话)。
3,主要就两个ACTION就可以实现长按操作,而且类似于后台服务的效果(如果界面显示的话,直接LongPress就可以处理了):
在Manifest中的一个activity下插入如下代码
<intent-filter android:priority="2147483647"> <action android:name="android.speech.action.WEB_SEARCH" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <intent-filter android:priority="2147483647"> <action android:name="android.speech.action.VOICE_SEARCH_HANDS_FREE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter>
4,当然,这个activity的dialog风格可以随意,比如弄成一个弹框界面大小的风格 或者 完全透明的风格(在onStart中执行完相应操作后并finish,就类似于一种看
不见的服务效果,而且不会因主程序被后台清理掉而收不到响应),跟一同事聊天的时候,他说可以搞一个偷拍,这个。。。。。。
5,上面的代码紧针对Android4.1及以上的系统(因为线控耳机的长按操作被GOOGLE当作语音搜索保留),Android4.1以下的版本则只需响应一个叫MEDIA_BUTTON
的服务即可,此时算下DOWN 和 UP的时间即可处理成长按操作。