我正在使用Camera2 api制作Android应用程序。Android Camera2 api,在旅途中快速交换相机
我希望能够在正面和背面相机之间切换,但无论如何尝试实现它,都需要花费很多时间。
之后我明白,你不能同时打开两个相机(我也试过),所以你必须在打开第二个之前停止第一个。
问题是我需要1.5秒来停止第一台相机。
例如Snapchat如何设法在几百毫秒内交换摄像机?
我正在使用的代码是从谷歌camera2basic可以在这里找到:
我添加了一个简单的方法来防止相机:
public void stopCamera(){
Log.i("yoyo","Stopcamera() begin");
mCameraDevice.close();
//stopBackgroundThread();
Log.i("yoyo","Stopcamera() end");
}
Android监视器:
08-01 15:13:01.478 10020-10020/com.example.android.camera2basic I/YOYO:Stopcamera()开始 08-01 15:13:02.852 10020-10020/com。示例.android.camera2basic I/yoyo:Stopcamera()结束 08-01 15:13:02.853 10020-10020/com.example.android.camera2basic I /编舞:跳过81帧!应用程序可能在其主线程上做了太多工作。 08-01 15:13:02.855 10020-10207/com.example.android.camera2basic I/YOYO:Cameradevice - onClosed()运行回调
-UPDATE 07 8 2017-
看来,camera2 api只需要更长的时间来关闭比旧的相机api。
我试着用旧的相机API,我达到了与snapchat/instagram相同的速度,所以我猜他们正在使用旧的相机API。
某些设备[支持](https://stackoverflow.com/questions/11419940/using-both-front-and-back-cameras-simultaneously-android)上两个摄像机同时操作;那么,切换可能是即时的。其他设备可能会有与camera2实现(特别是如果相机特性报告[传统](https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY)支持水平),但更多的时候弃用的Camera API速度较慢。 –
是的,我觉得camera2 api比较慢,这似乎很奇怪。我尝试从Play商店下载一大堆camera2应用程序,并且它们在切换相机之间似乎都有1.5秒的滞后时间。我用来进行测试的手机是银河s7 –
不应该很难找到哪个相机API instagram正在使用。通常你可以在logcat中看到跟踪。如果他们选择基于A/B测试的每种设备型号,我都不会感到惊讶。 –