5

別のアクティビティでメディア プレーヤーを停止しようとすると、無効な状態の例外「間違った状態で 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)

4

0 に答える 0