我对Android编程非常陌生,我想知道如何制作应用程序拍照并将图像保存到设备的内部存储器而不是SD卡,因为不是每个人都会有SD卡
答案 0 :(得分:1)
您可以尝试将其另存为sqlite blob。这个this线程用于如何进行存储。说“不是每个人都有外部存储”是一个不好的借口:你应该处理这两种情况。如果您希望将其实现为文件(这是一种非常好的方法),您可以使用Environment.getExternalStorageDir()调用查找外部存储目录,以确定用于存储文件的合适目录。阅读API文档here并注意以下注释:
注意:不要在这里混淆“外部”这个词。此目录最好被视为媒体/共享存储。它是一个文件系统,可以容纳相对大量的数据,并在所有应用程序之间共享(不强制执行权限)。传统上这是一张SD卡,但它也可以作为内置存储器实现,该设备不同于受保护的内部存储器,可以作为文件系统安装在计算机上。
答案 1 :(得分:1)
是的,您可以尝试在sqlite blob字段中保存图像。这只是一种java方式:让整个世界等待:)
将所有文件,缓存等存储到外部存储上的/Android/data/<package_name>/files/
目录中是一种很好的做法。 外部存储不是唯一的SD卡,您可以通过Environment.getExternalStorageDirectory()和Environment.getExternalStorageState()调用(reference)获取外部存储路径和状态。如果您使用的是API 8或更高版本,则可以使用Context.getExternalFilesDir()。
如果您想获得用户的仇恨,可以尝试将文件和文件夹存储在外部存储的根目录中。
答案 2 :(得分:0)
也许是这样的
Bitmap largeBitmap ; // save your Bitmap from data[]
FileOutputStream fileOutputStream = null;
BufferedOutputStream bos = null;
int quality = 100;
String filePath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + File.separator + "myImage.jpg"
File mediaFile = new File(filePath);
try {
fileOutputStream = new FileOutputStream(pictureFile);
bos = new BufferedOutputStream(fileOutputStream);
bitmap.compress(CompressFormat.JPEG, quality, bos);
return pictureFile;
} finally {
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
// ignore close error
}
}