[英]MediaStore.ACTION_IMAGE_CAPTURE
I am using the following code to open an intent to capture and image and return the result with a specific request_code 我正在使用以下代码来打开捕获和成像的意图,并使用特定的request_code返回结果
Intent imageCapture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File mediaStorageDir=new File(Environment.getExternalStorageDirectory(),"zzz");
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d("zzz", "failed to create directory");
return null;
}
}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date());
Uri imageFile=Uri.fromFile(new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg"));
Log.d("zzz",""+imageFile); // to check whether filename is correct or not!!!
imageCapture.putExtra(MediaStore.EXTRA_OUTPUT, imageFile);
startActivityForResult(imageCapture, 1);
This intent shows the camera intent for capturing an image and does everything just as fine. 此意图表明相机拍摄图像的意图,并且一切都很好。 It also captures the image, but just when the save button is clicked, it encounters a runtimeException.
它还捕获图像,但是仅在单击保存按钮时,它会遇到runtimeException。
03-17 09:34:32.324: E/AndroidRuntime(26771): FATAL EXCEPTION: main
03-17 09:34:32.324: E/AndroidRuntime(26771): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null} to activity {idiot.houses.numberslider/idiot.houses.numberslider.MainActivity}: java.lang.NullPointerException
03-17 09:34:32.324: E/AndroidRuntime(26771): at android.app.ActivityThread.deliverResults(ActivityThread.java:3205)
03-17 09:34:32.324: E/AndroidRuntime(26771): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3248)
03-17 09:34:32.324: E/AndroidRuntime(26771): at android.app.ActivityThread.access$1200(ActivityThread.java:140)
03-17 09:34:32.324: E/AndroidRuntime(26771): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1285)
03-17 09:34:32.324: E/AndroidRuntime(26771): at android.os.Handler.dispatchMessage(Handler.java:99)
03-17 09:34:32.324: E/AndroidRuntime(26771): at android.os.Looper.loop(Looper.java:137)
03-17 09:34:32.324: E/AndroidRuntime(26771): at android.app.ActivityThread.main(ActivityThread.java:4921)
03-17 09:34:32.324: E/AndroidRuntime(26771): at java.lang.reflect.Method.invokeNative(Native Method)
03-17 09:34:32.324: E/AndroidRuntime(26771): at java.lang.reflect.Method.invoke(Method.java:511)
03-17 09:34:32.324: E/AndroidRuntime(26771): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
03-17 09:34:32.324: E/AndroidRuntime(26771): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
03-17 09:34:32.324: E/AndroidRuntime(26771): at dalvik.system.NativeStart.main(Native Method)
03-17 09:34:32.324: E/AndroidRuntime(26771): Caused by: java.lang.NullPointerException
03-17 09:34:32.324: E/AndroidRuntime(26771): at edu.vuum.mocca.ui.story.CreateStoryFragment.onActivityResult(CreateStoryFragment.java:316)
03-17 09:34:32.324: E/AndroidRuntime(26771): at edu.vuum.mocca.ui.story.StoryActivityBase.onActivityResult(StoryActivityBase.java:291)
03-17 09:34:32.324: E/AndroidRuntime(26771): at android.app.Activity.dispatchActivityResult(Activity.java:5372)
03-17 09:34:32.324: E/AndroidRuntime(26771): at android.app.ActivityThread.deliverResults(ActivityThread.java:3201)
03-17 09:34:32.324: E/AndroidRuntime(26771): ... 11 more
I think following code is helpful to you. 我认为以下代码对您有所帮助。
//code for calling intent
String fileName = "temp.jpg";
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
mCapturedImageURI = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);
startActivityForResult(intent, PICK_FROM_CAMERA);
//code write in onActivityResult() method //代码写入onActivityResult()方法
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != Activity.RESULT_OK)
return;
switch (requestCode) {
case PICK_FROM_CAMERA:
String[] projection = { MediaStore.Images.Media.DATA};
Cursor cursor = managedQuery(mCapturedImageURI, projection, null, null, null);
int column_index_data = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String capturedImageFilePath = cursor.getString(column_index_data);
break;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.