कोई व्यक्ति मेरे डिवाइस को अनलॉक करने और गलत पासवर्ड दर्ज करने का प्रयास करता है, तो मैं सामने वाले कैमरे के माध्यम से छवि को कैप्चर करने के लिए कार्यक्षमता को कार्यान्वित करना चाहता हूं। मैंने जांच की कि एंड्रॉइड में यह संभव है और कुछ एप्लिकेशन बाजार में भी उपलब्ध हैं।डिवाइस को कैप्चर करते समय डिवाइस को लॉक किया गया है
मैंने इसे प्राप्त करने के लिए कुछ काम किया है लेकिन मुझे एक काला छवि मिल रही है। कोड यह रहा: छवि पर कब्जा और एसडी कार्ड के लिए इसे बचाने के लिए
public class DeviceAdminSample extends DeviceAdminReceiver {
static Context ctx;
static SharedPreferences getSamplePreferences(Context context) {
ctx = context;
return context.getSharedPreferences(
DeviceAdminReceiver.class.getName(), 0);
}
@Override
public void onPasswordFailed(Context context, Intent intent) {
super.onPasswordFailed(context, intent);
System.out.println("Password Attempt is Failed...");
Intent i = new Intent(context, CameraView.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
कैमरा कक्षा::
public class CameraView extends Activity implements SurfaceHolder.Callback,
OnClickListener {
private static final String TAG = "CameraTest";
Camera mCamera;
boolean mPreviewRunning = false;
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
Log.e(TAG, "onCreate");
setContentView(R.layout.cameraview);
mSurfaceView = (SurfaceView) findViewById(R.id.surface_camera);
// mSurfaceView.setOnClickListener(this);
mSurfaceHolder = mSurfaceView.getHolder();
mSurfaceHolder.addCallback(this);
mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mSurfaceHolder.setKeepScreenOn(true);
// mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}
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();
}
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();
mCamera.setParameters(p);
mCamera.startPreview();
mPreviewRunning = true;
mCamera.takePicture(null, null, mPictureCallback);
}
public void surfaceDestroyed(SurfaceHolder holder) {
Log.e(TAG, "surfaceDestroyed");
// mCamera.stopPreview();
// mPreviewRunning = false;
// mCamera.release();
stopCamera();
}
private SurfaceView mSurfaceView;
private SurfaceHolder mSurfaceHolder;
public void onClick(View v) {
mCamera.takePicture(null, mPictureCallback, mPictureCallback);
}
public void surfaceCreated(SurfaceHolder holder) {
Log.e(TAG, "surfaceCreated");
int i = findFrontFacingCamera();
if (i > 0);
while (true) {
try {
this.mCamera = Camera.open(i);
try {
this.mCamera.setPreviewDisplay(holder);
return;
} catch (IOException localIOException2) {
stopCamera();
return;
}
} catch (RuntimeException localRuntimeException) {
localRuntimeException.printStackTrace();
if (this.mCamera == null)
continue;
stopCamera();
this.mCamera = Camera.open(i);
try {
this.mCamera.setPreviewDisplay(holder);
Log.d("HiddenEye Plus", "Camera open RE");
return;
} catch (IOException localIOException1) {
stopCamera();
localIOException1.printStackTrace();
return;
}
} catch (Exception localException) {
if (this.mCamera != null)
stopCamera();
localException.printStackTrace();
return;
}
}
}
private void stopCamera() {
if (this.mCamera != null) {
/*this.mCamera.stopPreview();
this.mCamera.release();
this.mCamera = null;*/
this.mPreviewRunning = false;
}
}
private int findFrontFacingCamera() {
int i = Camera.getNumberOfCameras();
for (int j = 0;; j++) {
if (j >= i)
return -1;
Camera.CameraInfo localCameraInfo = new Camera.CameraInfo();
Camera.getCameraInfo(j, localCameraInfo);
if (localCameraInfo.facing == 1)
return j;
}
}
Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
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);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 40,
bytes);
// you can create a new file name "test.jpg" in sdcard
// folder.
File f = new File(Environment.getExternalStorageDirectory()
+ File.separator + "test.jpg");
System.out.println("File F : " + f);
f.createNewFile();
// write the bytes in file
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());
// remember close de FileOutput
fo.close();
} catch (Exception e) {
e.printStackTrace();
}
// StoreByteImage(mContext, imageData, 50,"ImageName");
// setResult(FOTO_MODE, mIntent);
setResult(585);
finish();
}
}
};
}
क्या फ़ोन अनलॉक होने पर आपने कोड का परीक्षण किया है? –
हाँ फोन अनलॉक होने पर मैं इस कोड के साथ छवि को कैप्चर करने में सक्षम हूं ... –
@ कृष्णाकांतडाल: क्या आपने एंड्रॉइड कंसोल लॉग की जांच की थी। क्या कोई त्रुटि संदेश है? –