检查Android MediaPlayer是否已初始化

时间:2013-01-17 02:14:24

标签: android initialization android-mediaplayer

如何检查MediaPlayer对象是否已初始化?有没有像:

MediaPlayer mp;
if(mp.isInitialized())
    Log.v("Test", "mp has been initialized. :D ");
else
    Log.v("Test", "mp is NOT yet initialized. :( ");

当然,我检查了API文档并且没有这样的方法,但有类似的方法吗?

我正在考虑只是通过我的代码并抓住抛出的Exception如果它曾经触发,但我发现它不那么优雅。 :P

修改

我的代码打算像这样:

MediaPlayer mp;

// Lorem ipsum dolor sit amet consectetur adipisicing...

if(mp.isInitialized)
{
    mp.stop();
}

3 个答案:

答案 0 :(得分:4)

当方法声明它抛出异常时,当您使用该方法时,您有两个选项。声明你的方法也可以使用throws关键字或catch异常来抛出异常(通过降低可能性)。你必须做其中一件事。

即使文档包含isInitialized()方法,如果方法仍在抛出IllegalStateException,您仍必须通过这两种方法之一处理它们。

此外,捕捉 优雅,它可以让你的应用程序不崩溃(崩溃不优雅),让你知道出了什么问题。如果您有很多媒体播放器调用(例如在同一方法中一个接一个),您可以将它们全部放在一个try/catch块下。

答案 1 :(得分:1)

两种可能的想法:

  1. 根据您的“预期”代码,为什么不能使用isPlaying()方法代替所需的isInitialized()?你是否只想打电话给mp.stop(),如果它真的在玩什么?

  2. 如何将mp.stop()或其他内容放入OnPreparedListener

答案 2 :(得分:0)

使用try并捕获mediaPlayer方法调用,如果抛出IllegalStateException则不会初始化

try{
   mediaPlayer.isPlaying()
}catch(IllegalStateException e){
   //media player is not initialized
}