2011-02-02 161 views
2

好吧,我一直與此戰鬥了一段時間,並有音板應用程序,我沒有遇到這個問題。我正在開發一個小部件,允許聲音在按下小部件上的按鈕時播放。MediaPlayer中的聲音停止過早:: Android

我假設我只是沒有正確使用setOnPreparedListener,但基本上發生了什麼是我的一些聲音播放正確,並且更有可能不會發出聲音會切斷最後一部分通過單詞或音效缺失引人注目。以下是我的代碼,請告訴我,如果您有任何想法代碼有問題或發佈工作版本。

Thanx提前。

public int onStartCommand(Intent intent, int flags, int startId) { 

      /** Get our place holder for quotes & sounds. */ 
      int s = UpdateService.getQuoteNumber(); 

      /** Check if a sound is playing if so... stop and reset it. */ 
      if (mp != null && mp.isPlaying()){mp.stop();mp.reset();} 

      /** Create a new mediaplayer and set looping. */ 
      mp = MediaPlayer.create(this, SoundsClicked.randomSound[s]); 
      mp.setLooping(false); 

      /** Try to prepare the sound/mediaplayer, if not report error & type. */ 
      try {mp.prepare();} 
       catch (IllegalStateException e) {e.printStackTrace();Log.e(Integer.toString(s), "IllegalStateException");} 
       catch (IOException e) {e.printStackTrace();Log.e(Integer.toString(s), "IOException");}    

      /** Check if the sound is prepared, if so play it. */ 
      mp.setOnPreparedListener(new OnPreparedListener() { 
       public void onPrepared(MediaPlayer mp) { 
        mp.start(); 
        while (mp.isPlaying()) {}; 
       } 
      }); 
      return flags;} 

這是從一個服務(顯然從onStartCommand)調用,但想我會扔東西在那裏爲那些不熟悉的一些方法。

回答

0

如果您使用的是Android 2.2,MediaPlayer顯然會切斷至少一些音頻文件的最後X%的一些問題。我正在解決目前正在處理的應用程序的問題。我還沒有找到是否有解決方案。

+0

從我的調查中發現一些注意事項:至少在我正在使用的聲音文件中,當用MediaPlayer播放聲音時,我遇到了結束切斷的問題,但是如果播放聲音SoundPool。 (不幸的是,如果您需要像我一樣知道聲音文件的進度,那麼它不會很有幫助。)另外,在模擬器和某些實際設備中播放時,我的聲音會被截斷。在銀河標籤他們不通過。我猜三星在Tab上做了一些定製工作,但這只是一個猜測。 – 2011-04-04 15:23:15