私はAndroidを学んでおり、トグルボタン(再生/一時停止)とボタン(次へ)の2つのボタンを持つアクティビティを作成しました。私は「次へ」を押すとサイクリングしたい2曲があります。私は私が私の活動でのonClickをオーバーライド配列MediaPlayer:クライアント側でファイルを開くことができませんでした。エラー(-38,0)以上
int [] songs={R.raw.song1,R.raw.song2};
を持っています。最初の曲はうまく再生されます。しかし、次を押した後、私は次のエラーを取得:
は、クライアント側で開いているファイルは、サーバ側
E/MediaPlayerの(3107)をしようとしていませんでした:状態4
Eで呼び出さスタート/ MediaPlayerの(3107):エラー(-38、0)
E/MediaPlayerの(3107):エラー(-38,0)
E/MediaPlayerの(3107):エラー(1、-2147483648)
E/MediaPlayerの(3107):エラー(1、-2147483648)のonCreate(バンドル...)で
、
if(mp!=null) mp.release();
mp=MediaPlayer.create(this, songs[count]);
ここに私のonClick(ビューV)メソッドです:
public void onClick(View view) {
Log.v(TAG,"ID:"+view.getId());
switch (view.getId()) {
case R.id.playerbutton: //ToggleButton
if(state==0) {
mp.start();
state=1;
}
else if(state==1) {
state=0;
mp.pause();
}
break;
case R.id.next: //Next button
Log.v(TAG,"Next button pressed!");
count=(count+1)%2; //Have only two songs
mp.reset();
try {
mp.setDataSource(this, Uri.parse("android.resource://com.example.myfirstapp"+songs[count]));
mp.setOnPreparedListener(this);
mp.prepareAsync();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mp.start();
break;
}
}
は、
基本的に、私は次のボタンを押すたびにこれをやっています: -reset mp(ie MediaPlayerのオブジェクト) がsetOnPreparedListener
またはprepareAsync
を使用すると、次の曲 -start MP
を再生するための新しいデータソースを-set、私はthis SO questionをお読みください。
どこが間違っていますか?
[Android MediaPlayerの問題:「エラー(-38,0)」と「状態1で停止しました」]の重複が可能です。(http://stackoverflow.com/questions/11913108/android-mediaplayer-problems-error- 38-0-stop-in-state-1) – rds