Search code examples
javaandroidandroid-videoview

How to convert android resource path to string


This is my video view class and its working fine

private void CopyReadVdo() {
    setContentView(R.layout.video_player);
    VideoView view = (VideoView) findViewById(R.id.videoview);
    String path = "android.resource://" + getPackageName() + "/" + R.raw.video1;
    Uri uri = Uri.parse(path);
    view.setVideoURI(uri);
    MediaController mediaController = new MediaController(this);
    mediaController.setAnchorView(view);
    view.setMediaController(mediaController);
    view.start();
}

I need to call this function with an argument like

private void CopyReadVdo(String vdoname) {
    setContentView(R.layout.video_player);

    VideoView view = (VideoView) findViewById(R.id.videoview);
    String path = "android.resource://" + getPackageName() + "/" + vdoname;
    Uri uri = Uri.parse(path);
    view.setVideoURI(uri);
    MediaController mediaController = new MediaController(this);
    mediaController.setAnchorView(view);
    view.setMediaController(mediaController);
    view.start();
}

but is shows error Can't play this video. Thanks in advance.


Solution

  • First try to get resource id rawId from resource name vdoname

    int rawId = getResources().getIdentifier(vdoname,  "raw", getPackageName());
    String path = "android.resource://" + getPackageName() + "/" + rawId;
    

    Update: pass shaktee as vdoname to CopyReadVdo function instead of R.raw.shaktee

    Or change type of vdoname to int and pass R.raw.shaktee to CopyReadVdo function

    private void CopyReadVdo(int vdoname) {
        setContentView(R.layout.video_player);
    
        VideoView view = (VideoView) findViewById(R.id.videoview);
        String path = "android.resource://" + getPackageName() + "/" + vdoname;
        Uri uri = Uri.parse(path);
        view.setVideoURI(uri);
        MediaController mediaController = new MediaController(this);
        mediaController.setAnchorView(view);
        view.setMediaController(mediaController);
        view.start();
    }