0

我正在尝试在 android 上捕获图像并将其显示在图像视图上;活动开始时调用的捕获意图,当我运行应用程序时,图像视图与调用捕获意图的活动相同,相机捕获图像两次,然后在图像视图中显示图像?!任何想法为什么?我该如何解决?

> 活动.java

public class View extends Activity{
    ImageView imgview;
    Bitmap Bmp;
    final static int cameraData = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.camera);
        imgview = (ImageView) findViewById(R.id.imgview);
        Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

        startActivityForResult(i, cameraData);


    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            Bundle extras = data.getExtras();
            Bmp = (Bitmap) extras.get("data");
            imgview.setImageBitmap(Bmp);    }


    }}

> 相机.xml

   <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
    xmlns:opencv="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >


    <ImageView
        android:id="@+id/imgview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:contentDescription="Image view"
         android:src="@drawable/ic_launcher"
      />

</FrameLayout>
4

3 回答 3

0

基本上只是一个猜测,但我认为您的活动 onCreate 方法也会在相机拍摄第一张照片后调用(!?)尝试类似

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.camera);
    imgview = (ImageView) findViewById(R.id.imgview);

    if(!getIntent.hasExtra("data")){
        Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(i, cameraData);
    }
}

我对此不太确定,现在无法测试某些东西(这里没有安装 sdks),但我希望它有所帮助!

于 2013-10-05T16:55:49.890 回答
0

您最好调用startActivityForResult()一个事件(例如单击按钮)。

而不是直接调用 form onCreate(),添加一个按钮并在按钮单击中启动相机意图。

于 2013-10-05T16:53:09.763 回答
0

我盯着你的代码看,看不到任何东西,除了相机应用程序外,我看起来很熟悉。

这是相机应用程序的指南

一目了然,您可以执行以下操作:

  1. 您得到一个Camera实例和一个CameraPreview(a FrameLayout) 并将预览放入您的布局中。
  2. 要捕获图像(在您的应用程序中触发此图像),您可以使用Camera.takePicture().
  3. 这反过来又调用onPictureTaken()PictureCallback. 在onPictureTaken()您的内部获得包含图像数据的文件getOutputMediaFile()
  4. 复制它并享受数据的乐趣。
于 2013-10-05T18:11:14.070 回答