我试图用我的应用创建的视频制作画廊。当我单击其中一张缩略图时,我想将所选视频保存在我的首选项中。
为了获得缩略图,我编写了以下代码:
公共无效 addVidsToArray() {
String[] projection = { MediaStore.Video.Media._ID };
String selection = MEDIA_DATA + " like ? ";
String [] selectionArgs = new String[] {"%Bla%"};
int columIndex;
int id;
Cursor videoCursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
projection,
selection,
selectionArgs,
null);
videoCursor.moveToFirst();
if(videoCursor.getCount() >= 1)
{
while (videoCursor.moveToNext()) {
columIndex = videoCursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID) ;
id = videoCursor.getInt(columIndex);
bitmaps.add(getThumbnail(id));
}
}
}
public Bitmap getThumbnail(int id)
{
ContentResolver crThumb = getContentResolver();
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 1;
Bitmap curThumb = MediaStore.Video.Thumbnails.getThumbnail(crThumb, id, MediaStore.Video.Thumbnails.MICRO_KIND, options);
curThumb = Bitmap.createScaledBitmap(curThumb, 300, 300, false);
return curThumb;
}
由于 Uri id,我得到了缩略图图片。现在我的问题是如何将其恢复到新文件中的正常路径以保存它。
以下代码是应该将视频保存到首选项的 onClickListener。但是,如果我将 Uri 添加到新文件中,则该文件不存在。
我不明白。
ga.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id)
{
String[] projection = { MediaStore.Video.Media._ID };
String selection = MEDIA_DATA + " like ? ";
String [] selectionArgs = new String[] {"%Bla%"};
int columIndex;
int id1;
Cursor videoCursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
projection,
selection,
selectionArgs,
null);
videoCursor.moveToFirst();
if(videoCursor.getCount() >= 1)
{
while (videoCursor.moveToNext()) {
columIndex = videoCursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID) ;
id1 = videoCursor.getInt(columIndex);
daten.add(id1+"");
}
}
Log.v("vid id", ""+daten.get(position));
int idData = Integer.parseInt(daten.get(position));
saveVideo(idData);
}
});
}
public void saveVideo(int idData)
{
String uriString = "content://media/external/video/media/" + idData;
Uri uri = Uri.parse(uriString);
File mVideoFile = new File(uriString);
Log.v("testpfad", ""+ mVideoFile.getAbsolutePath() + " " + mVideoFile.getParentFile().getAbsolutePath() + " " + mVideoFile.exists());
mVideoFileLen = getDurationFromURI(uri);
//setPreferences(mVideoFile.getAbsolutePath(), PICKED_VIDEO);
//setPreferences(mVideoFileLen, VIDEO_LEN);
//startActivity(new Intent(this, Finished.class));
}
最后,我需要借助 Uri 中的 Id 创建一个文件。