Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从gallery SD卡中选择视频文件并在App view中播放?_Android_Video - Fatal编程技术网

Android 如何从gallery SD卡中选择视频文件并在App view中播放?

Android 如何从gallery SD卡中选择视频文件并在App view中播放?,android,video,Android,Video,我必须从多媒体资料中选择一个视频并播放,但我不能播放,但对于图像,我得到了这样的视频,我也尝试了视频,但出现了一些问题,如果有人有任何想法,请帮助我 这是我的代码,但它不起作用 import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.prov

我必须从多媒体资料中选择一个视频并播放,但我不能播放,但对于图像,我得到了这样的视频,我也尝试了视频,但出现了一些问题,如果有人有任何想法,请帮助我

这是我的代码,但它不起作用

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.VideoView;

public class videoView extends Activity implements OnClickListener {

     private VideoView videoPreview;
Button button;
private static final int SELECT_VIDEO_REQUEST = 1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.videoview);

        button  = (Button) findViewById(R.id.button1);
        button.setOnClickListener((OnClickListener) this);
}
    public void onClick(View v) {
        if(v ==button){

            Intent intent = new Intent(
                    Intent.ACTION_PICK,
                    android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(intent, SELECT_VIDEO_REQUEST);

    }}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == SELECT_VIDEO_REQUEST && resultCode == RESULT_OK && null != data) {
        Uri selectedImage = data.getData();
        String[] filePathColumn = { MediaStore.Video.Media.DATA };

        Cursor cursor = getContentResolver().query(selectedImage,
                filePathColumn, null, null, null);
        cursor.moveToFirst();

        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String picturePath = cursor.getString(columnIndex); 
        cursor.close();

         videoPreview = (VideoView) findViewById(R.id.videoPreview);
         videoPreview.setVideoPath(picturePath);
}
}}

这里有一个简单的代码,用来打开图库的意图,然后查看它在这个方法请使用它对你有帮助

public class videoView extends Activity implements OnClickListener {

        Button gallybutton;
           private Cursor videocursor;
              private int video_column_index;
              ListView videolist;
              int count;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.videoview);
            gallybutton  = (Button) findViewById(R.id.gally);
            gallybutton.setOnClickListener((OnClickListener) this);

        }
            public void onClick(View v) {


          init_phone_video_grid();
    }
      public void init_phone_video_grid() {
              System.gc();
              String[] proj = { MediaStore.Video.Media._ID,
    MediaStore.Video.Media.DATA,
    MediaStore.Video.Media.DISPLAY_NAME,
    MediaStore.Video.Media.SIZE };
              videocursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,   proj, null, null, null);
              count = videocursor.getCount();
              videolist = (ListView) findViewById(R.id.PhoneVideoList);
              videolist.setAdapter(new VideoAdapter(getApplicationContext()));
              videolist.setOnItemClickListener(videogridlistener);
        }

        public OnItemClickListener videogridlistener = new OnItemClickListener() {
              public void onItemClick(AdapterView<?> parent, View v, int position,
    long id) {
                    System.gc();
                    video_column_index = videocursor
    .getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
                    videocursor.moveToPosition(position);
                    String filename = videocursor.getString(video_column_index); 
                    Intent intent = new Intent(videoView.this, gallyVideo.class);
                    intent.putExtra("videofilename", filename);
                    startActivity(intent);
              }
        };

        public class VideoAdapter extends BaseAdapter {
              private Context vContext;

              public VideoAdapter(Context c) {
                    vContext = c;
              }

              public int getCount() {
                    return count;
              }

              public Object getItem(int position) {
                    return position;
              }

              public long getItemId(int position) {
                    return position;
              }

              public View getView(int position, View convertView, ViewGroup parent) {
                    System.gc();
                    TextView tv = new TextView(vContext.getApplicationContext());
                    String id = null;
                    if (convertView == null) {
                          video_column_index = videocursor
    .getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME);
                          videocursor.moveToPosition(position);
                          id = videocursor.getString(video_column_index);
                          video_column_index = videocursor
    .getColumnIndexOrThrow(MediaStore.Video.Media.SIZE);
                          videocursor.moveToPosition(position);
                          id += " Size(KB):" + videocursor.getString(video_column_index);
                          tv.setText(id);
                    } else
                          tv = (TextView) convertView;
                    return tv;
              }
        }

}
公共类videoView扩展活动实现OnClickListener{
按钮胆按钮;
专用游标视频游标;
私有int视频列索引;
列表视图视频列表;
整数计数;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.videoview);
gallybutton=(按钮)findViewById(R.id.gally);
setOnClickListener((OnClickListener)this);
}
公共void onClick(视图v){
初始化电话视频网格();
}
public void init_phone_video_grid(){
gc();
String[]proj={MediaStore.Video.Media.\u ID,
MediaStore.Video.Media.DATA,
MediaStore.Video.Media.DISPLAY\u名称,
MediaStore.Video.Media.SIZE};
videocursor=managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,proj,null,null,null);
count=videocursor.getCount();
videolist=(ListView)findViewById(R.id.PhoneVideoList);
setAdapter(新的VideoAdapter(getApplicationContext());
videolist.setOnItemClickListener(videogridlistener);
}
public OnItemClickListener videogridlistener=新建OnItemClickListener(){
公共控件单击(AdapterView父对象、视图v、内部位置、,
长id){
gc();
视频\列\索引=视频光标
.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
视频光标。移动位置(位置);
字符串文件名=videocursor.getString(视频列索引);
意向意向=新意向(videoView.this,gallyVideo.class);
intent.putExtra(“视频文件名”,文件名);
星触觉(意向);
}
};
公共类VideoAdapter扩展了BaseAdapter{
私人语境;
公共视频适配器(上下文c){
vContext=c;
}
public int getCount(){
返回计数;
}
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
gc();
TextView tv=新的TextView(vContext.getApplicationContext());
字符串id=null;
if(convertView==null){
视频\列\索引=视频光标
.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME);
视频光标。移动位置(位置);
id=videocursor.getString(视频列索引);
视频\列\索引=视频光标
.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE);
视频光标。移动位置(位置);
id+=“大小(KB):”+videocursor.getString(视频列索引);
tv.setText(id);
}否则
电视=(文本视图)转换视图;
返回电视;
}
}
}

尝试以下操作..但此代码在android目标版本14下工作。我认为它可以与所有人一起工作。请检查您的版本详细信息并进行更改。好的,如果我有错误,请让我再次检查,让我告诉您。但是,先生,它显示列表视图我需要的是简单的,只需打开图库并选择一个视频,然后播放它。