广播接收器在"摄像机"按钮上不接收按键



我正在尝试在我的应用程序中播放一些音调,然后按" camera "按钮做这个简单的步骤。

  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. 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);      
    }
    
  3. 将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。如果您希望应用程序在后台保持执行任务,则使用服务。在这种情况下,您想知道何时发生某些事情,即使您的应用程序当前不在前景中。这就是如何做。

最新更新