Android捕获和使用图像不起作用

时间:2016-05-15 17:38:05

标签: android

我已在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)块内没有任何东西可以工作。如何使用从此活动中捕获的图像?

2 个答案:

答案 0 :(得分:2)

嗯,你有一些问题。

首先,您正在呼叫startActivityForResult(i, cons);cons0。您正在尝试将0CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE进行比较。由于CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE100,因此无效。

其次,您正在调用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对象进行上传或显示图片..

希望它对你有所帮助。