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. methodeに登録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. アンドロイドマニフェストにブロドキャストレシーバーを追加します。

    <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>
    

アプリケーションを起動した後、メニューボタンを押すとアプリケーションがバックグラウンドに移動します。カメラボタンを押しても何も起こらないと、カメラアプリケーションのみが開きます。多分私は何か間違ったことをしているのか、何かを逃したのですか?

私はAndroid2.3.4OSバージョンでSonyEricssonXPeriaArc電話を使用しています。

4

2 に答える 2

1

手順3を使用している場合は、<category>要素内の要素を削除します。<receiver>そのブロードキャストにはおそらくカテゴリがありません。通常、にIntent使用されるオブジェクトのカテゴリのみが表示されますstartActivity()

ステップ2では、カテゴリを指定していないことに注意してくださいIntentFilter。これは問題ありません。

于 2012-11-05T21:17:36.850 に答える
0

ここでは、 Androidサービスについて読んでください。アプリケーションがバックグラウンドでタスクを実行し続けるようにする場合は、サービスが使用されます。この場合、アプリケーションが現在フォアグラウンドにない場合でも、いつ何かが発生するかを知りたいと思います。これがその方法です。

于 2012-11-05T19:21:37.700 に答える