0

アプリで作成した動画からギャラリーを作成しようとしました。サムネイル画像の 1 つをクリックすると、選択したビデオが自分の設定に保存されます。

サムネイルを取得するために、次のコードを書きました。

public void 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 により、Tumbnail Pics を取得します。今私の問題は、それを新しいファイルの通常のパスに戻して保存する方法です。

次のコードは、ビデオを設定に保存する 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