我正在尝试在我的应用程序中播放一些音调,然后按" camera "按钮做这个简单的步骤。
-
创建
BroadcastReceiver
类public class CameraButtonListener extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { ToneGenerator tone = new ToneGenerator(AudioManager.STREAM_DTMF, 100); tone.startTone(0,2000); abortBroadcast(); } }
-
在
onCreate
中注册BrodcastReceiver
。@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MediaButtonBrodcastReceiver receiver = new MediaButtonBrodcastReceiver(); IntentFilter filter = new IntentFilter(Intent.ACTION_CAMERA_BUTTON); filter.setPriority(25645895); registerReceiver(receiver,filter); }
-
将Brodcast接收器添加到Android清单中。
<receiver android:enabled="true" android:exported="true" android:name=".CameraButtonListener"> <intent-filter android:priority="25645895"> <action android:name="android.intent.action.CAMERA_BUTTON" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter>
启动应用程序后,然后按菜单按钮,然后将应用程序访问背景,然后按下相机按钮,而没有heppens,仅打开相机应用程序。也许我做错了什么或错过了什么?
我将索尼爱立信Xperia Arc Phone与Android 2.3.4 OS版本。
如果使用步骤#3,请摆脱<receiver>
元素中的<category>
元素。该广播可能没有类别 - 您通常仅在用于startActivity()
的Intent
对象上看到类别。
请注意,您的步骤#2没有用其IntentFilter
指定类别,这很好。
在此处阅读Android Services。如果您希望应用程序在后台保持执行任务,则使用服务。在这种情况下,您想知道何时发生某些事情,即使您的应用程序当前不在前景中。这就是如何做。