在Android上使用无SD卡的摄像头

在Android上使用无SD卡的摄像头,android,android-camera,Android,Android Camera,我只是想确认一下,如果没有Android上的SD卡,相机是不能使用的 我启动MediaStore.ACTION_IMAGE_CAPTURE以使用摄像头,并试图让摄像头将图像存储在应用程序数据文件夹中 ContentValues values = new ContentValues(); values.put(Media.TITLE, "Image"); values.put(Images.Media.BUCKET_ID, path.hashCode()); val

我只是想确认一下,如果没有Android上的SD卡,相机是不能使用的

我启动MediaStore.ACTION_IMAGE_CAPTURE以使用摄像头,并试图让摄像头将图像存储在应用程序数据文件夹中

    ContentValues values = new ContentValues();
    values.put(Media.TITLE, "Image");
    values.put(Images.Media.BUCKET_ID, path.hashCode());
    values.put(Images.Media.BUCKET_DISPLAY_NAME, name);

    values.put(Images.Media.MIME_TYPE, "image/png");
    values.put(Media.DESCRIPTION, "Image capture by camera");
    values.put("_data", Constants.imagePath);

    Uri uri = getContentResolver().insert(
            Media.EXTERNAL_CONTENT_URI, values);
    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);

    startActivityForResult(cameraIntent, PICTURE_ACTIVITY);
我假设相机无法访问应用程序数据文件夹


因此,如果没有SD卡,就无法使用相机?

如果没有SD卡,相机应用程序将显示:

请在使用相机前插入SD卡

所以不,不可能

编辑: 检查应用程序源代码时,
updateStorageHint(剩余int)
表明,如果没有SD卡,它将始终显示“无存储”文本(同时检查菜单帮助
CalculatePicturesMaining()
)。

表明可以将图像保存到SD卡以外的位置:

媒体文件应该是 保存到设备的外部存储目录(SD卡)

(我的重点)

然而,使用内部存储会迅速耗尽通常非常有限的资源,这意味着这些文件只能与手机一起携带,而不能与卸下的SD卡一起携带

为了可靠性和“最佳实践”(我不喜欢这个短语)的利益,我建议您遵循该指南中的建议


内置摄像头应用程序似乎遵循了这些最佳实践,但也可以编写一个不遵循这些最佳实践的应用程序。

还有另一种方法可以执行图像捕获,在曲面视图上使用摄像头预览

通过使用此功能,您可以保存以前的图像并进行捕获。您可以传递应用程序的缓存目录
getCacheDir()
上下文方法

参考:

1)

2)

我想我会让应用程序的这一功能需要一张SD卡,因为我会想象几乎每个人的android设备中都有一张SD卡,而不是所有的android设备都有一个microSD插槽。有些有“内部存储”或“内部SD”或其他一些“USB存储”。这样的设备仍然可以保存图片。