簡體   English   中英

使用 Android 中的相機拍攝圖像

[英]capturing image using camera in Android

嗨 stackoverflow 朋友,我需要使用相機拍照,然后將圖片 go 拍攝到下一個活動而不顯示第一個活動。 並將其顯示在 imageview 中。 以下是我的申請流程

第一個活動-> 有相機意圖按鈕-> 轉到下一個活動(不顯示第一個活動)第二個活動-> 我需要在 imageview 中顯示圖像。

我看到了很多相機意圖的例子,沒有人解釋如何在不顯示第一個活動的情況下將 go 轉到下一個活動,並將其顯示在第二個活動的 imageview 中。

重復顯示 imageview 中的圖像時是否出現內存不足問題?

提前致謝

在第一個活動中:

 Button b=(Button)findViewByid(R.id.button);
 b.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
    doTakePhotoAction();

    }
}); 
    private void doTakePhotoAction() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
mUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(),
    "pic_" + String.valueOf(System.currentTimeMillis()) + ".jpg"));
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mUri);

try {
    intent.putExtra("return-data", true);
    startActivityForResult(intent, CAMERA_RESULT);
       // finish();
} catch (ActivityNotFoundException e) {
    e.printStackTrace();
}
}

 protected void onActivityResult(int requestCode, 
    int resultCode, Intent data) {
if (resultCode != RESULT_OK) {
    return;
}
if (requestCode == CAMERA_RESULT) {
    Intent intent = new Intent(this, nextimage.class);
    // here you have to pass absolute path to your file
    intent.putExtra("image-path", mUri.getPath());
    intent.putExtra("scale", true);
    startActivity(intent);
        finish();
}
}

在 nextimage.class 中,您可以設置一個圖像視圖並從 putExtra 獲取圖像路徑並將其放置在 imageview 中。

  String mImagePath = extras.getString("image-path");
  Bitmap mBitmap = getBitmap(mImagePath);
   private Uri getImageUri(String path) {
return Uri.fromFile(new File(path));
}

private Bitmap getBitmap(String path) {
Uri uri = getImageUri(path);
InputStream in = null;
try {
    in = mContentResolver.openInputStream(uri);
    return BitmapFactory.decodeStream(in);
} catch (FileNotFoundException e) {
    Log.e(TAG, "file " + path + " not found");
}
return null;
}

將 bitmap 放在 imageview 中。您必須在 secondActivity 中創建 imageview。

使用相機意圖....這是一個簡單的代碼

import android.app.Activity;

import android.content.Intent;

import android.graphics.Bitmap;

import android.os.Bundle;

import android.widget.ImageView;

public class CameraIntent extends Activity {

final static int CAMERA_RESULT = 0;

ImageView imv;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

    startActivityForResult(i, CAMERA_RESULT);

}

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

super.onActivityResult(requestCode, resultCode, intent);

if (resultCode == RESULT_OK)

{

Get Bundle extras = intent.getExtras();

Bitmap bmp = (Bitmap) extras.get("data");

imv = (ImageView) findViewById(R.id.ReturnedImageView);

imv.setImageBitmap(bmp);

}

}

}

為此使用以下代碼,它將解決您的問題。

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);

onActivityResult() 方法:-

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == CAMERA_PIC_REQUEST) {
            bmpImage = (Bitmap) data.getExtras().get("data");
            drawable = new BitmapDrawable(bmpImage);
            mImageview.setImageDrawable(drawable);
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM