0

当我的应用程序在后台时,我试图播放一些音调,我按下“相机”按钮,因为我正在执行这个简单的步骤。

  1. 创建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();
        }
    }
    
  2. 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);      
    }
    
  3. 将广播接收器添加到 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>
    

启动应用程序后,按菜单按钮,应用程序进入后台,按相机按钮后没有任何反应,仅打开相机应用程序。也许我做错了什么或者我错过了什么?

我使用的是 Android 2.3.4 操作系统版本的索尼爱立信 XPeria Arc 手机。

4

2 回答 2

1

如果您使用第 3 步,请删除<category>元素中的元素。<receiver>该广播可能没有类别——您通常只看到Intent用于 的对象上的类别startActivity()

请注意,您的步骤 #2 没有使用其指定类别IntentFilter,这很好。

于 2012-11-05T21:17:36.850 回答
0

在这里,阅读Android Services。如果您希望应用程序在后台继续执行任务,则使用服务。在这种情况下,即使您的应用程序当前不在前台,您也想知道什么时候发生。这是如何做到的。

于 2012-11-05T19:21:37.700 回答