2

私はアラームアプリケーションを構築しています。私が今追加している機能の 1 つは、アラームの音量です。ユーザーがアラームを設定しているとき、アラームの音量を で選択できますSeekBar。そのため、アラームが鳴ったら、ユーザーが設定した音量に設定する必要があります。これを行うには、どの特定のアラームが呼び出されたかを知る必要があります。PendingIntentデータベースからのアラームのIDでそれぞれを識別しました。私の問題は、アラームが鳴った後にこの ID を再度取得する方法がわからないことです。

ご覧のとおり、これは PendingIntent を渡すことでそれぞれを識別する方法ですalarm.getID()

PendingIntent pendingAlarmIntent = PendingIntent.getBroadcast(
ChangeAlarmActivity.this, (int)alarm.getID(), alarmIntent, 0);

だから、アラームが鳴ったときに呼び出される私のアクティビティでは、次のようなことをしたい

int id = pendingIntent.getID();
Alarm alarm = database.getAlarm(id);
int volume = alarm.getVolume();

したがって、アラームがオンになった後に呼び出されるアクティビティ内の PendingIntent の一意の識別子を取得するにはどうすればよいですか? つまり、どのアラームが鳴っているのかを知るにはどうすればよいのでしょうか?

4

1 に答える 1

1

まず第一に、私の英語があまり上手ではないことをお許しください。おそらく、この問題の解決策をすでに見つけていると思いますが、私も同じ疑問を持っていて、簡単に答えを見つけることができませんでした。そこで、いろいろ調べた結果、ある方法にたどり着きました。発生したアラームから ID を取得するには、意図的に ID を配置します。

// create intent Intent intent = new Intent(context,MyClass.class); // store id intent.putExtra("id", yourId);

この後、このインテントを使用して PendingIntent を作成し、アラームを設定します。アラームが発生すると、メソッドonReceive(context, intent)は PendingIntent の作成に使用されるインテントを受け取るため、メソッドで ID を取得できます。

// retrieves id long id = intent.getLongExtra("id", -1);

役に立つことを願っています!

于 2014-12-30T20:28:46.287 に答える