是否可以在机器人上以编程方式覆盖硬件按钮的功能?具体来说,我希望能够以编程方式覆盖手机上的相机按钮.这可能吗?
解决方法:
如何处理相机按钮事件
一旦按下相机按钮,就会向收听它的所有应用程序发送广播消息.您需要使用广播接收器和abortbroadcast()函数.
1)创建一个扩展broadcastReceiver并实现onReceive方法的类.
只要收到广播消息,onReceive方法中的代码就会运行.在这种情况下,我编写了一个程序来启动一个名为myApp的活动.
只要单击硬件摄像头按钮,系统就会启动默认摄像头应用程序.这可能会产生冲突并阻止您的活动.例如,如果您要创建自己的相机应用程序,则可能无法启动,因为默认相机应用程序将使用所有资源.此外,可能还有其他应用程序正在收听同一广播.为防止此调用函数“abortbroadcast()”,this will tell other programs that you are responding to this broadcast.
public class HDC extends broadcastReceiver { @OverrIDe public voID onReceive(Context context, Intent intent) { // Todo auto-generated method stub// Prevent other apps from launching abortbroadcast();// Your Program Intent startActivity = new Intent(); startActivity.setClass(context, myApp.class); startActivity.setAction(myApp.class.getname()); startActivity.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); context.startActivity(startActivity); } }}2) Add below lines to your androID manifest file.<receiver androID:name=".HDC" > <intent-filter androID:priority="10000"> <action androID:name="androID.intent.action.CAMERA_button" /> <category androID:name="androID.intent.category.DEFAulT" /> </intent-filter> </receiver>
以上行将添加到清单文件中,以告知系统您的程序已准备好接收广播消息.
添加此行以在单击硬件按钮时接收推断.
<action androID:name="androID.intent.action.CAMERA_button" />
HDC是在步骤1中创建的类(不要忘记“.”)
<receiver androID:name=".HDC" >
调用“abortbroadcast()”函数以防止其他应用程序响应广播.如果您的应用程序是最后一个接收消息的应用程序怎么办?为了防止这种情况,必须设置一些优先级,以确保您的应用程序在任何其他程序之前收到它.要设置优先级,请添加此行.当前优先级为10000,非常高,您可以根据您的要求进行更改.
<intent-filter androID:priority="10000">
总结 以上是内存溢出为你收集整理的覆盖Android上的硬件按钮全部内容,希望文章能够帮你解决覆盖Android上的硬件按钮所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)