5

Android 用のメディア プレーヤー アプリケーションを開発しています。このアプリケーションでは、アラーム通知を処理する必要があり、それに基づいて再生を一時停止します。アラームがスヌーズまたは解除されると、再生が再開されます。

アラームの処理についてよく調べましたが、コードを介してアラーム通知を有効にし、インテントを設定して処理する方法が見つかりました。ただし、アラーム通知部分を処理するだけでどこに見つけることができませんでした。アラームをオンに設定する必要はありません。ユーザーが設定できた可能性があり、プログラムで設定する必要もありません。必要なのは、その通知を処理することだけです。

これに関するアイデアは非常に役立ちますか?

ありがとう、アシーシュ

4

3 に答える 3

6

HI Asheesh Vashishtha、

これについては訂正してください。ただし、目覚まし時計であっても、他のアプリケーションがアクティブになると、アクティビティは確実にバックグラウンドで実行されます。だから私はあなたがあなたのコードのビットを置くためにOnPauseと関数をオーバーライドすることができると思います。OnResumeスヌーズまたはその他の事柄に関する限り、それらはすべてアラームアクティビティが破棄され(または一時停止され、それについてよく知らない)、アクティビティが再開されます。だから、それはあなたにとって心配事ではないでしょう!

お役に立てれば...

于 2010-06-17T05:27:13.963 に答える
1

メディアプレーヤーの開発中に、同様の状況に遭遇しました。私の解決策は、AudioManager のOnAudioFocusChangeListener.

そのようにクラスにリスナーを実装します

public class VideoPlayerHelper implements AudioManager.OnAudioFocusChangeListener {

次に、オーバーライドしますonAudioFocusChange

@Override
public void onAudioFocusChange(int focusChange) {
    switch (focusChange) {

        //Just fall through by omitting break
        case AudioManager.AUDIOFOCUS_LOSS:
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
            LogUtil.log(LogUtil.DEBUG, TAG, "AUDIOFOCUS_LOSS or AUDIOFOCUS_LOSS_TRANSIENT"); //Custom logging class
            if (isPlaying()) {
                pause();
                mAudioManager.abandonAudioFocus(VideoPlayerHelper.this);
            }
            break;
        case AudioManager.AUDIOFOCUS_GAIN:
            LogUtil.log(LogUtil.DEBUG, TAG, "AUDIOFOCUS_GAIN"); //Custom logging class
            break;
        default:
            break;
    }
}

ここでの鍵はAudioManager.AUDIOFOCUS_LOSS_TRANSIENT. これは、目覚まし時計が鳴ったときにリスナーが受信し続けたコードでした(The Note 5で)。そのため、メディア プレーヤーを一時停止し、オーディオ フォーカスを手放すのAudioManager.AUDIOFOCUS_LOSS_TRANSIENTと同じように処理しました。AudioManager.AUDIOFOCUS_LOSS

メディア プレーヤーをセットアップするとき、データ ソースを追加する前に次の行を追加しました。

player.setAudioStreamType(AudioManager.STREAM_MUSIC);

メディア プレーヤーを起動するためのコードにもこの行が含まれていることを確認してください (onResumeアプリがバックグラウンドで動作しているときにアラームが鳴った場合に備えて、開始コードとコードに含まれています)。

mAudioManager.requestAudioFocus(VideoPlayerHelper.this, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);

その行は、目覚まし時計を閉じた後に再生ボタンを押したときにオーディオフォーカスを取り戻すのに役立ちます.

また、メディア プレーヤーを使い終わったら、オーディオ フォーカスをオフにする必要があります。このコード行をonStopandonDetachメソッドに入れました。

mAudioManager.abandonAudioFocus(VideoPlayerHelper.this);

思ったほど多くの設定は必要なく、予期しないオーディオ (目覚まし時計やタイマーが鳴るなど) が発生したときにいつでもメディア プレーヤーを調整できます。

于 2015-10-05T19:32:18.870 に答える
1

私の知る限り、他のサードパーティの目覚まし時計について通知されるのと同じように、目覚まし時計アプリケーションが何をするかについて通知を受ける方法はありません.

AlarmManagerおそらくあなたが読んでいたことは、目覚まし時計アプリケーションと同じではないことに注意してください。

ごめん!

于 2010-04-26T18:05:15.807 に答える