2013-03-28 2 views
10

도와주세요, 오프라인 모드에서 원시 폴더의 Android 장치로 비디오를 재생하는 방법은 무엇입니까?Android 기기에서 원시 폴더의 비디오를 재생하는 방법은 무엇입니까?

성공 사례 1 : 아래 코드를 사용하여 SD 카드에서 비디오를 재생할 수 있습니다.

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를 넣을 수 있습니까?

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); 

아무도 도와 줄 수 있습니까? 부디.

답변

3

확인이 솔루션 How to play videos in android from assets folder or raw folder?

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 
37

복사 프로젝트의 고해상도/원시 폴더에 비디오. 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를 만듭니다.

+0

안녕, 난 당신의 코드를 사용하여 다음과 같은 문제를 받고 있어요 : MediaPlayer를 : 미디어 플레이어 setDataSource IOException이의 앞으로 일어날를 만들 수 없음을 : –

+0

가 대단히 감사합니다! * getPackageName() * 나를 구 했어요! – Pontios

+1

이미'res/raw'아래에 폴더가 있지만 다른 해상도로 비디오를 가지고 있다면 어떻게 될까요? 즉 320x240, 640x480, 1280x720 등. 각기 다른 폴더를 만드는 방법은 무엇입니까? – Johny

2
// 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)); 
+0

코드에 대한 설명을 제공해야합니다. 코드는 답을 얻지 못하는 경우가 많습니다. –

0

나는 동적 인 비디오 이름에 대해 고심했다. 나를 위해 일한 솔루션했다 :

//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" 
    /> 
1

에, 모두가 대답을했다,하지만 시나리오를 설명하지 않습니다. 여기에서 가장 큰 문제는 안드로이드가 실수하지 않는다면 안드로이드는 SD 카드에서 오는 비디오가 동적 인 것으로 가정합니다. 포맷이 지원되지 않거나 지원되지 않을 수 있기 때문에 가능하거나 선택하도록 요청할 수 있습니다 다른 타사 미디어 소프트웨어 용.

RAW 폴더에서 재생되는 모든 항목은 videoview 또는 내장 미디어 플레이어와 같은 처리기가 있어야 RAW 폴더에 넣은 모든 내용을 Android OS에서 지원하거나 읽을 수 있어야합니다.

그러나 스레드 스타터는 타사 미디어 플레이어를 사용하여 RAW 파일을 재생하려고합니다.

0

이 솔루션은 당신이 원하는 것을 정확하게 도와줍니다.

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(); 

} 
+0

bootanimationnexus는 원시 폴더에있는 비디오의 이름입니다. –

관련 문제