How to play video from raw folder with Android device?

Please help,
How to play videos in android device from raw folder for offline mode?

Successful example1: I can play the video from SDcard used the below code.

  • Android, how to not destroy the activity when I rotate the device?
  • Sort a list in ascending order by date from sqlite
  • getting Error: spawn EACCES while ionic build android in ubuntu 14.04
  • Using cookies with Android volley library
  • android how to use string resource in a java class
  • Is it possible to programmatically uninstall a package in Android
  •  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); 
    

    Failed example2:
    Question: May I put the test.mp4 to res/raw folder?

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

    Have anyone can help me? Please.

  • Multiple MIME types in Android
  • Change Actionbar height on Android JellyBean
  • Two app with shared UserID
  • Modifying in-call voice playback in Android custom ROM
  • Android LogCat device disconnected
  • How to make the Contextual ActionMode Bar overlay the appcompat-v7 Toolbar but not the navigation drawer?
  • 6 Solutions collect form web for “How to play video from raw folder with Android device?”

    Copy the video into your project’s res/raw folder. Create raw folder under res folder. It must be in a supported format (3gp, wmv, mp4 ) and named with lower case, numerics, underscores and dots in its filename likewise: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();
    

    Create videoView in your xml file.

    Check this solution 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
    
    // 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));
    

    i think , everyone gave an answer, but doesn’t explain the scenario. The main problem here is, If im not mistaken , Android assume that the video coming from your SD Card is dynamic, where in it could be possible , that the format is not supported or supported, thus it enables / ask you to select or open for other third party media software.

    While anything you play UNDER RAW folder, requires a handler such as videoview or built in media player which leads to conclusion that anything you put in your RAW folder should be supported / readable by the Android OS.

    However , the thread starter here wants that his RAW files , to be played using a third party media player.

    I struggled with this for dynamic video names. The solution that worked for me was:

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

    And in XML

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

    This Solution will exactly helps you that what you want.

    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();
    
    }
    
    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.