MediaStore.ACTION_VIDEO_CAPTURE 如果设备是纵向的,相机应用会崩溃

MediaStore.ACTION_VIDEO_CAPTURE crashes camera app if device is portrait

我正在使用标准 MediaStore.ACTION_VIDEO_CAPTURE Intent 调用(例如开发者网站上的调用或大量 Whosebug 线程)来录制一些视频。我正在(真实的)Nexus 7(API 21)上测试它,它工作正常...只要设备的显示屏处于横向[=28] =] (native) Android 相机应用程序启动时的方向。如果是纵向、反向纵向或反向横向,相机应用程序会在其初始化 ("Unfortunately, Camera has stopped") 中途停止并控制 returns 到我的应用程序。然而,相机应用程序很乐意在横向初始化后重新定向为纵向。如果我使用 MediaStore.ACTION_IMAGE_CAPTURE,它将以纵向或横向开始。

我知道我可以将我的应用程序的方向固定为横向并且我知道我可以请求相机以横向方式录制,但如果用户恰好以纵向方式握住设备,屏幕将旋转到在过渡期间垂直,因为我的应用程序将控制权释放给相机应用程序。然后相机应用程序在方向为纵向时接收控制并且它不喜欢它并停止。问题是不是,因为改变方向——即使我始终将所有内容锁定为纵向,相机应用程序也会中途取消它的初始化程序。

有没有办法避免这种情况发生(同时仍然通过 Intent 使用相机)?

(PS 我从 here 注意到关于定制相机例程:"Note: A camera preview does not have to be in landscape mode..." 并继续解释如何实现这一点。这是否意味着 "Intent" 实现呢?)

Is there a way to avoid this happening (while still using the camera via Intent)?

没有

更具体地说,有数以千计的可能声称支持 ACTION_VIDEO_CAPTURE 的相机应用程序(由用户预加载或安装),其中任何一个都可能像这个一样存在错误。没有 EXTRA_PLEASE_AVOID_BUGS 你可以通过 Intent 来改变它(尽管那会 真的 很酷......)。