アプリケーションから再生する必要がある一連の音声アナウンスのオーディオファイルの長さを取得する必要があります。私はリソースとしてオーディオファイルを追加し、彼らはうまく動作します。以下のサンプルコードは実際には意図した目的に完全に機能します:オーディオファイルの再生時間を返します。ここでAndroid:mediaplayerは処理されないイベントで去りました
はコードです:
float getDurationOfAudioResource(LocationEnum loc, Context context){
float duration = 0;
try {
MediaPlayer mp;
mp = MediaPlayer.create(context, getAudioResource(loc));
duration = mp.getDuration();
mp.release();
mp = null;
}
catch (IllegalStateException e) {e.printStackTrace(); logError(25, "TestDescItem:Fault::Could not open mediaplayer object with audio resource.");}
return duration;
}
ここで奇妙なことです。このコードは、特定のテストのオーディオ命令セットを準備するメインアクティビティで呼び出されます。このアクティビティにはエラーはありません。しかし、Secondアクティビティが呼び出されるとすぐに、私はlogcatで長いエラー文字列を取得します。
03-07 13:23:43.820: I/ActionLogger(21435): GenTest_Info_Test #0 successfully created.
03-07 13:23:43.830: I/ActionLogger(21435): GenTest_Info_Test #1 successfully created.
03-07 13:23:43.840: I/ActionLogger(21435): GenTest_Info_Test #2 successfully created.
03-07 13:23:43.850: I/ActionLogger(21435): GenTest_Info_Test #3 successfully created.
<snip>
03-07 13:23:43.910: I/ActionLogger(21435): GenTest_Info_all tests successfully created.
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.270: W/MediaPlayer(21435): mediaplayer went away with unhandled events
<snip>
メインアクティビティ(エラーなし)の終了まで、および第2アクティビティの最初の行から1ステップアップしました。エラーは間違いなくアクティビティの間にスローされます。
また、tryブロックの8行をコメントアウトすると(したがってゼロだけを返す)、logcatエラーは回避されます。私が8行を復元すると、エラーが戻ってきます。 私はドキュメントを掘り下げてウェブを検索しました。メディアプレーヤオブジェクトを正しく構築、解放、破棄していると思います。なぜエラーが表示されるのかわかりません。つまり、私は間違ったことをしているに違いない。何か案は?
おかげで、
ケビン
素晴らしいです。それはそれを修正!ありがとうございました! – Hephaestus
それは何をしますか? – Casebash
リリースにより、私のビデオビューがその後にIllegalStateExceptionでクラッシュする... – Ron