【问题标题】:Take a picture when the password is wrong Android Adminreceiver密码错误时拍照 Android Adminreceiver
【发布时间】:2015-04-27 01:32:05
【问题描述】:

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

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


    【解决方案1】:

    您可以使用android.hardware.Camera: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();
              }
    });
    

    Camera.takePicture

    编辑:

    看到这个答案:https://stackoverflow.com/a/17535070/2536878

    【讨论】:

    • 我将代码添加到 Onpasswordfailed 方法中,但它没有将任何图片添加到相机胶卷中。
    • 可能媒体扫描仪没有将图片添加到数据库中。尝试使用文件资源管理器查找文件。我现在正在编辑答案(编写简单的代码将广播发送到媒体扫描仪以扫描文件)等待编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多