好吧我现在已经和它斗争了一段时间并且有我没有遇到这个问题的音板应用程序。我正在开发一个小部件,允许在按下按钮时播放声音窗口小部件。
我假设我只是没有正确使用setOnPreparedListener,但基本上发生的事情是我的一些声音正确播放并且更有可能声音将切断最后一部分,通过单词或声音效果丢失而引人注目。以下是我的代码,如果您知道代码有什么问题或发布工作版本,请告诉我。
提前完成。
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 :(得分:0)
如果您使用的是Android 2.2,那么MediaPlayer显然会出现一些问题,这些问题会导致至少某些音频文件的最后X%被截断。我正在使用我正在处理的应用程序来解决这个问题。我还没有找到是否有解决方案。