가능한 중복 :
내 문제는 내가 단지 카메라를 시작하고 이미지를 캡처 버튼을 클릭 의도를 사용하여 캡처 할 수있다
Capture image with front camera without opening the camera application in android자동으로 안드로이드에서 이미지를 캡처하는 방법
. 단추를 클릭하지 않거나 추가 할 수있는 코드를 자동으로 수행 할 수 있습니까? 미리 감사드립니다. 자동으로 캡처 버튼을 누르지 않고
가능한 중복 :
내 문제는 내가 단지 카메라를 시작하고 이미지를 캡처 버튼을 클릭 의도를 사용하여 캡처 할 수있다
Capture image with front camera without opening the camera application in android자동으로 안드로이드에서 이미지를 캡처하는 방법
. 단추를 클릭하지 않거나 추가 할 수있는 코드를 자동으로 수행 할 수 있습니까? 미리 감사드립니다. 자동으로 캡처 버튼을 누르지 않고
public class CameraView extends Activity implements SurfaceHolder.Callback, OnClickListener{
private static final String TAG = "CameraTest";
Camera mCamera;
boolean mPreviewRunning = false;
@SuppressWarnings("deprecation")
public void onCreate(Bundle icicle){
super.onCreate(icicle);
Log.e(TAG, "onCreate");
getWindow().setFormat(PixelFormat.TRANSLUCENT);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.cameraview);
ImageView img = (ImageView) findViewById(R.id.blankImage);
if(CaptureCameraImage.isBlack)
img.setBackgroundResource(android.R.color.black);
else
img.setBackgroundResource(android.R.color.white);
mSurfaceView = (SurfaceView) findViewById(R.id.surface_camera);
mSurfaceView.setOnClickListener(this);
mSurfaceHolder = mSurfaceView.getHolder();
mSurfaceHolder.addCallback(this);
mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState){
super.onRestoreInstanceState(savedInstanceState);
}
Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
// TODO Auto-generated method stub
if (data != null){
//Intent mIntent = new Intent();
//mIntent.putExtra("image",imageData);
mCamera.stopPreview();
mPreviewRunning = false;
mCamera.release();
try{
BitmapFactory.Options opts = new BitmapFactory.Options();
Bitmap bitmap= BitmapFactory.decodeByteArray(data, 0, data.length,opts);
bitmap = Bitmap.createScaledBitmap(bitmap, 300, 300, false);
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int newWidth = 300;
int newHeight = 300;
// calculate the scale - in this case = 0.4f
float scaleWidth = ((float) newWidth)/width;
float scaleHeight = ((float) newHeight)/height;
// createa matrix for the manipulation
Matrix matrix = new Matrix();
// resize the bit map
matrix.postScale(scaleWidth, scaleHeight);
// rotate the Bitmap
matrix.postRotate(-90);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,
width, height, matrix, true);
CaptureCameraImage.image.setImageBitmap(resizedBitmap);
}catch(Exception e){
e.printStackTrace();
}
//StoreByteImage(mContext, imageData, 50,"ImageName");
//setResult(FOTO_MODE, mIntent);
setResult(585);
finish();
}
}
};
protected void onResume(){
Log.e(TAG, "onResume");
super.onResume();
}
protected void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
}
protected void onStop(){
Log.e(TAG, "onStop");
super.onStop();
}
@TargetApi(9)
public void surfaceCreated(SurfaceHolder holder){
Log.e(TAG, "surfaceCreated");
mCamera = Camera.open(CaptureCameraImage.cameraID);
}
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
Log.e(TAG, "surfaceChanged");
// XXX stopPreview() will crash if preview is not running
if (mPreviewRunning){
mCamera.stopPreview();
}
Camera.Parameters p = mCamera.getParameters();
p.setPreviewSize(300, 300);
if(CaptureCameraImage.cameraID == 0){
String stringFlashMode = p.getFlashMode();
if (stringFlashMode.equals("torch"))
p.setFlashMode("on"); // Light is set off, flash is set to normal 'on' mode
else
p.setFlashMode("torch");
}
mCamera.setParameters(p);
try{
mCamera.setPreviewDisplay(holder);
}catch (Exception e){
// TODO Auto-generated catch block
e.printStackTrace();
}
mCamera.startPreview();
mPreviewRunning = true;
mCamera.takePicture(null, mPictureCallback, mPictureCallback);
}
public void surfaceDestroyed(SurfaceHolder holder) {
Log.e(TAG, "surfaceDestroyed");
//mCamera.stopPreview();
//mPreviewRunning = false;
//mCamera.release();
}
private SurfaceView mSurfaceView;
private SurfaceHolder mSurfaceHolder;
public void onClick(View v) {
// TODO Auto-generated method stub
mCamera.takePicture(null, mPictureCallback, mPictureCallback);
}
}
당신은 또한이 활동을 호출 코드 mCamera.takePicture (널 (null), mPictureCallback, mPictureCallback)의 라인 아래 확인해야합니다; 당신은 당신은
에서 전체 프로젝트를 찾을 수 있습니다) 사용자 상호 작용)이 먼저 발생 2를 저지 할 필요가 사진을 촬영하면 사용자 상호 작용을하지 않으려면 (그것은 즉시 시작으로 사진을 촬영합니다 원한다면 그것은)를 두 번 1이라고https://github.com/sandipmjadhav/CaptureImage
당신은 당신이 저에게 선생님
예, 당신이 취할 수있는 이미지. 이미지를 캡처하려는 액티비티는 extends Activity
및 implements PictureCallback, ShutterCallback
이어야합니다.
당신은 videoPreview이 extends SurfaceView
하고 SurfaceHolder.Callback
Camera.open();
를 구현 내가 만든 클래스의 인스턴스가 VideoPriview 클래스도이다
videoPreview.getCamera().takePicture(this, null, this);
방법에 따라 사용해야합니다
고맙습니다. 시도해 보겠습니다. – shankz
도움을 주셔서 감사합니다? – shankz
이것이 가능한지 아닌지 나에게 알리는 것은 사용자의 지식없이 이미지를 캡처하는 올바른 방법이 아닙니다. – rajpara
어쨌든 고마워요. – shankz