Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MediaStore.ACTION\u VIDEO\u如果设备为纵向,则摄像头应用程序将崩溃_Java_Android_Android Intent_Camera_Orientation - Fatal编程技术网

Java MediaStore.ACTION\u VIDEO\u如果设备为纵向,则摄像头应用程序将崩溃

Java MediaStore.ACTION\u VIDEO\u如果设备为纵向,则摄像头应用程序将崩溃,java,android,android-intent,camera,orientation,Java,Android,Android Intent,Camera,Orientation,我正在使用标准的MediaStore.ACTION\u VIDEO\u CAPTUREIntent调用(例如开发人员站点上的调用或大量StackOverflow线程)来录制一些视频。我正在(真实的)Nexus 7(API 21)上测试它,它工作正常……只要(本机)Android摄像头应用程序启动时设备的显示处于横向方向。如果是纵向、反向纵向或反向横向,则相机应用程序在初始化过程中会中途停止(“不幸的是,相机已停止”),控制返回到我的应用程序。然而,一旦在横向中初始化,相机应用程序很乐意重新定向到

我正在使用标准的
MediaStore.ACTION\u VIDEO\u CAPTURE
Intent
调用(例如开发人员站点上的调用或大量StackOverflow线程)来录制一些视频。我正在(真实的)Nexus 7(API 21)上测试它,它工作正常……只要(本机)Android摄像头应用程序启动时设备的显示处于横向方向。如果是纵向、反向纵向或反向横向,则相机应用程序在初始化过程中会中途停止(“不幸的是,相机已停止”),控制返回到我的应用程序。然而,一旦在横向中初始化,相机应用程序很乐意重新定向到纵向。如果我使用
MediaStore.ACTION\u IMAGE\u CAPTURE
,它将从纵向或横向开始

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

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

(PS我从中注意到,关于定制相机例程:“注意:相机预览不必处于横向模式…”并继续解释如何实现。这是否意味着“意图”实现确实如此?)

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

没有


更具体地说,有数千种可能的摄像头应用程序——由用户预加载或安装——可能声称支持
操作\u视频\u捕获
,其中任何一种都可能像这一个一样存在bug。没有额外的
请\u避免\u bug
,您可以通过
意图来改变它(尽管那真的很酷…。

相机预览不必处于横向模式(这是您在操作图像捕获中看到的),但不幸的是视频捕获经常会这样做。幸运的是,您可以在设备上体验到这种行为,而不是在某些您无法掌握的最终用户设备上。最好的策略是创建需要横向定向才能捕获视频的设备(设备型号)的备份列表。如果您在*other5s“设备上识别出此类行为,只需将其添加到列表中,那么具有相同设备的所有其他用户将在意图启动之前无缝地切换到横向。“具有相同设备的用户将在意图启动之前无缝地切换到横向。”“--问题是,在意图之前将设备放置在横向位置并不能防止他们选择将其保持在纵向位置,不管屏幕上显示的是什么……一旦我的应用程序将控制权转移到相机上,屏幕就会回到纵向位置并触发崩溃。”(好吧,他们的顺利体验意味着你将努力准备,你的服务器将完成任务。我有一些变通方法供你使用。也许,你可以在几毫秒后启动ACTION_IMAGE_CAPTURE intent,即ACTION_VIDEO_CAPTURE intent。这非常令人沮丧……如此简单!谢谢你让我知道。不幸的是,不同的ROM提供了“自定义摄像头API”,这也不能100%兼容或与官方API保持一致。即使在Nexus设备上也是如此。