nev*_*vva 3 android android-camera android-mediascanner
我正在尝试将图像文件保存到外部存储.我可以将图片保存到SD卡,但它不会出现在Androids gallery应用程序中.我尝试过这种方法:
File path = Environment.getExternalStorageDirectory();
File f = new File(path + "/mydirectory/" + imageName + "_" + System.currentTimeMillis() + ".jpg");
FileOutputStream fos = new FileOutputStream(f);
f.mkdirs();
b.compress(CompressFormat.JPEG, 100, fos);
fos.close();
Uri contentUri = Uri.fromFile(f);
Intent mediaScanIntent = new Intent("android.intent.action.MEDIA_SCANNER_SCAN_FILE");
mediaScanIntent.setData(contentUri);
getApplicationContext().sendBroadcast(mediaScanIntent);
Run Code Online (Sandbox Code Playgroud)
但它没有出现在画廊中.谁能指出我正确的方向来解决这个问题?
sur*_*dra 11
使用此代码在Android设备库中保存图像位图
public void savePhoto(Bitmap bmp)
{
imageFileFolder = new File(Environment.getExternalStorageDirectory(),"Rotate");
imageFileFolder.mkdir();
FileOutputStream out = null;
Calendar c = Calendar.getInstance();
String date = fromInt(c.get(Calendar.MONTH))
+ fromInt(c.get(Calendar.DAY_OF_MONTH))
+ fromInt(c.get(Calendar.YEAR))
+ fromInt(c.get(Calendar.HOUR_OF_DAY))
+ fromInt(c.get(Calendar.MINUTE))
+ fromInt(c.get(Calendar.SECOND));
imageFileName = new File(imageFileFolder, date.toString() + ".jpg");
try
{
out = new FileOutputStream(imageFileName);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
scanPhoto(imageFileName.toString());
out = null;
} catch (Exception e)
{
e.printStackTrace();
}
}
public String fromInt(int val)
{
return String.valueOf(val);
}
public void scanPhoto(final String imageFileName)
{
msConn = new MediaScannerConnection(PreviewDemo1.this,new MediaScannerConnectionClient()
{
public void onMediaScannerConnected()
{
msConn.scanFile(imageFileName, null);
Log.i("msClient obj in Photo Utility","connection established");
}
public void onScanCompleted(String path, Uri uri)
{
msConn.disconnect();
Log.i("msClient obj in Photo Utility","scan completed");
}
});
msConn.connect();
}
Run Code Online (Sandbox Code Playgroud)
在这里我将图像保存在"旋转"文件夹中,如果你不想要你可以在savePhoto方法中轻松更改它.
我知道我回答这个问题有点迟,但我想其他任何人都在读这个肯定的答案是正确的,并且使用MediaScannerConnection是一种更新图库的方法.至于nevva建议改变他的代码的方式是:
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri contentUri = Uri.fromFile(f);
mediaScanIntent.setData(contentUri);
getApplicationContext().sendBroadcast(mediaScanIntent);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10240 次 |
| 最近记录: |