2

我想发送照相机意图拍摄的照片。如何检测照片是否被拍摄(照相机意图)

  • 相机工作正常
  • 我有路径从mMediaUri.getPath()(这是正确的)
  • 我有没有办法把它(postImage())(正常工作)

当我开始一个意图,相机显示,但方法postImage不会等待,直到拍摄照片。 PostImage在启动意图后才加载。

如何在拍照后加载postImage?

如何检测照片是否被拍摄?

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
     mMediaUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); 
     if(mMediaUri == null){ 
      Toast.makeText(MainActivity.this, "Problem!", Toast.LENGTH_LONG).show(); 

     } 
     else { 
      takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mMediaUri); 
      startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); 

      postImage("mail", mMediaUri.getPath()); 

     } 

    } 

enter image description here

回答

6

简单的,你可以利用它来开启相机:

static final int REQUEST_IMAGE_CAPTURE = 1; 

private void dispatchTakePictureIntent() { 
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
     startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); 
    } 
} 

和检测捕获(确定或取消按钮)

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 
     Bundle extras = data.getExtras(); 
     Bitmap imageBitmap = (Bitmap) extras.get("data"); 
     mImageView.setImageBitmap(imageBitmap); 
    } 
} 

不要忘记给予许可:

<manifest ... > 
    <uses-feature android:name="android.hardware.camera" 
        android:required="true" /> 
    ... 
</manifest> 

还要检查这些链接:

http://developer.android.com/training/camera/photobasics.html https://developer.android.com/training/camera/index.html

+0

伟大的答案!谢谢!你有什么想法是可以摆脱这个OK按钮,拍照后返回OK? – klijakub

+1

@klijakub此屏幕(带有确定按钮)可以根据操作系统和设备型号而有所不同。例如,您在Sony XPERIA手机上看不到此屏幕。如果您不想看到此屏幕,则需要创建自定义相机活动。 –

相关问题