3

現在、手動で行っているため、メディアストアを使用して画像を追加する方法について少し検索していました

final String myBitmap = "MyImage_"+ mFileDate + ".png";
File fileNumber = new File(APP_FILE_PATH, myBitmap);
out = new FileOutputStream( fileNumber );
final Bitmap mBitmap =getBitmap();
mBitmap.compress( Bitmap.CompressFormat.PNG, 85, out );
out.flush();

ただし、パスなどよりもIDを管理しやすいため、メディアマネージャーが保存に使用するIDが必要です。私はこのように追加しようとしました:

ContentValues values = new ContentValues();
values.put(Images.Media.TITLE, mFileName.getName());
values.put(Images.Media.DESCRIPTION, getString(R.string.bitdraw_description));
values.put(Images.Media.MIME_TYPE, "image/png");

Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
out = getContentResolver().openOutputStream(uri);
mBitmap.compress( Bitmap.CompressFormat.PNG, 85, out );
out.flush();

ただし、これにより、必要な特定のフォルダーではなく、写真が保存されているフォルダーに画像が追加されます。

マニュアルの後にこれも試しました(最初の部分):

Media.insertImage(getContentResolver(), mFileName.getPath(), mFileName.getName(), getString(R.string.description));

しかし、これは画像が最初に保存されたため、重複のみを生成しますoutputStream

ここのスレッドで見つけた回避策は、次のようにブロードキャストを呼び出すことです。

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse ("file://"+ Environment.getExternalStorageDirectory())));

しかし、これはかなり非効率で時間がかかります。最速にしたいのですが、これが実際に ID を生成するかどうかはまったくわかりません。生成する場合は、SD 内の特定のフォルダーのみをスキャンするようにするにはどうすればよいでしょうか?? どんな助けでも大歓迎です。

4

0 に答える 0