Android 当密码错误时拍照

Android 当密码错误时拍照,android,Android,我这样做是为了检测pincode何时正确,何时错误: public class AdminReceiver extends DeviceAdminReceiver { @Override public void onEnabled(Context ctxt, Intent intent) { ComponentName cn=new ComponentName(ctxt, AdminReceiver.class); DevicePolicyManager mgr=

我这样做是为了检测pincode何时正确,何时错误:

public class AdminReceiver extends DeviceAdminReceiver  {
  @Override
  public void onEnabled(Context ctxt, Intent intent) {
    ComponentName cn=new ComponentName(ctxt, AdminReceiver.class);
    DevicePolicyManager mgr=
        (DevicePolicyManager)ctxt.getSystemService(Context.DEVICE_POLICY_SERVICE);

    mgr.setPasswordQuality(cn,
                           DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC);

    onPasswordChanged(ctxt, intent);
  }

  @Override
  public void onPasswordChanged(Context ctxt, Intent intent) {
    DevicePolicyManager mgr=
        (DevicePolicyManager)ctxt.getSystemService(Context.DEVICE_POLICY_SERVICE);
    int msgId;

    if (mgr.isActivePasswordSufficient()) {
      msgId=R.string.compliant;
    }
    else {
      msgId=R.string.not_compliant;
    }

    Toast.makeText(ctxt, msgId, Toast.LENGTH_LONG).show();
  }

  @Override
  public void onPasswordFailed(Context ctxt, Intent intent) {
    Toast.makeText(ctxt, R.string.password_failed, Toast.LENGTH_LONG)
         .show();
  }

  @Override
  public void onPasswordSucceeded(Context ctxt, Intent intent) {
    Toast.makeText(ctxt, R.string.password_success, Toast.LENGTH_LONG)
         .show();
  }
}

我想让手机在OnPasswordFailed方法中拍摄一张照片,然后将其放入相机镜头中,我该怎么做?您可以使用android.hardware.Camera来代替简单的祝酒词。

您需要一个许可证:

android.permission.CAMERA
代码:

Camera camera = Camera.open();
camera.startPreview(); // this is required
// and now use the camera.takePicture() read it from documentation
camera.takePicture(null, null, new Camera.PictureCallback(){
          public void onPictureTaken(byte[] data, Camera camera){
                  OutputStream os; // os is output stream to file (Can you open files for write?)
                  try
                  {
                      os.write(data);
                      os.close();
                      // EDIT:  
                      // Check if you added permission: android.permission.WRITE_EXTERNAL_STORAGE
                      // add final modifier fist parameter (Context ctxt). Change it to: final Context ctxt 
                      // Send a broadcast to media scanner
                      // file is your saved file (java.io.File)
                      Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file));
                      ctxt.sendBroadcast(intent);
                  } catch(IOException e){
                      // EDIT: Maybe an error occurred
                      Toast.makeText(ctxt, "Error: " + e.getMessage(), Toast.LENGTH_LONG).show();
                     // print it to logcat
                     e.printStackTrace();
                  } 
                 // And now this is important !!! You must call release on camera
                camera.release();
          }
});

编辑:


请参阅此答案:

我已将代码添加到Onpasswordfailed方法中,但它没有将任何图片添加到相机卷中。可能媒体扫描仪没有将图片添加到数据库中。尝试使用文件资源管理器查找该文件。我现在正在编辑答案(编写简单的代码将广播发送到媒体扫描仪以扫描文件)等待编辑。