自r10以来,MediaPlayer不再在仿真器上工作了?

时间:2011-03-10 12:53:45

标签: android android-emulator

protected MediaPlayer _mediaPlayer;  

protected void playFromResource(int resId)     
    {     
    if (_mediaPlayer != null)         
        {         
        _mediaPlayer.stop();         
        _mediaPlayer.release();
        }     
    _mediaPlayer = MediaPlayer.create(this, resId);
    _mediaPlayer.start();
    }  

此代码曾用于在模拟器和设备上正常工作。从一段时间以来(我认为自从我更新到ADT r10以来)它只适用于设备。在模拟器上没有声音,当应用程序通过on _mediaPlayer.release()时(第二次调用该函数)应用程序冻结。我通过将stop()release()替换为reset()来保持应用程序崩溃,但它无法解决主要问题:模拟器上没有声音。

日志文件在调用start()之后显示了一堆这些(仅在模拟器上)

  

03-09 19:14:30.716:WARN / AudioTrack(34):obtainBuffer超时(是   CPU挂钩?)0x1afb8 user = 00001e00,server = 00000600

任何线索????

5 个答案:

答案 0 :(得分:11)

我的MacBook Pro出现了这个问题,发现我必须在启动模拟器之前关闭蓝牙。

答案 1 :(得分:8)

我在mac os上也看到了这个问题。在我的情况下,当您为模拟器启用“快照”时会发生这种情况 http://code.google.com/p/android/issues/detail?id=14953
您必须删除模拟器并创建一个没有启用“快照”的新模拟器。

答案 2 :(得分:4)

看起来问题只出在我的电脑上。我只是在另一台计算机上试用它,它工作正常。当我升级到ADT的r10时,我遇到了一些问题。也许我的开发设置有问题。

答案 3 :(得分:0)

请务必阅读MediaPlayer状态图,并在关闭MediaPlayer对象时执行所有请求的操作;如果您没有停止,重置并重新发布它,下次您尝试使用它时,它将处于不连贯状态,因此您无法启动它。

详情: http://developer.android.com/reference/android/media/MediaPlayer.html

答案 4 :(得分:0)

对于我来说,手动启动仿真器很有帮助。

emulator程序可以在android-sdk/tools/中找到。

因此,最终命令将类似于:

android-sdk/tools/emulator -avd my_cool_emulator_name