0

我想在播放声音剪辑的同时每 5 秒将声音提高一级。下面是我的代码:-

MediaPlayer player;
        player=MediaPlayer.create(this, R.raw.alarm);
        player.setLooping(true);

有什么方法可以让我每 5 分钟跟踪一次。我怎样才能做到这一点?

4

1 回答 1

1

我认为您可以使用 java 实现这一点TimerTask,这是一个示例代码,未经测试,但无需大修改即可工作:

基本上你每 5 秒开始一个任务,在你提升你的声音级别的run()功能中,当你到达时你调用停止任务。TimerTaskmaxSoundLevelcancel()

//Put this in global
int REFRESH_INTERVAL = 5 * 1000; //5 seconds
int maxSoundLevel = 10; // Number of loop to get to max level
int curSoundLevel = 0; //Start at 0 volume level

//Put this after you started the sound
Timer timer = new Timer();
timer.scheduleAtFixedRate(new MyTimerTask(), 0, REFRESH_INTERVAL);

//Put this after your method
private class MyTimerTask extends TimerTask{
    public void run() {
       if(curSoundLevel < maxSoundLevel)
       {
           float logLevel = (float)(Math.log(maxSoundLevel-curSoundLevel)/Math.log(maxSoundLevel));
           yourMediaPlayer.setVolume(1-logLevel);
           curSoundLevel ++;
        }
        else {
            this.cancel();
        }
    }
}

如果您有更多问题,请随时问我。

于 2013-09-26T10:54:30.367 回答