从Android相机拍照并将其发送到网络服务器

时间:2011-07-01 09:57:54

标签: android image android-activity camera android-intent

我建立一些调用相机活动的应用程序..

我只是从我的应用中拍照并将其发送到网络服务器..

但我无法获得我的图像路径..

我总是在尝试获取图像路径时遇到NullException错误..

这是调用相机活动时的代码:

Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    this.startActivityForResult(camera, PICTURE_RESULT);

这是活动结果的代码:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == PICTURE_RESULT){
        if (resultCode == Activity.RESULT_OK) {
            takePicture(data);
        } else if (resultCode == Activity.RESULT_CANCELED) {

        }
    }
}

protected void takePicture(Intent data) {
    Bundle b = data.getExtras();
    pic = (Bitmap) b.get("data");
    if (pic != null) {
        imagePicture.setImageBitmap(pic);
    }
}

我的代码有问题吗?

由于

1 个答案:

答案 0 :(得分:2)

好的,我看到了你的问题。您没有设置开始的路径。请看这个文档。

http://developer.android.com/reference/android/provider/MediaStore.html#ACTION_IMAGE_CAPTURE

所以你看,当你调用ACTION_IMAGE_CAPTURE时,你没有传递额外的EXTRA_OUTPUT,告诉应用程序将存储图片的位置。此EXTRA_OUTPUT是文件的路径。

所以,在你实现意图的地方,这样做:

Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
URI pictureUri = Uri.fromFile(new File(<path to your file>));
camera.putExtra(MediaStore.EXTRA_OUTPUT, pictureUri);