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下工作。我认为它可以与所有人一起工作。请检查您的版本详细信息并进行更改。好的,如果我有错误,请让我再次检查,让我告诉您。但是,先生,它显示列表视图我需要的是简单的,只需打开图库并选择一个视频,然后播放它。