我已在Android中编写代码来捕获图像,然后按如下方式使用该图像:
private static Intent i;
final static int cons = 0;
private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;
public void takePicture()
{
i= new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //Open camera
startActivityForResult(i, cons);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
Log.d("Testing if condition", "Test"); //This code does not execute
Bundle ext = data.getExtras();
Log.d("Upload image", ext.toString());
sendForUpload(data); // function to upload file to server
} else if (resultCode == RESULT_CANCELED) {
// User cancelled the image capture
} else {
// Image capture failed, advise user
}
}
}
此代码可让我拍照并保存到SD卡。但是,我不确定该文件是否已发送到我已处理获取路径和上传文件的sendForUpload
功能。实际上if (resultCode == RESULT_OK)
块内没有任何东西可以工作。如何使用从此活动中捕获的图像?
答案 0 :(得分:2)
嗯,你有一些问题。
首先,您正在呼叫startActivityForResult(i, cons);
。 cons
是0
。您正在尝试将0
与CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE
进行比较。由于CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE
为100
,因此无效。
其次,您正在调用data.getExtras().toString()
(拆分两个Java语句)。我希望这会返回像android.os.Bundle@34334143
这样的值。如果那是你要上传的内容,那很好。我猜你想要上传图片。由于您未在EXTRA_OUTPUT
ACTION_IMAGE_CAPTURE
中添加Intent
,因此您可以通过Bitmap
获得相机拍摄的缩略图data.getParcelableExtra("data")
。
第三,你做出了不恰当的假设:
此代码可让我拍照并保存到SD卡。
相机应用程序无需将图像保存到任何地方,更不用说removable storage了。事实上,我认为这是你的相机应用程序中的一个错误。这并不奇怪,因为ACTION_IMAGE_CAPTURE
implementations have bugs。
我已经处理了获取路径并上传文件
没有路径。您未在EXTRA_OUTPUT
ACTION_IMAGE_CAPTURE
中添加Intent
,因此您获得的只是缩略图Bitmap
。
答案 1 :(得分:-1)
我正在使用它将图像放入ImageView:
Uri uri = data.getData();
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
您可以使用位图或uri对象进行上传或显示图片..
希望它对你有所帮助。