MediaPlayer中的声音停止过早:: Android

问题描述:

好吧,我一直与此战斗了一段时间,并有音板应用程序,我没有遇到这个问题。我正在开发一个小部件,允许声音在按下小部件上的按钮时播放。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)调用,但想我会扔东西在那里为那些不熟悉的一些方法。

如果您使用的是Android 2.2,MediaPlayer显然会切断至少一些音频文件的最后X%的一些问题。我正在解决目前正在处理的应用程序的问题。我还没有找到是否有解决方案。

+0

从我的调查中发现一些注意事项:至少在我正在使用的声音文件中,当用MediaPlayer播放声音时,我遇到了结束切断的问题,但是如果播放声音SoundPool。 (不幸的是,如果您需要像我一样知道声音文件的进度,那么它不会很有帮助。)另外,在模拟器和某些实际设备中播放时,我的声音会被截断。在银河标签他们不通过。我猜三星在Tab上做了一些定制工作,但这只是一个猜测。 – 2011-04-04 15:23:15