2011-06-12 64 views
1

我试图用相机使用意图与onActivityResult拍摄一张照片,但是每次我拍照时相机都会锁定并永不返回。为什么会发生这种情况?这是我使用的代码:Android相机意图不会返回/锁定

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Log.v(TAG,"Camera callback: "+Integer.toString(resultCode)); 
    if (requestCode == CAMERA_PIC_REQUEST) { 
     try{ 
      Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
      Log.v("Picture view",data.getData().toString()); 
      ImageView image = new ImageView(this); 
      image.setImageBitmap(thumbnail); 
      setContentView(image); 
     } 
     catch(Exception e){ 
      Log.e(TAG, "something happened"); 
      e.printStackTrace(); 
     } 

    } 
} 

这是在拍照后的logcat的输出:

06-12 19:46:03.881: VERBOSE/camera(443): Start autofocus. 
06-12 19:46:04.521: VERBOSE/camera(443): doSnap: mFocusState=1 
06-12 19:46:04.721: VERBOSE/camera(443): mAutoFocusTime = 790ms 

那么它只是锁定了和onActivityResult永远不会触发。

感谢您的输入。

回答

1

我阅读了一大堆教程,每个人都做得不一样。官方Android文档使用Camera-类(在链接页面上的分步教程)。

我发现this other tutorial(它与您一样使用MediaStore -class),但为Intent上的Output-File增加了额外的值。

你可能想检查这两个教程,看看是否适合你。

+0

感谢您的回答卢卡斯。事情是,这是随机发生的,有时它会工作,有时不会。当它锁定时,我必须强制停止相机,如果我再试一次,它会抱怨相机服务不可用。我会研究你发布的链接,看看它是否能解决问题。 – Ryan 2011-06-12 21:24:47

+0

也许这是你的设备/模拟器的问题?你尝试过不同的设备吗? – 2011-06-12 21:29:53

+0

很确定它是仿真器,有时我必须在它工作之前重新启动它2-3次。无论如何,感谢帮助卢卡斯。 – Ryan 2011-06-12 23:49:48