2011-03-14 45 views
0

播放聲音我已經開始屏幕上的計時器,例如20秒。問題定時器

當剩餘時間爲5秒,我在玩一個蜂鳴聲。 的問題是,聲音正被播放多次(3-4倍),而我需要一個單一的蜂鳴聲。音頻文件的持續時間爲0.09秒。

請找到代碼

public void onTick(long millisUntilFinished) { 

      long timeLeft = millisUntilFinished/1000; 

      if (timeLeft == 5) { 
        playAlertSound(R.raw.beep); 

       } 
    } 

    private MediaPlayer mPlayer; 

    public void playAlertSound(int sound) { 

     MediaPlayer mp = MediaPlayer.create(getBaseContext(), sound); 
     mp.setOnCompletionListener(new OnCompletionListener() { 

      @Override 
      public void onCompletion(MediaPlayer mp) { 
       // TODO Auto-generated method stub 
       mp.release(); 
      } 

     }); 
     // and add the setLooping and setVolume calls here.. 
     mp.setLooping(false); 
     mp.setVolume(1.0f, 1.0f); 
     mp.start(); // to here.. 
} 

下面請提供您的輸入/建議,問題出在哪裏提前

感謝。

親切問候,

回答

0

什麼樣的計時器您使用的是

CB? (可能Handler是更好的方法)。如果你沒有提供細節,很難回答這個問題,但我猜測onTick方法被多次調用。您正在使用的條件將針對millisUntilFinished參數的多個值進行評估。例如,您應該確保onTick每秒僅調用一次。另一種解決方案是添加布爾類型的標誌變量,標誌正在播放的音頻一次。在播放文件之前,您將更改條件以測試此變量是否爲假。

+0

感謝您的答覆。首先,我使用CountDownTimer來啓動計時器。我正在使用擴展CountDownTimer的類。上述源代碼是主要功能。請通知您是否需要其他源代碼以供參考。 – chiranjib 2011-03-14 09:31:04

+0

什麼是countDownInterval?它應該是等於或大於1000 – kgiannakakis 2011-03-14 09:39:53

+0

爲你的洞察力感謝kgiannakakis ...間隔設定爲100造成多個蜂鳴問題第二 – chiranjib 2011-03-14 09:50:46