我从onCreate()方法运行以下代码。在这段代码之外只是很多对象声明和回调的实例化。
capSess.setRepeatingRequest(capReq.build(), CCSlistener, handle);
执行此行时,我在控制台中收到以下错误:
android.hardware.camera2.CameraAccessException: CAMERA_ERROR (3): submitRequestList:257: Camera 0: Got error Invalid argument (-22) after trying to set streaming request
if ( ContextCompat.checkSelfPermission(thisAct, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED ) {
ActivityCompat.requestPermissions((Activity)thisAct, new String[] { Manifest.permission.CAMERA }, CAMERA_REQUEST);
}
在线搜索后,似乎这是指“ERROR_CAMERA_DISABLED”代码, 表示由于设备政策而无法打开相机设备。
这最初使我想到了直接查看权限,但如下所示:
In [814]: txt
Out[814]: '[[{"x" : 1, "y" : 4, "z" : 6},{"x" : 1, "y" : 2, "z" : 8}],[{"x" : 5, "y" : 1, "z" : 6}],[{"x" : 15, "y" : 44, "z" : 6},{"x" : 12, "y" : 22, "z" : 56}]]'
In [818]: data = json.loads(txt)
In [819]: data
Out[819]:
[[{'x': 1, 'y': 4, 'z': 6}, {'x': 1, 'y': 2, 'z': 8}],
[{'x': 5, 'y': 1, 'z': 6}],
[{'x': 15, 'y': 44, 'z': 6}, {'x': 12, 'y': 22, 'z': 56}]]
,
如果应用尚未拥有权限,我会检查权限并提示用户。我还检查了清单文件中的应用程序设置,并在设备上确认我确实拥有相机硬件权限。 任何人都可以帮我解决这个问题吗?
答案 0 :(得分:2)
我以这种方式解决了这个问题;也许它可以为您提供帮助;
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.N) {
mCaptureSession.stopRepeating();
mCaptureSession.abortCaptures();
}
mCaptureSession.capture(captureBuilder.build(), CaptureCallback, null);
答案 1 :(得分:0)
在Huawei平板电脑上运行Camera Basic Sample,我遇到了这个问题。 上面的答案也适用。只需评论 mCaptureSession.abortCaptures(); 即可。
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.N) {
mCaptureSession.stopRepeating();
mCaptureSession.abortCaptures();
}
查看此github issue以获得更多详细信息。
还在 mCaptureSession.abortCaptures(); 之后添加 sleep(100); (从SystemClock.sleep导入)似乎也可以解决此问题。 (如@CatalinM所评论)