Java Android摄像头可拍摄多张照片

Java Android摄像头可拍摄多张照片,java,android,mysql,Java,Android,Mysql,问题课程: public class problem extends Activity { ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(

问题课程:

    public class problem extends Activity {

        ImageView iv;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.problem);

    iv=(ImageView) findViewById(R.id.imageView1);

    Button b=(Button) findViewById(R.id.button1);
    b.setOnClickListener(new OnClickListener() {

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

        }
    });
            }

         @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        Bitmap bm=(Bitmap) data.getExtras().get("data");
       iv.setImageBitmap(bm);
           }    
           }
这就是我想做的:

  • 拍摄多张照片

  • 在屏幕上显示它们

  • 将它们存储在mysql数据库中

我是android新手,请告诉我怎么做。我搜索过。但我找不到答案。
此代码只拍摄一张照片。

保存前在屏幕上显示图像:

使用我的代码。我正在使用camera intent拍摄一张照片,在将其保存到gallery之前,它会通过保存和取消按钮显示给用户:-调用camera intent:-

// This code is to call the camera intent. Basically it will start your camera. Put this code in a button or something                        
String SD_CARD_TEMP_DIR = Environment.getExternalStorageDirectory() + File.separator +CommonFunction.getDateTime()+".jpg"; // Get File Path
                        Intent takePictureFromCameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                        takePictureFromCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(SD_CARD_TEMP_DIR)));
                        startActivityForResult(takePictureFromCameraIntent, 123);
onActivityResult:-

// This function is called when you come back to your activity after the intent has finished. Do read android documentation on Google. It will Help
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == CAMERA_RESULT) 
    {
        if (resultCode == Activity.RESULT_OK) 
        {
            String galleryImatePath = SD_CARD_TEMP_DIR; // make SD_CARD_TEMP_DIR Global so that you can access it here from camera intent or pass it in put Extra method and retrieve it here
            File f = new File(galleryImatePath);

            try {//This code will rotate your image if you have taken the image by rotating the camera
                        Bitmap cameraBitmap = null;
                        BitmapFactory.Options bmOptions = new BitmapFactory.Options();
                        bmOptions.inJustDecodeBounds = false;
                        bmOptions.inPurgeable = true;
                        bmOptions.inBitmap = cameraBitmap; 
                        bmOptions.inMutable = true; 


                        cameraBitmap = BitmapFactory.decodeFile(galleryImatePath,bmOptions);
                        ByteArrayOutputStream bos = new ByteArrayOutputStream();
                        cameraBitmap.compress(Bitmap.CompressFormat.JPEG, 50, bos);

                        //To Rotate image Code
                            ExifInterface exif = new ExifInterface(galleryImatePath);
                            float rotation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);  
                            System.out.println(rotation);

                        float rotationInDegrees = exifToDegrees(rotation);
                        System.out.println(rotationInDegrees);

                        Matrix matrix = new Matrix();
                        matrix.postRotate(rotationInDegrees);

                        final Bitmap rotatedBitmap = Bitmap.createBitmap(cameraBitmap , 0, 0, cameraBitmap.getWidth(), cameraBitmap.getHeight(), matrix, true);
                        FileOutputStream fos=new FileOutputStream(galleryImatePath);
                        rotatedBitmap.compress(Bitmap.CompressFormat.JPEG, 50, fos);
                        fos.write(bos.toByteArray());
                        cameraBitmap.recycle();
                        System.gc();
                        fos.flush();
                        fos.close();


                        // To set image in imageview in dialog. This code will set your image in a custon dialog box "captiondialog". It will contain a full width and height imageview and two textviews - done and cancel. It is upto u what you want to define in the textview's click listener. For example, you can pass the storing image in database in the "Done" textview and "Cancel" textview will dismiss your captiondialog and you app will return to your activity
                    Capdialog = new Dialog(AddToDo.this,android.R.style.Theme_NoTitleBar_Fullscreen);
                    Capdialog.setContentView(R.layout.captiondialog);
                    Capdialog.setCancelable(false);
                    TextView cancel = (TextView) Capdialog
                            .findViewById(R.id.cancel);
                    TextView done = (TextView) Capdialog.findViewById(R.id.done);
                                                Capdialog.getWindow().setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
                    ImageView img = (ImageView) Capdialog.findViewById(R.id.image);
                    img.setImageBitmap(rotatedBitmap);
               }
               catch(Exception e){}
      }
 }
}
实现您的“完成”和“单击时取消”侦听器-您希望在其中执行的操作。“我的代码”将捕获您的图像,在不考虑相机旋转的情况下沿正确方向旋转图像,并在保存之前在对话框中显示给您

此代码将在DB中存储您的图像。您必须使用“blob”来存储图像。。使用此代码:- public void insertImageInDb(int-id,位图img){

}

设备摄像机有一个可选的意图动作,在静止图像模式下启动摄像机,直到用户完成活动后才退出:

Intent intent = new Intent(
    MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
this.startActivity(intent);
与ContentObserver一起使用这正是我需要完成的。或者在ActivityResult中处理此问题


注意:-如果你是android新手,这对你现在来说太难理解了。请先在谷歌上阅读android文档并阅读教程。制作基本的应用程序。先学习

您能否详细解释上述代码。这很难理解,因为我是android新手。@user2975407-我已经编辑了我的代码,并添加了解释代码的详细注释。不过,我建议您先阅读android文档和教程,了解AndroidCommonFunction意味着什么?-无论如何,谢谢您的帮助。我会先阅读文档。@Rahul谢谢您的帮助。
Intent intent = new Intent(
    MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
this.startActivity(intent);