MediaPlayerでerror (1, -2147483648)が出る件

エラーが発生しても数字をボソっとlogに呟くだけで有用な情報を教えてくれないことに定評があるAndroidのMediaPlayerですが、Player画面を終了しようとすると表題のエラーがこそっと出ていることがあります。

大抵、再生の停止時なので、あまり影響がなく放っておいたのですが、さてMediaPlayerを引き続き使おうか、と思うとErrorのStateに落ちていて結構困ります。

で、結論からいうと、surfaceDestroyed()される際に、MediaPlayerにsetDisplay()されているSurfaceHolderをdetachしてあげれば良さげです。

なので、こんな感じに。

	@Override
	public void surfaceDestroyed(SurfaceHolder holder) {
		Log.d(TAG, "surfaceDestroyed");
		mediaPlayer.setDisplay(null);
	}