1

画像をキャプチャしてSDカードに保存することを参考にしました。それはうまく機能しています。ボタンをクリックするまで、画像がアクティビティに表示されるようにします。誰かがそれを可能にする方法を私に提案できますか????

ここにコードを貼り付けています。ここで私が間違っているところを教えてください。

DVCamera.class

    public class DVCameraActivity extends Activity {  

        static Uri capturedImageUri=null;
        Button ButtonClick1,ButtonClick2;
        ImageView image1,image2;
        int CAMERA_PIC_REQUEST = 2; 
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            ButtonClick1 =(Button) findViewById(R.id.buttonClick1);
            ButtonClick2 = (Button) findViewById(R.id.buttonClick2);
            image2 =(ImageView) findViewById(R.id.PhotoCaptured2);
            image1 =(ImageView) findViewById(R.id.PhotoCaptured1);
            ButtonClick1.setOnClickListener(new OnClickListener (){
                @Override
                public void onClick(View view)
                {
                    Calendar cal = Calendar.getInstance();
                    File file = new File(Environment.getExternalStorageDirectory(),  (cal.getTimeInMillis()+".jpg"));
                    if(!file.exists()){
                        try {
                            file.createNewFile();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }else{
                        file.delete();
                        try {
                            file.createNewFile();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                    capturedImageUri = Uri.fromFile(file);
                    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                    // request code
                    //cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, capturedImageUri);
                    startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);

                }
            });

            ButtonClick2.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    Calendar cal = Calendar.getInstance();
                    File file = new File(Environment.getExternalStorageDirectory(),  (cal.getTimeInMillis()+".jpg"));
                    if(!file.exists()){
                        try {
                            file.createNewFile();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }else{
                        file.delete();
                        try {
                            file.createNewFile();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                    // TODO Auto-generated method stub
                    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                    // request code
                    //cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, capturedImageUri);
                    capturedImageUri = Uri.fromFile(file);
                    startActivityForResult(cameraIntent, 1337);
                }
            });
        }

        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) 
        {
            if( requestCode == CAMERA_PIC_REQUEST)
            {
                //  data.getExtras()

                Bitmap bitmap = null;
                try {
                    bitmap = MediaStore.Images.Media.getBitmap( getApplicationContext().getContentResolver(),  capturedImageUri);
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                image1.setImageBitmap(bitmap);
            }
            else if(requestCode == 1337)
            {

                Bitmap bitmap = null;
                try {
                    bitmap = MediaStore.Images.Media.getBitmap( getApplicationContext().getContentResolver(),  capturedImageUri);
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                image2.setImageBitmap(bitmap);
            }
            else 
            {
                Toast.makeText(DVCameraActivity.this, "Picture NOt taken", Toast.LENGTH_LONG).show();
            }
            super.onActivityResult(requestCode, resultCode, data);
        }
    }

そして、hreはレイアウトファイルmain.xmlです

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/buttonClick1"
                android:layout_width="150dp"
                android:layout_height="wrap_content"
                android:text="Click for Photo1" />

            <Button
                android:id="@+id/buttonClick2"
                android:layout_width="150dp"
                android:layout_height="wrap_content"
                android:text="Click for Photo2" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <ImageView
                android:id="@+id/PhotoCaptured1"
                android:layout_width="150dp"
                android:layout_height="200dp" />
            <ImageView
                android:id="@+id/PhotoCaptured2"
                android:layout_width="150dp"
                android:layout_height="200dp" />
        </LinearLayout>
        <!--
        <FrameLayout
        android:id="@+id/camera_preview"
        android:layout_gravity="center"
        android:layout_width="200dp"
        android:layout_height="200dp"
        />
        -->

    </LinearLayout>

そして、any1が、キャプチャした画像をデータベースに保存するために私がしなければならないことを私に示唆することができれば、それは私にとって別の利点になります。

前もって感謝します..

4

4 に答える 4

2

このようなボタンでカメラを起動できます..

ButtonClick2.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    Intent cameraIntent = new                                     Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
            startActivityForResult(cameraIntent, CAMERA_REQUEST);  

                }
            });





and then..

protected void onActivityResult(int requestCode, int resultcode, Intent intent)
  {
      super.onActivityResult(requestCode, resultcode, intent);

      if (requestCode == CAMERA_REQUEST) {  

          Bitmap photo = (Bitmap) intent.getExtras().get("data"); 
          image1.setImageBitmap(bitmap);


      }  


  }

これはあなたを助けるかもしれないと思います。

于 2012-07-11T13:21:24.080 に答える
1

フルサイズの画像を保存してSDカードから読み取るためのGoogleトレーニングを確認する必要があります。また、画像をデータベースに保存するには、ファイルのある場所にアドレスを保存する必要があるSQLiteデータベースを使用してください。また、画像を表示したい場合は、データベースを読み取り、Googleトレーニングのコードを使用してSDから画像を取得します。

お役に立てば幸いです。

于 2012-07-11T13:51:37.083 に答える
0

uが画像をキャプチャするとき、「保存」と「破棄」の2つのオプションがあると思います。保存ボタンをクリックすると、自動的にsdcardに保存されます。

于 2012-07-12T04:27:09.663 に答える
0

このコードは、データベースに画像を保存するためのものです。

 ByteArrayOutputStream baos = new ByteArrayOutputStream();
            camaraBitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
            byte[] data = baos.toByteArray();

            for(int i=0;i<yourCursorLastPosition;i++){
            cursor.moveToPosition(i);   
            ContentValues cv = new ContentValues(imageColumnNo);

            cv.put(MyDbHelper.COL_IMG, data);

            mdb.insert(MyDbHelper.TABLE_NAME, null, cv);
            }
于 2012-07-12T06:18:40.710 に答える