我正在尝试在我的应用程序处于后台时播放一些音调,然后按“ 相机 ”按钮,我正在执行这个简单的步骤。
创建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();
}
}
在BrodcastReceiver
方法中注册onCreate
。
@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>
启动我的应用程序后,按菜单按钮,应用程序进入后台,按下相机按钮后没有任何内容,只打开相机应用程序。也许我做错了什么或者我错过了什么?
我使用的是索尼爱立信XPeria Arc手机和Android 2.3.4操作系统版本。
答案 0 :(得分:1)
如果您使用的是第3步,请删除<category>
元素中的<receiver>
元素。该广播可能没有类别 - 您通常只能看到用于Intent
的{{1}}个对象的类别。
请注意,您的步骤#2未指定具有startActivity()
的类别,这很好。
答案 1 :(得分:0)
在这里,请阅读Android Services。如果您希望应用程序在后台执行任务,则使用服务。在这种情况下,即使您的应用程序当前不在前台,您也想知道什么时候发生。这是怎么做的。