Skip to content

Instantly share code, notes, and snippets.

@ManzzBaria
Created June 17, 2016 04:01
Show Gist options
  • Save ManzzBaria/72d6244a6a783ba8fc4ec177cdd725fd to your computer and use it in GitHub Desktop.
Save ManzzBaria/72d6244a6a783ba8fc4ec177cdd725fd to your computer and use it in GitHub Desktop.
Capture Image from front camera without interact user
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Gravity;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.vs2.chatsecure.Database.DatabaseFunctions;
import com.vs2.chatsecure.Objects.Globals;
import com.vs2.chatsecure.Utilities.PreferenceData;
import com.vs2.chatsecure.Utilities.Utility;
import com.vs2.chatsecure.views.CircleButton;
import com.vs2.chatsecure.views.CircleImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Random;
import java.util.concurrent.TimeUnit;
public class CaptureActivity extends AppCompatActivity{
private Camera camera;
private int cameraId = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_capture);
initGloble();
}
public void initGloble() {
mButtonCapture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
captureImage();
}
});
}
public void captureImage(){
// display=(ImageView)findViewById(R.id.imageView1);
if (!getPackageManager()
.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
Toast.makeText(this, "No camera on this device", Toast.LENGTH_LONG)
.show();
} else {
cameraId = Utility.getFrontFacingCamera();
if (cameraId < 0) {
Toast.makeText(this, "No front facing camera found.",
Toast.LENGTH_LONG).show();
} else {
safeCameraOpen(cameraId);
}
}
SurfaceView view = new SurfaceView(this);
try {
camera.setPreviewDisplay(view.getHolder());
} catch (IOException e) {
// TODO Auto-generated catch block
Log.e("captureImage","setPreviewDisplay");
e.printStackTrace();
}
camera.startPreview();
Camera.Parameters params = camera.getParameters();
params.setJpegQuality(100);
camera.setParameters(params);
camera.takePicture(null, null, mCall);
}
Camera.PictureCallback mCall = new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
//decode the data obtained by the camera into a Bitmap
Log.e("PictureCallback","PictureCallback");
Bitmap bitmapPicture = BitmapFactory.decodeByteArray(data, 0, data.length);
// display.setImageBitmap(bitmapPicture);
try {
SaveImage(bitmapPicture);
}catch (Exception e){
}
}
};
private void SaveImage(Bitmap finalBitmap) {
Log.e("SaveImage","SaveImage");
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/ChatSecure");
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-"+ n +".jpg";
File file = new File(myDir, fname);
if (file.exists ()) file.delete ();
try {
FileOutputStream out = new FileOutputStream(file);
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
Log.e("SaveImage","Path: "+file.getAbsolutePath());
}
@Override
protected void onPause() {
releaseCamera();
super.onPause();
}
@Override
protected void onDestroy() {
releaseCamera();
super.onDestroy();
}
private boolean safeCameraOpen(int id) {
boolean qOpened = false;
try {
Log.e("safeCameraOpen","safeCameraOpen");
releaseCamera();
camera = Camera.open(id);
qOpened = (camera != null);
} catch (Exception e) {
Log.e(getString(R.string.app_name), "failed to open Camera");
e.printStackTrace();
}
return qOpened;
}
private void releaseCamera() {
if (camera != null) {
camera.stopPreview();
camera.release();
camera = null;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment