2

如何检查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();
}
4

3 回答 3

5

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

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

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

于 2013-01-17T02:44:57.927 回答
2

在 mediaPlayer 方法调用周围使用 try and catch ,如果抛出 IllegalStateException 则未初始化

try {
   mediaPlayer.isPlaying();
} catch(IllegalStateException e) {
   // media player is not initialized
}
于 2018-02-07T00:04:24.433 回答
0

两种可能的想法:

  1. 根据您的“预期”代码,为什么不能使用该isPlaying()方法代替所需的isInitialized()mp.stop()如果它实际上正在播放某些东西,您不是只想打电话吗?

  2. 将 mp.stop() 或任何内容放在OnPreparedListener中怎么样?

于 2013-01-17T02:32:50.397 回答