You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何确保ML Kit人脸检测模型首次使用前下载及主动下载等操作?

背景

采用Google Play Services的ML Kit "thin"模式时,模型需在首次使用前完成下载,日志中出现如下模型未加载错误:

2024-10-10 10:32:54.762  8519-8519  MobileVisionBase        com.metsakuur.ufacemangopublic       E  Error preloading model resource
                                                                                                    com.google.mlkit.common.MlKitException: Waiting for the face module to be downloaded. Please wait.
                                                                                                        at com.google.mlkit.vision.face.internal.zza.zzd(com.google.android.gms:play-services-mlkit-face-detection@@17.1.0:10)
                                                                                                        at com.google.mlkit.vision.face.internal.zzh.load(com.google.android.gms:play-services-mlkit-face-detection@@17.1.0:1)
                                                                                                        at com.google.mlkit.common.sdkinternal.ModelResource.zza(com.google.mlkit:common@@18.5.0:4)
                                                                                                        at com.google.mlkit.common.sdkinternal.zzn.run(Unknown Source:10)
                                                                                                        at com.google.mlkit.common.sdkinternal.zzt.run(com.google.mlkit:common@@18.5.0:2)
                                                                                                        at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zze(com.google.mlkit:common@@18.5.0:4)
                                                                                                        at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zzc(com.google.mlkit:common@@18.5.0:1)
                                                                                                        at com.google.mlkit.common.sdkinternal.zzk.run(Unknown Source:2)
                                                                                                        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
                                                                                                        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
                                                                                                        at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zzd(com.google.mlkit:common@@18.5.0:2)
                                                                                                        at com.google.mlkit.common.sdkinternal.zzi.run(Unknown Source:2)
                                                                                                        at java.lang.Thread.run(Thread.java:1012)
                                                                                                    Caused by: com.google.android.gms.dynamite.DynamiteModule$LoadingException: No acceptable module com.google.android.gms.vision.face found. Local version is 0 and remote version is 0.
                                                                                                        at com.google.android.gms.dynamite.DynamiteModule.load(com.google.android.gms:play-services-basement@@18.1.0:67)
                                                                                                        at com.google.mlkit.vision.face.internal.zza.zze(com.google.android.gms:play-services-mlkit-face-detection@@17.1.0:1)
                                                                                                        at com.google.mlkit.vision.face.internal.zza.zzg(com.google.android.gms:play-services-mlkit-face-detection@@17.1.0:2)
                                                                                                        at com.google.mlkit.vision.face.internal.zza.zzf(com.google.android.gms:play-services-mlkit-face-detection@@17.1.0:22)
                                                                                                        at com.google.mlkit.vision.face.internal.zza.zzd(com.google.android.gms:play-services-mlkit-face-detection@@17.1.0:5)

问题解答

1. 主动触发模型下载

通过ModelManager的download方法主动触发,以人脸检测模型为例:

// 获取对应模型的标识符
ModelIdentifier faceModelId = FaceDetectionModelIdentifier.FACE_DETECTION_V1;
// 获取ModelManager实例
ModelManager modelManager = ModelManager.getInstance();
// 发起下载请求
modelManager.download(faceModelId)
    .addOnSuccessListener(aVoid -> {
        // 下载成功后的处理逻辑
    })
    .addOnFailureListener(e -> {
        // 下载失败的异常处理
    });

2. 确认模型是否已下载

调用isModelDownloaded方法直接检查状态:

boolean isFaceModelDownloaded = modelManager.isModelDownloaded(faceModelId);

3. 查看下载进度

配置下载条件后,通过addOnProgressListener监听实时进度:

// 配置下载条件(示例:仅WiFi环境下下载)
ModelDownloadConditions conditions = new ModelDownloadConditions.Builder()
    .requireWifi()
    .build();

modelManager.download(faceModelId, conditions)
    .addOnProgressListener(progress -> {
        int percentage = (int) (progress.getBytesDownloaded() * 100.0 / progress.getTotalBytes());
        // 更新UI或记录进度
    });

4. 模型格式

这类通过Google Play Services分发的ML Kit模型是Dynamite模块,并非标准APK格式。Dynamite是Google Play Services专属的模块化组件分发机制,模块以定制压缩格式存储,由Google Play Services统一管理。

5. 单独预装到设备

可以通过以下方式实现预装:

  • 针对定制ROM或企业管控设备,将对应Dynamite模块(后缀为.apk的专用模块文件,对应组件名com.google.android.gms.vision.face)放置到设备系统分区的/system/priv-app/目录下。
  • 需确保模块版本与设备上的Google Play Services版本兼容,否则会出现加载失败问题。

内容的提问来源于stack exchange,提问作者胡倍业

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 11:04:51