如何检测照片是否被拍摄(照相机意图)
问题描述:
我想发送照相机意图拍摄的照片。如何检测照片是否被拍摄(照相机意图)
- 相机工作正常
- 我有路径从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());
}
}
答
简单的,你可以利用它来开启相机:
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
伟大的答案!谢谢!你有什么想法是可以摆脱这个OK按钮,拍照后返回OK? – klijakub
@klijakub此屏幕(带有确定按钮)可以根据操作系统和设备型号而有所不同。例如,您在Sony XPERIA手机上看不到此屏幕。如果您不想看到此屏幕,则需要创建自定义相机活动。 –