0

私は Android を使用しており、次のコードを使用して res/raw から映画を再生するビデオビューを持っています:

public static void startVideo(String moviename) {
    playingVideo = true;
    final String name = moviename + "x264";
    instance.runOnUiThread(new Runnable() {
        public void run() {
            instance.mVideoView.bringToFront();
            instance.mVideoView.setVisibility(View.VISIBLE);
            String uri = "android.resource://" + instance.getPackageName()
                    + "/raw/" + name;
            instance.mVideoView.setVideoURI(Uri.parse(uri));
            instance.mVideoView.requestFocus();
            instance.mVideoView.start();
        }
    });

ただし、アクティビティの onCreate メソッド内で有効なアセット イメージ ファイル名 (「backdrop.jpg」など) を引数として次の関数を呼び出すと、ビデオ ビューが表示されなくなります。

public Bitmap getBitmapFromAsset(String strName) {
    AssetManager assetManager = this.getAssets();
    InputStream is;
    Bitmap bitmap = null;
    try {
        is = assetManager.open(strName);
        bitmap = BitmapFactory.decodeStream(is);
        is.close();
    } catch (IOException e) {
        return null;
    }
    return bitmap;
}

結果のビットマップをコードで使用するかどうかは関係ありません。上記の関数を呼び出すだけで、ビデオプレーヤーが表示されなくなるようです。その関数を呼び出して結果をローカル変数に保存するだけの行をコメントアウトするだけで、ビデオビューが再び正常に表示されるようになります。

また、他に影響はないようです...たとえば、プログラムにGLSurfaceViewがあり、問題なく表示されます。

私はこれについて非常に困惑しています...そしてどんな助けも大歓迎です。

前もって感謝します。

4

1 に答える 1

0

さて、私は解決策を見つけました...何が起こっているのかというと、私のプログラムの GLSurfaceView が実際にビデオビューをオーバーレイしていたことが判明しました。ビデオビューを明示的にトップに押し込もうとしていたので、その理由はまだわかりませんが、それでも、ビデオの再生中に GLSurfacview を非表示にしておくと、問題なく動作するようです。

于 2013-08-02T16:38:19.623 に答える