私は困惑しています。
Media Player でビデオを再生しようとしていますが、オーディオの再生中に黒いウィンドウしか表示されません。
この問題に関する他の投稿を見たことがありますが、解決策を見つけることができませんでした。私は彼らの提案に従おうとしました。
メディアプレーヤーは、再生前に準備されます。サーフェス ホルダーが作成され、再生前にメディア プレーヤーのディスプレイに設定されました。
Samsung Galaxy Tab と Samsung Galaxy S でテスト済み。
API レベル 7 に対してコンパイルしています。
ビデオ自体は、SD カードからデバイスのビデオ アプリケーションで再生できるため、互換性があるはずです。
表面ビューはビデオと同じサイズではありません。だから、それは問題かもしれません。それについて何かする必要がありますか、それとも自動的にストレッチが処理されますか?
これが私の初期化にあるものです:
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(width, height);
lp.leftMargin = x;
lp.topMargin = y;
mSurfaceView = new SurfaceView(mActivity);
mSurfaceView.requestFocus();
mSurfaceView.setZOrderOnTop(true);
mSurfaceView.getHolder().addCallback(player);
mSurfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mLayout.addView(mSurfaceView, lp);
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(assetDescriptor.getFileDescriptor(), assetDescriptor.getStartOffset(), assetDescriptor.getLength());
mMediaPlayer.setOnErrorListener(player);
mMediaPlayer.setOnPreparedListener(player);
mMediaPlayer.prepare();
ここに私のコールバックがあります:
public void onPrepared(MediaPlayer mp)
{
mMediaPlayer.start();
}
public void surfaceCreated (SurfaceHolder holder)
{
mMediaPlayer.setDisplay(holder);
}
イライラするのは、コードのバージョンが少し前は正しく機能していたのに、現在は機能していないことです。