0

Androidで画像をキャプチャして画像ビューに表示しようとしています。アクティビティの開始時に呼び出されるキャプチャ インテント、およびイメージ ビューは、アプリケーションを実行するときにキャプチャ インテントを呼び出す同じアクティビティにあります。カメラはイメージを 2 回キャプチャし、イメージ ビューにイメージを表示しますか?! なぜアイデアはありますか?どうすれば修正できますか?

>アクティビティ.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);
    }
}

私はこれについてあまり確信が持てず、現在何かをテストすることはできません(ここにSDKがインストールされていません)が、それが役立つことを願っています!

于 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 に答える