2011-10-21 6 views
4

アプリからスクリーンキャプチャを取得してSDカードに保存し、ギャラリーで利用できるようにするコードがあります。問題は、カメラの画像をギャラリーで探すときにカメラの画像と一緒に保存することです。私はむしろ、ダウンロードフォルダの下に保存するか、すべてのスクリーンショットがユーザーにアクセスできるアプリケーション固有のフォルダ(PicSayはこのようなことをします)を作成します。現在、カメラギャラリーに保存するには、次の方法を使用しています:ギャラリーフォルダを指定する

MediaStore.Images.Media.insertImage(getContentResolver(), imagePath, fileName, desc); 

カメラ以外の場所に保存するにはどうすれば入手できますか?

答えて

2

あなたは、外部ストレージディレクトリにしたい任意の場所に画像ファイルを保存するために、通常のJava APIのを使用することができます..ヒント(FileOutputStreamを使用するヒント)

解決する必要がある唯一の問題は、Andriodに新しいコンテンツを追加したことを伝えることです。コンテンツデータベースを更新してください。ギャラリーがユーザーに画像を表示するために使用できるギャラリー。

ContentValueを新規作成し、ContentResolverに挿入するだけです。 APIを使用してContentResolverへのハンドルを取得することができます ContentValueには、画像の名前、絶対パス、作成日、ファイルのサイズなどの関連情報が含まれていますが、これらはすべて必須ではありません。 Android Docを使い、あなたとは関係のない値を選んでください。

ContentValues values = new ContentValues(7); 

values.put(Images.Media.TITLE, title); 
values.put(Images.Media.DISPLAY_NAME, fileName); 
values.put(Images.Media.DATE_TAKEN, currTime); 
values.put(Images.Media.MIME_TYPE, "image/jpeg"); 
values.put(Images.Media.ORIENTATION, 0); 
values.put(Images.Media.DATA, filePath); 
values.put(Images.Media.SIZE, jpegData.length); 

contentResolver.insert(STORAGE_URI, values); 

出来上がり、ギャラリーは、ありがとう、それが置かれている画像:)

+1

が表示されます。最後の行をcontentResolver.insert(Images.Media.EXTERNAL_CONTENT_URI、values)に変更しなければなりませんでした。それ以外は素晴らしい作品です。 – Woodsy

+0

実際に私の元のコードが動作していることがわかりましたが、SDカードに保存していたファイルでギャラリーを更新する前に、1日かそれ以上のアンドロイドがかかりました。あなたの方法は即座にそれを登録します。再度、感謝します。 – Woodsy

+0

私の悪い、急いで私のプロジェクトからコードをコピーしました。 STORAGE_URIは外部ディレクトリを指します。 – bluefalcon

関連する問題