我只想确认在Android上没有SD卡的情况下无法使用相机?
我触发MediaStore.ACTION_IMAGE_CAPTURE意图使用相机并试图让相机将图像存储在apps数据文件夹中
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卡就无法使用相机?
答案 0 :(得分:2)
您还可以使用表面视图上的相机预览来执行图像捕捉。
通过使用此功能,您可以保存以前的图像并进行捕获。您可以传递应用程序的缓存目录getCacheDir()
上下文方法。
参考:
1)https://github.com/commonsguy/cw-advandroid/tree/master/Camera/Preview/
2)http://android-er.blogspot.in/2010/12/camera-preview-on-surfaceview.html
答案 1 :(得分:0)
如果没有SD卡,相机应用程序将显示:
请在使用相机前插入SD卡。
所以不,不可能。
编辑:
检查Camera应用源代码,updateStorageHint(int remaining)
表示如果没有SD卡,它将始终显示“无存储”文本(同时检查MenuHelper calculatePicturesRemaining()
)。
答案 2 :(得分:0)
http://developer.android.com/guide/topics/media/camera.html#saving-media表示可以将图像保存到SD卡以外的位置:
媒体文件...... 应该 保存到设备的外部存储目录(SD卡)
(我的重点)
然而,使用内部存储会迅速耗尽通常非常有限的资源,并且意味着这些文件只能通过手机而不是移除的SD卡移植。
我建议为了可靠性和“最佳实践”(我不喜欢的一句话),您可以遵循该指南中的建议。
内置相机应用似乎遵循这些最佳做法,但有可能编写一个没有的应用。