Me encontré con su problema, Skyler.
Estás en la correcta. La documentación no muestra estados inválidos para mediaPlayer.reset(), pero esa no es la primera inexactitud en la documentación.
Lo que noté es que la lista de estados VÁLIDOS no dice "Cualquiera"; enumera cada estado específico excepto dos: preparación y finalización.
Experimenté, pero no pude causar que IllegalStateException se lanzara en mis intentos de llamar a release() mientras que el MediaPlayer está en el estado de Preparación (usando prepareAsync()). No garantizaré que no ocurra, pero no podría hacerlo realidad. Lo que hice notar en este ejemplo fueron los siguientes mensajes de registro:
04-11 11:41:54.740: E/MediaPlayer(4930): error (1, -2147483648)
04-11 11:41:54.748: E/MediaPlayer(4930): Error (1,-2147483648)
Sí, ambos aparecen mensajes de error, uno después del otro - uno con minúscula "error" y una con mayúscula "error", pero sin Se lanza una excepción.
Sin embargo, si llamo reset() después de la liberación(), entonces me sale el error:
04-11 11:45:05.232: E/AndroidRuntime(5046): FATAL EXCEPTION: main
04-11 11:45:05.232: E/AndroidRuntime(5046): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.helloandroid/com.android.helloandroid.HelloAndroidActivity}: java.lang.RuntimeException: java.lang.IllegalStateException
04-11 11:45:05.232: E/AndroidRuntime(5046): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1696)
04-11 11:45:05.232: E/AndroidRuntime(5046): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1716)
04-11 11:45:05.232: E/AndroidRuntime(5046): at android.app.ActivityThread.access$1500(ActivityThread.java:124)
04-11 11:45:05.232: E/AndroidRuntime(5046): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968)
04-11 11:45:05.232: E/AndroidRuntime(5046): at android.os.Handler.dispatchMessage(Handler.java:99)
04-11 11:45:05.232: E/AndroidRuntime(5046): at android.os.Looper.loop(Looper.java:123)
04-11 11:45:05.232: E/AndroidRuntime(5046): at android.app.ActivityThread.main(ActivityThread.java:3806)
04-11 11:45:05.232: E/AndroidRuntime(5046): at java.lang.reflect.Method.invokeNative(Native Method)
04-11 11:45:05.232: E/AndroidRuntime(5046): at java.lang.reflect.Method.invoke(Method.java:507)
04-11 11:45:05.232: E/AndroidRuntime(5046): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-11 11:45:05.232: E/AndroidRuntime(5046): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-11 11:45:05.232: E/AndroidRuntime(5046): at dalvik.system.NativeStart.main(Native Method)
04-11 11:45:05.232: E/AndroidRuntime(5046): Caused by: java.lang.RuntimeException: java.lang.IllegalStateException
04-11 11:45:05.232: E/AndroidRuntime(5046): at com.android.helloandroid.HelloAndroidActivity.crashMediaPlayer(HelloAndroidActivity.java:423)
04-11 11:45:05.232: E/AndroidRuntime(5046): at com.android.helloandroid.HelloAndroidActivity.onCreate(HelloAndroidActivity.java:87)
04-11 11:45:05.232: E/AndroidRuntime(5046): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-11 11:45:05.232: E/AndroidRuntime(5046): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1660)
04-11 11:45:05.232: E/AndroidRuntime(5046): ... 11 more
04-11 11:45:05.232: E/AndroidRuntime(5046): Caused by: java.lang.IllegalStateException
04-11 11:45:05.232: E/AndroidRuntime(5046): at android.media.MediaPlayer._reset(Native Method)
04-11 11:45:05.232: E/AndroidRuntime(5046): at android.media.MediaPlayer.reset(MediaPlayer.java:1112)
04-11 11:45:05.232: E/AndroidRuntime(5046): at com.android.helloandroid.HelloAndroidActivity.crashMediaPlayer(HelloAndroidActivity.java:421)
04-11 11:45:05.232: E/AndroidRuntime(5046): ... 14 more
Así conjetura de la tinta moderna era correcta. MediaPlayer.reset() arroja IllegalStateException en el estado End (que ocurre después de que se llama a release()).
En mi caso, descubrí que estaba llamando a release() en onPause(), pero no hice nada para inicializar nuevamente MediaPlayer en onResume(). Por lo tanto, estaba en el estado Final cuando llamé a reset();
por http://developer.android.com/reference/android/media/MediaPlayer.html,
Once the MediaPlayer object is in the End state, it can no longer be used and there is no way to bring it back to any other state.
Eso significa que necesita para crear el MediaPlayer de nuevo, comenzando con MediaPlayer = new MediaPlayer() o uno de los métodos mediaPlayer.onCreate(). O tenga cuidado cuando llame al lanzamiento().
Hm, parecía que estaba confundiendo el 'MediaPlayer' con otro tema. Perdon por la confusion. :) – Wroclai