3

Media Store(Gallery)のアルバムに画像を追加するのに役立つコードを共有(またはAndroidサンプルコードを指定)できますか?

私のアプリでは、サーバーから画像をダウンロードし、カメラを使用して(Intent経由で)新しい画像を撮影します。

Facebook(および他のアプリ)アプリと同様に、これらの画像をアプリ固有のアルバムに整理し、関連する画像をすべてきちんと整理したいと思います。

Media Store APIのドキュメントに従って、しばらく前にこれを調べましたが、うまくいきませんでした。

ありがとう

4

3 に答える 3

4

あなたが使用することができます:

  MediaStore.Images.Media.insertImage(ContentResolver cr, Bitmap source, String title, String description);

ここのどこかhttp://developer.android.com/guide/のサブメニューの一部に、MediaStoreに特定のフォルダーをスキャンするように要求するコマンドが表示されていると確信していますが、今は見つかりません。

編集: 見つけました:

 MediaScannerConnection.scanFile(Context context, String[] path, null, null);
于 2012-08-16T08:58:58.823 に答える
2

これを行うために最終的に使用したコードは次のとおりです。

public static Uri addToTouchActiveAlbum( Context context, String title, String filePath ) {
    ContentValues values = new ContentValues(); 
    values.put( Media.TITLE, title ); 
    values.put( Images.Media.DATE_TAKEN, System.currentTimeMillis() );
    values.put( Images.Media.BUCKET_ID, filePath.hashCode() );
    values.put( Images.Media.BUCKET_DISPLAY_NAME, Constants.TA_PHOTO_ALBUM_NAME );

    values.put( Images.Media.MIME_TYPE, "image/jpeg" );
    values.put( Media.DESCRIPTION, context.getResources().getString( R.string.product_image_description ) ); 
    values.put( MediaStore.MediaColumns.DATA, filePath );
    Uri uri = context.getContentResolver().insert( Media.EXTERNAL_CONTENT_URI , values );

    return uri;
}

「getExternalStorage()」(/storage/sdcard0) にあるイメージに対して機能します

また、別のフォルダー (Context.getExternalCacheDir() によって返されるフォルダーの下に作成する cacheDir) にある画像を追加したいと思います。問題: MIME タイプがわかりません (それは問題ですか?)。フォルダは別の場所にある別の名前の別のフォルダです。また、「アルバム」自体に追加する方法がわかりません。 ……アルバム名がフォルダ名に由来しているような……。

または別の言い方をすると:

values.put( Images.Media.BUCKET_DISPLAY_NAME, Constants.TA_PHOTO_ALBUM_NAME );

効果がないように見えますか?

于 2012-08-21T16:06:37.147 に答える