它应该比built-in FaceDetector class更快更好,并且它没有任何限制/限制(比如输入位图需要配置565,位图宽度为&#) 39; s均匀,并且有最大面孔可以检测到。)
代码也非常简单:
清单:
<meta-data
android:name="com.google.android.gms.vision.DEPENDENCIES"
android:value="face" />
的java:
FaceDetector faceDetector = new
FaceDetector.Builder(getApplicationContext()).setTrackingEnabled(false)
.build();
if(!faceDetector.isOperational()){
//show error
return;
}
Frame frame = new Frame.Builder().setBitmap(myBitmap).build();
SparseArray<Face> faces = faceDetector.detect(frame);
似乎API在某些设备上不可用,返回&#34; false&#34;在调用&#34; isOperational()&#34;。
时我找到了一些线索:
在Github(here)上,其他人也发现了这个问题。
示例says(在#34;照片演示&#34;内部&#34; PhotoViewerActivity.java&#34;文件中)该库可能不可用,但如果它& #39;不是,它将被下载:
if (!safeDetector.isOperational()) {
// Note: The first time that an app using face API is installed on a device, GMS will
// download a native library to the device in order to do detection. Usually this
// completes before the app is run for the first time. But if that download has not yet
// completed, then the above call will not detect any faces.
//
// isOperational() can be used to check if the required native library is currently
// available. The detector will automatically become operational once the library
// download completes on device.
Log.w(TAG, "Face detector dependencies are not yet available.");
// Check for low storage. If there is low storage, the native library will not be
// downloaded, so detection will not become operational.
IntentFilter lowstorageFilter = new IntentFilter(Intent.ACTION_DEVICE_STORAGE_LOW);
boolean hasLowStorage = registerReceiver(null, lowstorageFilter) != null;
if (hasLowStorage) {
Toast.makeText(this, R.string.low_storage_error, Toast.LENGTH_LONG).show();
Log.w(TAG, getString(R.string.low_storage_error));
}
}
我尝试重置播放服务应用程序(因此可能会强制重新下载该库),但它似乎无法正常工作(在Nexus 5上尝试过)。
有没有办法强制下载库,然后开始使用API?这个操作有听众吗?
使用&#34; isOperational&#34;触发此下载?
为什么某些Nexus设备无法使用?我在这里错过了一些关于使用这个库的知识吗?
我是否真的没有输入的限制/限制,我发现了?我注意到有人报告了内存问题(here)。使用try-catch(OutOfMemoryError)有助于处理OOM吗?
答案 0 :(得分:0)
关于它为什么不能在某些设备上运行Google answered it:
新版本的GMSCore(v9)存在一个已知问题 刚刚今天发布。从发行说明:
- Mobile Vision要求的服务现在因严重而被禁用 该服务中的错误。这将阻止尚未使用过的用户 使用这些功能检测面部或条形码。我们不 建议在此应用中为您的应用添加新的Mobile Vision功能 问题是固定的。
- 对于已使用Mobile Vision功能的应用, 检查FaceDetector.isOperational()或BarcodeDetector.isOperational() 在使用面部或条形码之前确认检测器就绪状态 检测器。
答案 1 :(得分:0)
我也面临同样的问题。我做的解决方法是:
它现在按预期工作。
PS:Google Play Services apk有多种版本可供使用。确保选择正确。