【问题标题】:Sounds stopping too soon in MediaPlayer :: Android在 MediaPlayer :: Android 中听起来停止得太早了
【发布时间】:2011-02-02 17:35:20
【问题描述】:

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

我假设我只是没有正确使用 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 调用的),但我想我会把它扔给那些不熟悉某些方法的人。

【问题讨论】:

    标签: android android-widget media-player listener audio


    【解决方案1】:

    如果您使用的是 Android 2.2,MediaPlayer 会切断至少部分音频文件的最后 X% 显然存在一些问题。我正在使用我目前正在开发的应用程序遇到这个问题。没找到有没有解决办法。

    【讨论】:

    • 我的调查中的一些注意事项:至少在我正在使用的声音文件中,我在使用 MediaPlayer 播放声音时遇到了结尾被切断的问题,但声音相同如果使用 SoundPool 播放,则可以正常播放。 (不幸的是,如果您像我一样需要知道声音文件的进度,这不是很有帮助。)此外,在模拟器和某些实际设备上播放时,我的声音会被截断。但在 Galaxy Tab 上却没有。我猜三星在 Tab 上做了一些自定义工作,但这只是猜测。
    • 你确定这个问题只与2.2有关吗?我在这里的 2.3 设备上遇到了同样的问题。有关何时修复此问题的任何信息?
    • 不知道是不是只有2.2这个问题。它可能是2.2+。我相信 4.0 中的音频堆栈发生了一些重大变化,但我不知道这个问题是否已经修复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    相关资源
    最近更新 更多