1

アラームアプリが動作していますが、ユーザーが「確認されるまでアラームを連続して再生する」と「アラーム音を一度再生する」のいずれかを選択できる機能を追加したいと考えていました。

次に、オプションで削除できる何らかの「繰り返し」フラグが表示されることを期待して、アラームを鳴らすコードを調べましたが、何もありませんでした。では、アラーム音を一度だけ再生するにはどうすればよいですか?

私の既存のコードは次のようになります。

private void playSound(Context context, Uri alert) 
{
    mMediaPlayer = new MediaPlayer();
    try 
    {
        mMediaPlayer.setDataSource(context, alert);
        final AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
        if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0)
        {
            mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
            mMediaPlayer.prepare();
            mMediaPlayer.start();
        }
    } 
    catch (IOException e) 
    {
        // oops!
    }
}
4

1 に答える 1

3

実際には、各アラーム音には、サウンドをループさせる ANDROID_LOOP という名前の FLAG があります。残念ながら、MediaPlayer.setLooping(false) を使用しても、そのフラグを変更することはできません。ただし、一定時間後に手動でプレーヤーを停止することはできます。たとえば、 getDuration はサウンドの長さを示します。

int duration = mMediaPlayer.getDuration();

Runnable stopSoundRunnable = new Runnable() {

            @Override
            public void run() {
                  mMediaPlayer.stop();
            }
        };

mSoundHanlder.postDelayed(stopSoundRunnable, duration);
于 2012-12-09T14:56:34.470 に答える