如何将捕获的图像传递给其他活动

时间:2014-08-13 07:44:10

标签: android android-camera

我想创建自己的相机应用程序。

MainActivity有一个ImageView点击时会有摄像头图像,它会转到CameraActivity。一旦我按下"相机" ImageView,将拍摄照片。拍摄的照片将返回MainActivity并显示在ViewSwitcher的图库窗口小部件上。问题是,我不知道如何将照片从CameraActivity传回MainActivity。

希望有人能给出一个提示或示例吗?

3 个答案:

答案 0 :(得分:0)

当您从MainActivity中的MainActivity startActivityForResult() onActivityResult()`启动CameraActivity时,您应该使用. then you can get path of taken picture in

从MainActivity调用相机活动

Intent intent = new Intent(MainActivity.this,CameraActivity.class);
        startActivityForResult(intent, 1);

通过从CameraActivity到MainActivity的意图传递当前捕获图像的路径,  看看下面的代码片段

Intent intent = new Intent(CameraActivity.this,MainActivity.class);
        intent.putExtra("Imagepath", your ImagePath);
        setResult(RESULT_OK, intent);
        finish();

然后在onActivityResult()中,您将获得该图像路径,使用该路径可以访问MainActivity中的图像

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

try{

    if (requestCode == 1 && resultCode == RESULT_OK) {
        data.getData();
        imagePath= data.getStringExtra("Imagepath");
        System.out.println("image Path:- " + imagePath);
    }
}

答案 1 :(得分:0)

使用以下给定的方法在 MainActivity

中打开相机
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);
    }
}

MainActivity 中实施onActivityResult()以获取点击的图片:

@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);
    }
}

在您的清单文件中添加权限

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

答案 2 :(得分:0)

您可以使用上面的答案解决您遇到的问题,

但我要做的是拍摄拍摄图像的实际文件路径并将其保存在一些单独的照片管理器中。

在这种情况下,您不会在活动之间转移不必要的字节。您可以将所有图像放在一个位置,并且可以在整个应用程序中随时使用它们。

我还会使用UIL来显示图片,这样您就可以增加内存管理和应用的性能。

当然,您可以选择另一个照片加载库: 毕加索,Volley或其他。这取决于你。

问候。