首页 > 解决方案 > 如果相机被任何应用程序使用,如何关闭或调暗相机?

问题描述

我想制作一个控制相机的应用程序。如果打开此应用时使用相机,则应关闭相机或将相机调暗。这可能吗?

    //this method is checking the camera
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            manager.registerAvailabilityCallback(new CameraManager.AvailabilityCallback() {
                @Override
                public void onCameraAvailable(String cameraId) {
                    super.onCameraAvailable(cameraId);
                }

                @Override
                public void onCameraUnavailable(String cameraId) {
                    super.onCameraUnavailable(cameraId);
                    //how do I turn off the camera ?
                }
            }, new Handler());
        }

标签: androidandroid-cameraandroid-permissions

解决方案


您创建一个类来接受 DeviceAdmin 权限:

public  class MyDevicePolicyReceiver extends DeviceAdminReceiver {

private static final String LOG_TAG = "LOG";

@Override
public void onDisabled(Context context, Intent intent) {
}

@Override
public void onEnabled(Context context, Intent intent) {
}

@Override
public CharSequence onDisableRequested(Context context, Intent intent) {
    return disableRequestedSeq;
}

@Override
public void onReceive(Context context, Intent intent) {
    super.onReceive(context, intent);
}
}

你注册它如下:

    public ComponentName mDeviceAdminSample;
    public DevicePolicyManager mDPM;

    mDeviceAdminSample = new ComponentName(getApplicationContext(),
                MyDevicePolicyReceiver.class);
        mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
        if(mDPM == null || !mDPM.isAdminActive(mDeviceAdminSample)) {
            Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,mDeviceAdminSample);
        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                "Your_String");
        startActivityForResult(intent, ANY_REQUEST_CODE);
        return;

推荐阅读