FaceDetectorHandle:原始面部检测器尚不可用。恢复无操作检测

时间:2015-08-18 02:56:46

标签: android google-play-services google-vision

我正在尝试在我的应用中加入Google Play Services 7.8 Face API,但每次我尝试检测到面孔时都会出现错误:

  

FaceDetectorHandle:原始面部检测器尚不可用。恢复无操作检测

根据帖子Android-er Face Detection的底部,在运行Lollipop或更高版本的设备上会出现此问题。具体来说,他们表示它适用于“RedMi 2,运行Android 4.4.4安装了Google Play服务版本7.8.99但不适用于运行Android 5.1.1的Nexus 7 2012(没有前置摄像头),使用相同的Google Play服务版7.8.99安装。“它也不适用于运行5.0.2的OnePlus One。有谁知道原因或修复?它最终会安装库并工作吗?

编辑: 这是一些日志。我只是在使用面部检测器的时候复制了日志警告和更高的警告,所以它可能并不全是相关的。

08-19 17:29:17.828 W/ResourcesManager(25536): Asset path '/system/framework/com.android.media.remotedisplay.jar' does not exist or contains no resources.
08-19 17:29:17.828 W/ResourcesManager(25536): Asset path '/system/framework/com.android.location.provider.jar' does not exist or contains no resources.
08-19 17:29:17.908 W/FaceDetectorHandle(25536): Native face detector not yet available.  Reverting to no-op detection.
08-19 17:29:18.060 W/ResourcesManager(25536): Asset path '/system/framework/com.android.media.remotedisplay.jar' does not exist or contains no resources.
08-19 17:29:18.060 W/ResourcesManager(25536): Asset path '/system/framework/com.android.location.provider.jar' does not exist or contains no resources.
08-19 17:29:20.267 W/LatinIME( 1645): Deprecated private IME option specified: nm,com.google.android.inputmethod.latin.noGestureFloatingPreview
08-19 17:29:20.267 W/LatinIME( 1645): Use com.google.android.inputmethod.latin.noMicrophoneKey instead
08-19 17:29:20.294 E/EntSec  (  923): [QSB   ] [QSB_CLIENT ] No connection with the NQS
08-19 17:29:20.306 E/EntSec  (  923): [QSB   ] [QSB_CLIENT ] No connection with the NQS
08-19 17:29:20.317 E/EntSec  (  923): [QSB   ] [QSB_CLIENT ] No connection with the NQS
08-19 17:29:20.532 E/EntSec  (  923): [QSB   ] [QSB_CLIENT ] No connection with the NQS
08-19 17:29:20.655 W/OpenGLRenderer( 1814): Incorrectly called buildLayer on View: CoreSuggestionView, destroying layer...
08-19 17:29:20.655 W/OpenGLRenderer( 1814): Incorrectly called buildLayer on View: CoreSuggestionView, destroying layer...
08-19 17:29:20.655 W/OpenGLRenderer( 1814): Incorrectly called buildLayer on View: CoreSuggestionView, destroying layer...
08-19 17:29:20.655 W/OpenGLRenderer( 1814): Incorrectly called buildLayer on View: NowProgressBar, destroying layer...
08-19 17:29:20.655 W/OpenGLRenderer( 1814): Incorrectly called buildLayer on View: CrossfadingWebImageView, destroying layer...
08-19 17:29:20.655 W/OpenGLRenderer( 1814): Incorrectly called buildLayer on View: ew, destroying layer...
08-19 17:29:20.912 W/LatinIME( 1645): Deprecated private IME option specified: nm,com.google.android.inputmethod.latin.noGestureFloatingPreview
08-19 17:29:20.912 W/LatinIME( 1645): Use com.google.android.inputmethod.latin.noMicrophoneKey instead
08-19 17:29:20.924 E/EntSec  (  923): [QSB   ] [QSB_CLIENT ] No connection with the NQS
08-19 17:29:20.934 W/Search.SearchUrlHelper( 1969): URL param or header with a key: "oq" has an empty value.
08-19 17:29:20.941 E/EntSec  (  923): [QSB   ] [QSB_CLIENT ] No connection with the NQS
08-19 17:29:20.956 E/EntSec  (  923): [QSB   ] [QSB_CLIENT ] No connection with the NQS
08-19 17:29:21.038 W/IInputConnectionWrapper( 1814): performPrivateCommand on inactive InputConnection
08-19 17:29:21.085 W/BindingManager( 1969): Cannot call determinedVisibility() - never saw a connection for the pid: 1969
08-19 17:29:21.764 W/VelvetPresenter( 1969): Still observing while not the active client
08-19 17:29:21.765 W/VelvetPresenter( 1969): Still observing while not the active client
08-19 17:29:22.067 W/BindingManager( 1969): Cannot call determinedVisibility() - never saw a connection for the pid: 1969
08-19 17:29:22.250 W/WebViewRenderState( 1969): resultsPageEnd: not current commit, new=27, committed=0
08-19 17:29:22.344 W/SurfaceFlinger(  243): couldn't log to binary event log: overflow.
08-19 17:29:22.371 W/OpenGLRenderer( 1814): Incorrectly called buildLayer on View: ew, destroying layer...
08-19 17:29:22.462 E/WebViewWorkerImpl( 1969): onShowedSrp: No SearchResult found being shown in WebView.
08-19 17:29:26.635 W/FaceDetector(25536): FaceDetector was not released with FaceDetector.release()

2 个答案:

答案 0 :(得分:3)

由于该服务存在问题,现在已禁用Mobile Vision所需的服务。这将阻止尚未使用面部或条形码检测的用户使用这些功能。在修复此问题之前,我们不建议您向应用添加新的Mobile Vision功能。

  

<强>公告

     

有一项服务可以下载Mobile Vision运行所需的文件,但由于在开发后期发现了严重的错误,现在已禁用该服务。这将阻止尚未使用面部或条形码检测的用户使用面部或条形码扫描。我们向Google Play服务开发者提供以下建议:

     

在修复此问题之前,请勿添加新的Mobile Vision功能。   对于已经使用Mobile Vision功能的应用程序,请调用FaceDetector.isOperational()或BarcodeDetector.isOperational()以检查检测器是否准备就绪并相应地降低功能操作。   我们正在努力尽快纠正这个问题。我们预计需要几周时间才能彻底测试它。

来源:https://developers.google.com/vision/announcement

答案 1 :(得分:2)

第一次在设备上运行面部检测功能时,需要将面部检测库下载到设备。 “原生面部检测器尚未推出”。消息表明尚未下载库。

建议将移动视觉依赖项添加到AndroidManifest.xml中。这将在安装应用程序时主动请求库下载。请参阅文档中的此注释:

  

将视觉依赖性添加到您的Android清单

     

将视觉功能依赖项添加到项目中   AndroidManifest.xml将向安装程序指出它应该   下载应用安装时间的依赖性。虽然不是这样   严格要求,它可以使用户体验更好   最初运行你的应用程序例如,添加以下内容   AndroidManifest.xml(在应用程序部分)将指出   应下载条形码和面部检测依赖项   在应用安装时间:

     

&lt; meta-data android:name =“com.google.android.gms.vision.DEPENDENCIES”                 机器人:值= “条形码,脸” &GT;

     

有效的视觉依赖值是:条形码或面部

     

然而,即使这是提供的,在某些情况下   可以按需下载运行检测器所需的依赖性   当您的应用程序第一次运行而不是在安装时运行时。   有关更多信息,请参阅isOperational()和detectorIsOperational()   检查应用程序中的依赖项下载状态。

如上所述,您的应用可以使用isOperational()方法检查:

https://developers.google.com/android/reference/com/google/android/gms/vision/face/FaceDetector.html#isOperational()

检测器将在您的应用程序运行时尝试下载库,并在获取库后自动运行。

但在某些情况下,下载可能不会成功(例如,如果设备没有足够的可用存储空间,或者设备未连接到网络)。首先要尝试的是释放更多的存储空间。

致电发布()

日志中的以下警告表示不同的问题:

W/FaceDetector(25536): FaceDetector was not released with FaceDetector.release()

当应用程序不再需要时,应该调用探测器(或摄像机源)上的release()方法。这将释放资源。虽然这与下载问题无关,但一般来说这样做很好。例如,如果检测器是在活动中创建的,那么最好在onDestroy()中释放该资源:

protected void onDestroy() {
    super.onDestroy();
    mCameraSource.release();
}