簡體   English   中英

如何使用Android設備播放原始文件夾中的視頻?

[英]How to play video from raw folder with Android device?

請幫忙,如何在原始文件夾中播放Android設備中的視頻以進行離線模式?

成功示例1:我可以使用以下代碼從SDcard播放視頻。

 Intent intent = new Intent(Intent.ACTION_VIEW);
 String type = "video/mp4";
 Uri uri = Uri.parse("file:///sdcard/test.mp4");
 intent.setDataAndType(uri, type);
 startActivity(intent); 

失敗的示例2:問題:我可以將test.mp4放到res / raw文件夾中嗎?

 Intent intent = new Intent(Intent.ACTION_VIEW);
 String type = "video/mp4";
 Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.taipei);
 intent.setDataAndType(uri, type);
 startActivity(intent); 

有誰可以幫助我? 請。

將視頻復制到項目的res / raw文件夾中。 在res文件夾下創建原始文件夾。 它必須采用支持的格式(3gp,wmv,mp4),並在其文件名中以小寫,數字,下划線和點命名:video_file.mp4。

VideoView view = (VideoView)findViewById(R.id.videoView);
String path = "android.resource://" + getPackageName() + "/" + R.raw.video_file;
view.setVideoURI(Uri.parse(path));
view.start();

在xml文件中創建videoView。

// To get files from any resource folder (eg: raw, drawable, etc.)
// Use the resource id
int rawId = getResources().getIdentifier(file_name_without_extension,  "raw", getPackageName());

// URI formation
String path = "android.resource://" + getPackageName() + "/" + rawId;

// Set the URI to play video file
videoView.setVideoURI(Uri.parse(path));

檢查此解決方案如何從資源文件夾或原始文件夾中播放android中的視頻?

VideoView videoHolder = new VideoView(this);
//if you want the controls to appear
videoHolder.setMediaController(new MediaController(this));
Uri video = Uri.parse("android.resource://" + getPackageName() + "/" 
+ R.raw.your_raw_file); //do not add any extension
//if your file is named sherif.mp4 and placed in /raw
//use R.raw.sherif

我想,每個人都給出了答案,但沒有解釋這個場景。 這里的主要問題是,如果我沒弄錯的話,Android會假設來自SD卡的視頻是動態的,其中可能是格式不受支持或支持,因此它啟用/要求您選擇或打開用於其他第三方媒體軟件。

當您在RAER文件夾中播放任何內容時,需要一個處理程序,如videoview或內置媒體播放器,這樣可以得出結論:您在RAW文件夾中放置的任何內容都應該由Android操作系統支持/讀取。

但是,這里的線程啟動器想要使用第三方媒體播放器播放他的RAW文件。

在我的代碼中“applicationdemo”是我的視頻文件的名稱。

    String video_url = "android.resource://" + context.getPackageName() + "/" + R.raw.applicationdemo;
    final VideoView videoView = findViewById(R.id.dialog_video);
    Uri videoUri = Uri.parse(video_url);
    MediaController mediaController= new MediaController(context);
    mediaController.setAnchorView(videoView);
    videoView.setMediaController(mediaController);
    videoView.setVideoURI(videoUri);
    videoView.requestFocus();
    videoView.start();

我為動態視頻名稱苦苦掙扎。 對我有用的解決方案是:

//Somewhere set the video name variable
String video+name="myvideo";
//setup up and play video

VideoView videoView=(VideoView)findViewById(R.id.video);
videoView.setVisibility(View.VISIBLE);
String uriPath = "android.resource://"+getPackageName()+"/raw/"+ video_name;
Uri UrlPath=Uri.parse(uriPath);
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(videoView);
videoView.setMediaController(mediaController);
videoView.setVideoURI(UrlPath);

videoView.setOnPreparedListener(new OnPreparedListener() {
        public void onPrepared(MediaPlayer mediaPlayer) {
            if (position == 0) {
                try{
                    videoView.requestFocus(); 
                    videoView.start();
                }catch (Exception e){
                    System.out.printf("Error playing video %s\n", e);
                }
            }else{
                videoView.pause();
            }

        }
});

在XML中

<VideoView android:layout_width="300dp"
    android:id="@+id/video"
    android:layout_height="300dp"
    android:orientation="horizontal"
    android:layout_gravity="center" 
    android:keepScreenOn="true"
    />

此解決方案將幫助您實現您想要的目標。

VideoView myVideo;
private MediaController media_control;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    myVideo = (VideoView) findViewById(R.id.playVideo);

    Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.bootanimation_nexus);

    media_control = new MediaController(this);

    myVideo.setMediaController(media_control);

    myVideo.setVideoURI(uri);

    myVideo.start();

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM