0

我试图用我的应用创建的视频制作画廊。当我单击其中一张缩略图时,我想将所选视频保存在我的首选项中。

为了获得缩略图,我编写了以下代码:

公共无效 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 创建一个文件。

4

0 回答 0