別のアクティビティでメディア プレーヤーを停止しようとすると、無効な状態の例外「間違った状態で seekTo を実行しようとしています、エラー (-38, 0)」が発生します。解決策は何ですか?
メディア プレーヤーのアクティビティ:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.media);
Thread t = new Thread()
{
public void run()
{
while (isDownloading)
{
if (Data.filenames != null && Data.filenames.size() >= (getIntent() .getExtras().getInt("index") + 1) && Data.filenames.get(getIntent().getExtras() .getInt("index")) != null)
{
try
{
mediaPlayer.setDataSource(Data.filenames.get(getIntent().getExtras().getInt("index")));
mediaPlayer.prepare();
mediaPlayer.start();
isplayed++;
new Thread(onEverySecond).start();
mediaPlayer.setOnCompletionListener(new OnCompletionListener()
{
@Override
public void onCompletion(MediaPlayer mp) {
mediaPlayer.seekTo(0);
btnplay.setImageResource(R.drawable.play);
index = 0;
}
});
boolean isPlaying = mediaPlayer.isPlaying();
if(!isPlaying)
{
mediaPlayer.pause();
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
isDownloading = false;
}
}
}t.start;
}
Second Activity From where I am trying to stop media player:
if (!(MediaPlay1.mediaPlayer == null)) {
MediaPlay1.mediaPlayer.seekTo(MediaPlay1.mediaPlayer.getCurrentPosition());
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
MediaPlay1.mediaPlayer.stop();
MediaPlay1.mediaPlayer.release();
} else {
Log.e("------", "------");
}
if (!(MediaPlay.mediaPlayer == null)) {
MediaPlay.mediaPlayer.stop();
MediaPlay.mediaPlayer.release();
} else {
Log.e("------", "------");
}
Logcat:
MediaPlayer(11694): 間違った状態で seekTo を実行しようとしています: mPlayer=0x2b8270, mCurrentState=0 MediaPlayer(11694): エラー (-38, 0) MediaPlayer(11694): エラー (-38,0)