检查Android MediaPlayer是否已初始化

检查Android MediaPlayer是否已初始化,android,initialization,android-mediaplayer,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文档,没有这样的方法,但是有类似的方法吗 我正在考虑检查我的代码,只要捕捉抛出的异常(如果它触发的话),但我发现这是不

如何检查
MediaPlayer
对象是否已初始化?是否有类似于:

MediaPlayer mp;
if(mp.isInitialized())
    Log.v("Test", "mp has been initialized. :D ");
else
    Log.v("Test", "mp is NOT yet initialized. :( ");
当然,我查看了API文档,没有这样的方法,但是有类似的方法吗

我正在考虑检查我的代码,只要捕捉抛出的异常(如果它触发的话),但我发现这是不合法的P

编辑:

我的代码是这样编写的:

MediaPlayer mp;

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

if(mp.isInitialized)
{
    mp.stop();
}
两种可能的想法:

  • 根据您的“预期”代码,为什么不能使用
    isPlaying()
    方法代替所需的
    isInitialized()
    ?如果它确实在播放某些东西,难道你不想只调用
    mp.stop()

  • 把mp.stop()或其他东西放在


  • 当一个方法声明它抛出异常时,当您使用该方法时,您有两个选项。使用
    throws
    关键字声明您的方法也抛出异常(可以说是推卸责任),或者
    catch
    抛出异常。你必须做其中一件事

    即使文档中包含一个
    isInitialized()
    方法,如果这些方法仍然抛出
    IllegalStateException
    s,您仍然必须通过这两个方法之一来处理它们


    此外,抓取是优雅的,它允许你的应用程序不会崩溃(崩溃不是优雅的),并让你知道有什么不对劲。如果您有很多媒体播放器调用(例如在同一方法中一个接一个地调用),您可以将它们全部放在一个
    try/catch
    块下。

    在媒体播放器方法调用周围使用try-and-catch,如果抛出了IllegalStateException,则不会初始化它

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

    如果抛出的
    异常被声明为由该方法抛出,您不需要捕获它吗?您好,@A--C。请查看我的编辑。我的代码本来打算这样做的。我想我可以通过这种方式避免异常。不,我的意思是,
    stop()
    抛出异常
    IllegalStateException
    ,所以你要么捕获异常,要么声明抛出异常的方法(通过
    抛出)。所以,没有办法检查它是否初始化,而且你最好还是捕获异常。哦,明白了,我明白你的意思。请提供答案,以便我能接受。谢谢,@A--C!:德洛,本·雅库本。根据API文档,
    isplay()
    如果内部播放器引擎尚未初始化或已释放,也会调用
    IllegalStateException
    。这就是我不考虑的原因。