开发者

Best way to play sound on a timed interval?

I开发者_开发知识库 have an Android app which needs to play a sound resource on a timed interval, say every 120 seconds.

I know how to access the sound resources and play them, however it's time timer part I'm not sure of. What's the best approach?


I ended up ditching the Timer approach and used a Handler instead after stumbling upon an example at android-labs.

So, instead of spawning the Timer and TimerTask in my Activity's onCreate, I declared this private Handler with in-line Runnable:

private Handler _playRandomSoundHandler = new Handler();
private Runnable _playRandomSoundTask = new Runnable() {
    public void run() {
        SoundManager.playRandom();
        _playRandomSoundHandler.postDelayed(_playRandomSoundTask, Prefs.getDelayInMilliseconds(getApplicationContext()));
    }
};

Also, I had to add code to my Activity's onResume and onPause:

@Override
protected void onResume() {
    super.onResume();
    _playRandomSoundHandler.postDelayed(_playRandomSoundTask, Prefs.getDelayInMilliseconds(this));
}

@Override
protected void onPause() {
    super.onPause();
    _playRandomSoundHandler.removeCallbacks(_playRandomSoundTask);
    SoundManager.stop();
}

This approach seems to work great.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜