だから私は単純な音楽プレーヤーに取り組んでいます。音楽プレーヤーは、名前が示すように、曲を再生し、再生を一時停止し、次の曲に進み、前の曲に戻り、再生を完全に停止できます。曲を再生すると、アーティスト名と曲名とともに通知が表示されます。この通知には、停止、一時停止、次の 3 つのボタン (アクション) もあります。
私が問題を抱えているのは、いずれかのアクションがクリックされたときに、アクションに関連する再生コントロールがトリガーされるようにすることです。それを行う方法がまったくわかりません。私は Android 通知を検索しました: http://developer.android.com/guide/topics/ui/notifiers/notifications.htmlしかし、通知アクションに関する情報を明確にしていないか、あまりにも多くの情報を提供していません。
たとえば、簡単なアクションを次に示します (これは、通知の [次へ] ボタンのクリックに関連付ける必要があります:注:以下で説明するすべてのコードは、次のパッケージの下に記述されています: :プレイヤーのアクティビティ
public void nextSong() {
if (position == songs.size() -1) {
Toast.makeText(this, "No more songs on queue", Toast.LENGTH_SHORT).show();
if(mPlayer.isPlaying()) {
return;
}
else {
buttonPlay.setImageResource(R.drawable.button_play);
}
return;
}
else {
position++;
playSong(songs.get(position));
}
}
これが私がやろうとしたことです:
Intent nextIntent = new Intent(KEY_NEXT);
PendingIntent nextPendingIntent = createPendingResult(0, nextIntent, 0);
NextIntent のアクションは次のとおりです。
public static final String KEY_NEXT = "com.deadpixels.light.player.PlayerActivity.nextSong";
そして、それを addAction() 経由で通知に追加します。
mBuilder.addAction(R.drawable.not_action_next, "Next", nextPendingIntent);
他に何を試すことができるか知っていますか?上で説明したことを使用しても何も起こらず、通知が表示され、3 つのアクション ボタンがありますが、それらをクリックしても何も起こりません。
ある時点で、アクション名を使用してインテント フィルターを追加すればよいのではないかと考えましたが、それらはすべて同じ名前空間にあるのではないかと考えました。