【问题标题】:Android Camera to open and then open the captured image in a new activityAndroid Camera 打开然后在新活动中打开捕获的图像
【发布时间】:2012-09-18 10:01:09
【问题描述】:

我想制作一个应用程序,当我按下某个按钮时,我想打开摄像头然后捕捉图像,然后在捕捉它之后。

我想在一个新的activity中打开这个图片,把这个图片放到这个新的activity中,除了两个按钮,一个是删除,另一个是保存到平板的某个目录中。

我用代码打开摄像头:

    Open_CAM.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v)  {

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

我不知道在那之后我能做什么?

请帮忙...

【问题讨论】:

    标签: java android eclipse android-camera


    【解决方案1】:
    Open_CAM.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v)  {
                    Intent photoPickerIntent= new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    photoPickerIntent.putExtra(MediaStore.EXTRA_OUTPUT, getTempFile());
                    photoPickerIntent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
                    photoPickerIntent.putExtra("return-data", true);
                    startActivityForResult(photoPickerIntent,TAKE_PICTURE);}}
    
     private Uri getTempFile() 
     {
          File root = new File(Environment.getExternalStorageDirectory(), "ServiceMySigns");
          if (!root.exists()) 
          {
              root.mkdirs();
          }
         final Calendar c = Calendar.getInstance();
         int y = c.get(Calendar.YEAR);
         int m = c.get(Calendar.MONTH);
         int d = c.get(Calendar.DAY_OF_MONTH);
    
         int h = c.get(Calendar.HOUR_OF_DAY);
         int mi = c.get(Calendar.MINUTE);
    
          //String filename=""+y+"-"+"-"+(m+1)+"-"+d+" "+h+":"+mi;
          String filename=""+System.currentTimeMillis();
          File file = new File(root,filename+".jpeg" );
          muri = Uri.fromFile(file);
          selectedImagePath=muri.getPath();
          Log.v("take picture path",selectedImagePath);
          return muri;
      }
    
      public void onActivityResult(int requestcode,int resultcode ,Intent data)
      {
          switch(requestcode)
          { 
          case TAKE_PICTURE: 
              if(resultcode==RESULT_OK)
              { 
                  BitmapFactory.Options o = new BitmapFactory.Options();
                  o.inSampleSize=8;
                  Bitmap newImage = Bitmap.createScaledBitmap(BitmapFactory.decodeFile(selectedImagePath,o), 
                                                             150, 
                                                             150, 
                                                             false);}}}
    

    在 onActivityResult 中获得位图后,您可以通过 Intent 将该位图发送到另一个活动。

    【讨论】:

      【解决方案2】:

      下面的代码将帮助您从相机拍照并将图像设置到下一个活动

      private void takePicture() {
           cameraIntent = new Intent(
           android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
           startActivityForResult(cameraIntent, IMAGE_CAPTURE);
      }
      
      // Receive the result from the start Activity
          @Override
          protected void onActivityResult(int requestCode, int resultCode, Intent data) {
              super.onActivityResult(requestCode, resultCode, data);
      
              Log.e("onActivityResult", "we r in onActivityResult");
      
              if (resultCode == Activity.RESULT_OK) {
                  switch (requestCode) {
      
                  case IMAGE_CAPTURE:
      
                      File dir = Environment .getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
                      File output = new File(dir, "camerascript.png");
                      cPath = output.getAbsolutePath();
                      cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                              Uri.fromFile(output));
                      Intent capIntent = new Intent(yourcurrentActivity.this,
                              yournextActivity.class);
                      capIntent.putExtra("gallery", cPath);
                      startActivity(capIntent);
                      break;
                  default:
                      break;
                  }
              }
          }
      

      然后将 intnet 额外数据输入到您想要设置捕获图像的yournextAactivity

              ImageView imageView = (ImageView)findViewById(R.id.imgView);
          String fileString = getIntent().getStringExtra("gallery");
          imageView.setImageBitmap(BitmapFactory.decodeFile(fileString));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 2017-01-08
        相关资源
        最近更新 更多