2012-02-24 12 views
3

これを動作させるのに約2時間を費やしたところです。私はMediaPlayerで再生するビデオを取得することで、決して大したことはありませんでした。私はここで間違って何をしていますか?これは初めての音声を再生し、ビデオは再生しません。そして、2回目に私はIllegalStateExceptionを取得します。私は再問い合わせしようとします。setDataSource。私はstop()release()onCompletionに呼び出しようとしなかった。再生する前にreset()を呼び出そうとした。私はちょうど別のStateExceptions(0,64,128)を取得しました。私はアイデアを使い果たしました。MediaPlayerビデオの問題

private void playVideo() { 
    mMediaPlaying = true; 
    sv.setVisibility(View.VISIBLE); //surfaceview 
    try { 
     if(mp.isPlaying()) { 
      mp.stop(); 
      mp.reset(); 
     } 
     mp.setDisplay(sh); //surfaceholder 
     mp.setOnCompletionListener(this); 
     mp.setOnPreparedListener(this); 

     mp.setDataSource(getBaseContext(), Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.test)); 
     mp.prepare(); 
     //mp.start(); 
    } catch (IllegalArgumentException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (SecurityException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 


@Override 
public void onPrepared(MediaPlayer mp) { 
    Log.d("", "mp prepared"); 
    mp.start(); 

} 

@Override 
public void onCompletion(MediaPlayer arg0) { 
    sv.setVisibility(View.GONE); 
    mp.stop(); 
    mp.release(); 
    mMediaPlaying = false; 
    Log.d("", "Done playing media"); 

} 
+0

[OK]を、私は、if(mp.isPlaying())を削除し、(mp.resetを追加しました)、それはオーディオの最初の時間を果たし、第二に(100,0) "エラー(100,0)" – bwoogie

答えて

0

[OK]を、私は基本的に/貼り付けコピーthis here MediaPlayerの のライフサイクルを見て、それが動作しているようだ呼び出すする必要があります。..最初に再生する以外はまだビデオがありません...しかし、私はエラーを取り除いています:)

3

ビデオを再生したい場合、VideoViewを使用することができます。

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/VideoViewDemo.html

そして、あなたはそのような今後、再生、一時停止、などのビデオを制御し、巻き戻しのMediaControllerを使用することができます。

たとえば、このリンクを確認してください。

http://android-coding.blogspot.in/2011/03/using-videoview-to-play-mp4-from-sdcard.html

+0

私はコントロールを必要としないし、私はあなたが設定することができますOnCompletionListenerが必要ですが、それは動作しないようです... – bwoogie

+0

VideoViewでOncompletionリスナーを使用することができます – John

0

これを試してみてください。

private void playVideo() { 
mMediaPlaying = true; 
sv.setVisibility(View.VISIBLE); //surfaceview 
try { 
    if(mp != null) { 
     mp.stop(); 
     mp.release(); 
    } 
    mp = new MediaPlayer(); 
    mp.setDisplay(sh); //surfaceholder 
    mp.setOnCompletionListener(this); 
    mp.setOnPreparedListener(this); 

    mp.setDataSource(getBaseContext(), Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.test)); 
    mp.prepare(); 
    mp.start(); 
関連する問題