2017-02-24 11 views
0

私は、ユーザーがデバイスのカメラから写真をクリックし、この画像を次のアクティビティで画像ビューに設定するアプリケーションを作成しています。AndroidカメラのSDカードへの保存

デバイスのカメラが開く最初のアクティビティでカメラボタンをクリックした後、ユーザーがキャプチャボタンをクリックした後、次のアクティビティで画像ビューに設定されます。ここ は、このテイク画像ボタンがクリックされたときに、私のonActivityResultメソッド

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 

    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
     case TAKE_PICTURE: 
      if (resultCode == Activity.RESULT_OK) { 
       try { 
        Intent intent = new Intent(this,    websters.photobooth.ImageDisplay.class);       //sending this image to next activity 
        intent.putExtra("picture", photoid + ".jpg"); 
        startActivity(intent); 
       } catch (Exception e) { 
        Toast.makeText(this, e + "Failed to load", Toast.LENGTH_SHORT) 
          .show(); 
        Log.e("Camera", e.toString()); 
       } 
      }} 
} 

は、今、私が欲しいもの、そしてカメラが開かれますされ、その後、3の後に秒の画像を自動的に取得されたコード

public void loadImagefromGallery(View view) { 
    try { 
     // photo = new File(Environment.getExternalStorageDirectory().getAbsoluteFile() + "/DCIM", photoid + ".jpg");               //image gets stored in DCIM folder in device's inernal memory 
     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo)); 
     imageUri = Uri.fromFile(photo); 
     startActivityForResult(intent, TAKE_PICTURE); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 

の私の一部であり、ユーザの介入なしにクリックした。 また、今のところ、すべての画像は内部ストレージに保存されています。希望のフォルダ内の「photobooth」という名前のメモリカードに保存します。 人を助けてください。

+0

[アンドロイドで5秒ごとに写真を撮る]の可能複製(http://stackoverflow.com/questions/23045291/taking-pictures-in-android-every-5-seconds) –

答えて

0

ユーザーの関心なしで画像をキャプチャする場合は、google https://github.com/googlesamples/android-Camera2Basicで提供されているこのサンプルコードを参照してください。ここで簡単にCountDownTimerクラスを使用してください。

private void openCamera(int width, int height) { 
     if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA) 
       != PackageManager.PERMISSION_GRANTED) { 
      requestCameraPermission(); 
      return; 
     } 
     setUpCameraOutputs(width, height); 
     configureTransform(width, height); 
     Activity activity = getActivity(); 
     CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE); 
     try { 
      if (!mCameraOpenCloseLock.tryAcquire(2500, TimeUnit.MILLISECONDS)) { 
       throw new RuntimeException("Time out waiting to lock camera opening."); 
      } 
      manager.openCamera(mCameraId, mStateCallback, mBackgroundHandler); 
     } catch (CameraAccessException e) { 
      e.printStackTrace(); 
     } catch (InterruptedException e) { 
      throw new RuntimeException("Interrupted while trying to lock camera opening.", e); 
     } 
    } 


    private void takePicture() { 
     lockFocus(); 
    } 

    /** 
    * Lock the focus as the first step for a still image capture. 
    */ 
    private void lockFocus() { 
     try { 
      // This is how to tell the camera to lock focus. 
      mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, 
        CameraMetadata.CONTROL_AF_TRIGGER_START); 
      // Tell #mCaptureCallback to wait for the lock. 
      mState = STATE_WAITING_LOCK; 
      mCaptureSession.capture(mPreviewRequestBuilder.build(), mCaptureCallback, 
        mBackgroundHandler); 
     } catch (CameraAccessException e) { 
      e.printStackTrace(); 
     } 
    } 

    new CountDownTimer(30000, 1000) { 

    public void onTick(long millisUntilFinished) { 
     openCamera(your_required_width, your_required_height) 
    } 

    public void onFinish() { 
     takePicture() 
    } 
    }.start(); 
+0

にuはplsは作ることができます上記のコードの変更..bcz私は完全なコードを変更することはできません – Neha

関連する問題