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

MediaPlayer::Android中的声音停止过快,android,android-widget,media-player,listener,audio,Android,Android Widget,Media Player,Listener,Audio,好吧,我已经和这个问题斗争了一段时间了,我有一些音板应用程序,我从来没有遇到过这个问题。我正在开发一个小部件,允许在按下小部件上的按钮时播放声音 我假设我只是没有正确地使用setOnPreparedListener,但基本上是我的一些声音播放正确,而且这些声音很可能会因为缺少单词或音效而切断最后一个明显的部分。下面是我的代码,请让我知道,如果你有任何想法与代码的错误或张贴工作修订 提前准备好 public int onStartCommand(Intent intent, int fla

好吧,我已经和这个问题斗争了一段时间了,我有一些音板应用程序,我从来没有遇到过这个问题。我正在开发一个小部件,允许在按下小部件上的按钮时播放声音

我假设我只是没有正确地使用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;}

这是从一个服务调用的(显然是从onstart命令调用的),但我想对于那些不熟悉某些方法的人来说,我会把它扔掉。

如果你使用的是Android 2.2,那么MediaPlayer至少会切断一些音频文件的最后X%显然会有一些问题。我正在运行的应用程序遇到了这个问题。我还没有发现是否有解决方案。

如果您使用的是Android 2.2,MediaPlayer至少会切断一些音频文件的最后X%显然存在一些问题。我正在运行的应用程序遇到了这个问题。我还没有找到解决方案。

我的调查中还有几个注意事项:至少在我处理的声音文件中,我在使用MediaPlayer播放声音时,末端会被切断,但如果使用声音池播放,同样的声音会正常播放。(不幸的是,如果你像我一样需要知道声音文件的进度,这并没有多大帮助。)此外,在模拟器和一些实际设备上播放时,我的声音会被截断。在Galaxy标签上,他们不知道。我猜三星在标签上做了一些定制工作,但这只是猜测。你确定这个问题只与2.2有关吗?我在这里的2.3设备上也有同样的问题。有关于何时修复的信息吗?我不知道这个问题是否只有2.2。它可能是2.2+。我相信4.0中的音频堆栈发生了一些重大变化,但我不知道这个问题是否得到了解决。我的调查中还有一些注意事项:至少在我正在处理的声音文件中,我在使用MediaPlayer播放声音时有一个末端被切断的问题,但是,如果使用SoundPool,同样的声音可以正常播放。(不幸的是,如果你像我一样需要知道声音文件的进度,这并没有多大帮助。)此外,在模拟器和一些实际设备上播放时,我的声音会被截断。在Galaxy标签上,他们不知道。我猜三星在标签上做了一些定制工作,但这只是猜测。你确定这个问题只与2.2有关吗?我在这里的2.3设备上也有同样的问题。有关于何时修复的信息吗?我不知道这个问题是否只有2.2。它可能是2.2+。我相信4.0中的音频堆栈有一些重大的变化,但我不知道这个问题是否已经解决。