Androidエミュレーターでビデオを再生しようとしていますが、アセットフォルダーと生フォルダーにビデオがありますが、いくつかの調査を行った後でも、エミュレーターでビデオを再生できません。Android 2.1で作業しています。ビデオ形式はmp4なので、私はそれが問題になるとは思わないでください。もう少し理解できるように、誰かがサンプルコードを教えてくれませんか?
問題は、ビデオを表示する必要がある VideoView が、ビデオを指す URI またはファイル パスのみを取ることです。
ビデオを raw または assets フォルダーに保存すると、入力ストリームまたはファイル記述子しか取得できず、VideoView の初期化に使用できるものはないようです。
アップデート
MediaPlayer の例を詳しく見て、以下のコードのように、アセット ファイルへの FileDescriptor を使用して MediaPlayer を開始しようとしました。
SurfaceView videoView = (SurfaceView) findViewById(gettingStarted)
SurfaceHolder holder = videoView.getHolder();
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
final MediaPlayer player = new MediaPlayer();
player.setDisplay(holder);
player.setDataSource(getAssets().openFd(fileName).getFileDescriptor());
player.prepareAsync();
player.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
今、私は次の例外を受け取ります:
java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
起動時にファイルをSDカードにコピーする以外に方法はないようで、時間とメモリの無駄のようです。