2011-07-26 4 views
2

OnCreateメソッドでビデオを再生するには?私はそのコードに続いて使用しました。しかし、ビデオは再生されません。ボタンのクリックイベントでこのコードを使用した場合、これは有効です。OnCreateメソッドでビデオを再生するには?

私のOnCreateメソッド: -

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);  
    getWindow().setFormat(PixelFormat.UNKNOWN); 
    surfaceView = (SurfaceView) findViewById(R.id.surfaceview); 
    surfaceHolder = surfaceView.getHolder(); 
    surfaceHolder.addCallback(this); 
    surfaceHolder.setFixedSize(176, 144); 
    surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
    mediaPlayer = new MediaPlayer(); 
    mediaPlayer.isLooping(); 
    playvideo(); 
} 

マイPlayVideo機能: - 事前に

public void playvideo() { 
    String stringPath = "/sdcard/video.mp4"; 

    if (mediaPlayer.isPlaying()) { 
     mediaPlayer.reset(); 
    } 

    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    mediaPlayer.setDisplay(surfaceHolder); 

    try { 
     mediaPlayer.setDataSource(stringPath); 
     mediaPlayer.prepare(); 
    } catch (IllegalArgumentException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    mediaPlayer.start(); 
} 

感謝。

+0

Android VOIP SIPの機能に問題がありました。問題は、libaryをロードしてオブジェクト/ロードデータを作成するのに時間がかかることでした。私は、ワーカースレッドを作成し、4秒間スリープ状態にして、私の呼び出しを開始したスレッド(あなたの場合はビデオ)でメソッドを実行することで解決しました。たぶんこれは、幸運を助けます。 –

答えて

0

playVideo()を呼び出したときにサーフェスが必要なサーフェスが作成されていないため、onCreateでビデオを再生できません。

ビデオ再生作業を取得するには、次の

  1. は、あなたの活動のSurfaceHolderコールバックを実装行う必要があります。
  2. サーフェスが作成されると、surfaceCreated()が呼び出され、サーフェスホルダーのインスタンスが取得されます。これでplayVideo(surfaceHolderのインスタンス)を呼び出すことができます。 playVideo()の内部でサーフェスを取得し、メディアプレーヤーインスタンスに設定します。

Shash

2

あなたがのonCreateからplayvideo()を呼び出すビデオを再生することはできません。コードを次のように入力してください:

@Override 
    public void onWindowFocusChanged(boolean hasFocus) 
    { 
     if (hasFocus) 
     { 
      // play video call 
     } 
    } 

onCreateの宣言だけを残してください。