首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MediaStore.ACTION_IMAGE_CAPTURE

MediaStore.ACTION_IMAGE_CAPTURE
EN

Stack Overflow用户
提问于 2014-03-17 12:11:24
回答 1查看 768关注 0票数 0

我使用下面的代码打开一个意图捕获和图像,并返回带有特定request_code的结果

代码语言:javascript
复制
    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);

这种意图显示了相机捕捉图像的意图,并且一切都做得很好。它也会捕获图像,但就在单击保存按钮时,它遇到了runtimeException。

代码语言:javascript
复制
    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
EN

回答 1

Stack Overflow用户

发布于 2014-03-17 12:35:27

我认为下面的代码对你很有帮助。

代码语言:javascript
复制
//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);

//使用onActivityResult()方法编写代码

代码语言:javascript
复制
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;
        }
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22446814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档