1

VideoView で MediaController を使用して、アセット フォルダーからビデオを再生できません。多くのスタック オーバーフローの回答を調べましたが、どれも機能しません。RawフォルダーまたはSDカードフォルダーパスを使用すると、完全に機能します。

以下は私のコードです:

    private void getVideoFromAssets() {

    try {
        // Start the MediaController
        MediaController mediacontroller = new MediaController(
                VideoViewActivity.this);
        mediacontroller.setAnchorView(videoview);
        // Get the URL from String VideoURL
        Uri video = Uri.parse("file:///android_asset/test.mp4");
        videoview.setMediaController(mediacontroller);
        videoview.setVideoURI(video);


    } catch (Exception e) {
        Log.e("Error", e.getMessage());
        e.printStackTrace();

    }

    videoview.requestFocus();
    videoview.setOnPreparedListener(new OnPreparedListener() {
        // Close the progress bar and play the video
        public void onPrepared(MediaPlayer mp) {

            videoview.start();

        }
    });


}

この同じコードは、それぞれのパスを変更しながら raw および sd カード フォルダーに対して機能しますが、アセットでは機能しません。どんな助けでも大歓迎です.Thanks.

4

2 に答える 2

1

試す:

   AssetFileDescriptor afd = getAssets().openFd(fileName);
   player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength());
于 2013-11-11T10:29:22.883 に答える
1

「file:///android_asset/...」は WebView に対してのみ機能します。カスタム ContentProvider を作成するために必要な「content://your.authority/path.to.resource」のような Uri を渡す必要があります。その openAssetFile をオーバーライドします

于 2013-11-11T10:47:01.963 に答える