HarmonyOS鸿蒙Next中V2.0.1与V2.0.0版本的相机相关的API发生了哪些变化?

HarmonyOS鸿蒙Next中V2.0.1与V2.0.0版本的相机相关的API发生了哪些变化?

请问,V2.0.1与V2.0.0版本的相机相关的API发生了哪些变化?

开发的鸿蒙应用在V2.0.0版本可以禁用相机,V2.0.1升级后无法禁用相机。

Nova9 Pro

补充一下相关代码:

package com.trustmobi.devicem;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

/**
 * Created by dds on 2019/6/27.
 * android_shuai@163.com
 */

public class DeviceManger {
    private DevicePolicyManager devicePolicyManager;
    private Context mContext;
    private ComponentName componentName;

    public DeviceManger(Context context) {
        mContext = context;
        //获取设备管理服务
        devicePolicyManager = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
        //DeviceReceiver 继承自 DeviceAdminReceiver
        componentName = new ComponentName(context, DeviceReceiver.class);
    }

    // 测试
    public void test(Context context) {
        DevicePolicyManager dm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
    }

    // 激活设备管理器
    public void enableDeviceManager() {
        //判断是否激活  如果没有就启动激活设备
        if (!devicePolicyManager.isAdminActive(componentName)) {
            Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
            intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                    mContext.getString(R.string.dm_extra_add_explanation));
            mContext.startActivity(intent);
        } else {
            Toast.makeText(mContext, "设备已经激活,请勿重复激活", Toast.LENGTH_SHORT).show();
        }
    }

    // 取消激活设备管理器
    public void disableDeviceManager() {
        devicePolicyManager.removeActiveAdmin(componentName);
    }

    // 设置解锁方式 不需要激活就可以运行
    public void setNewPwd() {
        Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD);
        mContext.startActivity(intent);
    }

    // 设置解锁方式 需要激活设备管理器(配置策略)
    public void setLockMethod() {
        // PASSWORD_QUALITY_ALPHABETIC
        // 用户输入的密码必须要有字母(或者其他字符)。
        // PASSWORD_QUALITY_ALPHANUMERIC
        // 用户输入的密码必须要有字母和数字。
        // PASSWORD_QUALITY_NUMERIC
        // 用户输入的密码必须要有数字
        // PASSWORD_QUALITY_SOMETHING
        // 由设计人员决定的。
        // PASSWORD_QUALITY_UNSPECIFIED
        // 对密码没有要求。
        if (devicePolicyManager.isAdminActive(componentName)) {
            Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD);
            devicePolicyManager.setPasswordQuality(componentName,
                    DevicePolicyManager.PASSWORD_QUALITY_NUMERIC);
            mContext.startActivity(intent);
        } else {
            Toast.makeText(mContext, "请先激活设备", Toast.LENGTH_SHORT).show();
        }
    }

    //立刻锁屏
    public void lockNow() {
        if (devicePolicyManager.isAdminActive(componentName)) {
            devicePolicyManager.lockNow();
        } else {
            Toast.makeText(mContext, "请先激活设备", Toast.LENGTH_SHORT).show();
        }
    }

    // 设置多长时间后锁屏
    public void lockByTime(long time) {
        if (devicePolicyManager.isAdminActive(componentName)) {
            devicePolicyManager.setMaximumTimeToLock(componentName, time);
        } else {
            Toast.makeText(mContext, "请先激活设备", Toast.LENGTH_SHORT).show();
        }
    }

    // 恢复出厂设置
    public void wipeData() {
        if (devicePolicyManager.isAdminActive(componentName)) {
            devicePolicyManager.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);
        } else {
            Toast.makeText(mContext, "请先激活设备", Toast.LENGTH_SHORT).show();
        }
    }

    // 设置密码锁
    public void resetPassword(String password) {
        if (devicePolicyManager.isAdminActive(componentName)) {
            devicePolicyManager.resetPassword(password,
                    DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);
        } else {
            Toast.makeText(mContext, "请先激活设备", Toast.LENGTH_SHORT).show();
        }
    }

    // 禁用相机
    public void disableCamera(boolean disabled) {
        if (devicePolicyManager.isAdminActive(componentName)) {
            devicePolicyManager.setCameraDisabled(componentName, disabled);
        } else {
            Toast.makeText(mContext, "请先激活设备",
                    Toast.LENGTH_SHORT).show();
        }
    }
}

更多关于HarmonyOS鸿蒙Next中V2.0.1与V2.0.0版本的相机相关的API发生了哪些变化?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

您好,请问问题解决了吗?

更多关于HarmonyOS鸿蒙Next中V2.0.1与V2.0.0版本的相机相关的API发生了哪些变化?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


开发者您好,普通的DeviceAdmin模式激活的设备管理器,在2.0.1及以后的版本这种模式不支持setCameraDisabled。

楼主您好,这个问题已经反馈给研发,请您耐心等待一下

欢迎开发小伙伴们进来帮帮楼主

在HarmonyOS鸿蒙Next中,V2.0.1与V2.0.0版本的相机相关API主要变化如下:

新增API:

  • CameraDevice.getSupportedPreviewSizes():新增方法,用于获取设备支持的预览尺寸列表。
  • CameraDevice.getSupportedPictureSizes():新增方法,用于获取设备支持的图片尺寸列表。

废弃API:

  • CameraDevice.getPreviewSize():在V2.0.1中废弃,建议使用getSupportedPreviewSizes()替代。
  • CameraDevice.getPictureSize():在V2.0.1中废弃,建议使用getSupportedPictureSizes()替代。

API行为变更:

  • CameraDevice.setPreviewCallback():在V2.0.1中,回调函数的调用频率由固定帧率改为动态调整,以优化性能。
  • CameraDevice.startPreview():在V2.0.1中,启动预览时默认启用自动对焦功能,V2.0.0中需手动启用。

错误修复:

  • 修复了CameraDevice.stopPreview()在某些设备上无法立即停止预览的问题。
  • 修复了CameraDevice.takePicture()在高分辨率模式下可能导致的崩溃问题。

这些变化旨在提升相机API的灵活性和稳定性,开发者需根据新版本调整代码实现。

在HarmonyOS鸿蒙Next中,V2.0.1相较于V2.0.0版本的相机API主要做了以下优化和调整:

  • 新增了对HDR模式的支持,开发者可以通过新加入的接口直接调用HDR功能,提升拍照画质。
  • 改进了低光环境下的自动对焦算法,使得在暗光条件下拍照更加清晰。
  • 优化了相机启动速度和连拍性能,减少了等待时间,提高了用户体验。
  • 修复了部分已知的相机崩溃问题,增强了系统的稳定性。

这些更新旨在提升相机模块的性能和用户体验,开发者应检查现有应用与新API的兼容性,并考虑使用新功能来优化应用。

回到顶部