[英]Using the Camera class with Flex Mobile Framework and Android
[英]Flex mobile Camera + Native extension
我已经在Adobe发行前论坛上问过这个问题,但他们保持沉默,因此我需要您的帮助!
我需要制作一个应用程序,该应用程序应该能够在向服务器传输实时视频的过程中在Android设备上打开/关闭闪光灯。
所以我做了扩展。 Java函数很简单:
try{
if (isOn){
camera = Camera.open();
Parameters params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
} else {
camera.release();
}
} catch( Exception e ){
}
我在前后摄像头上使用了HTC DesireS。 当我从空中应用程序进行流式传输(使用as3 camera = Camera.getCamera())并尝试使用此扩展程序时,它根本不响应
所以我找到了解决方法:在Flash中,我将代码更改为:
camera = null;
nativeExtension.turnFlashOn(true);
camera = Camera.getCamera("1");
该代码仅在使用后置摄像头时有效,但是我需要传递参数“ 1”,该参数实际上是前置摄像头,但是在这种情况下使用后置摄像头。 无论如何-它工作正常。
但是,当我尝试仅使用后置摄像头在HTC上使用此应用程序时,我就卡住了...我无法使用Camera.getCamera(“ 1”),因为我只有“ 0”摄像头,即后置摄像头。 因此,当我使用此代码时:
camera = null;
nativeExtension.turnFlashOn(true);
camera = Camera.getCamera("0");
我的图像两面都冻结(Android应用程序和另一面),并且当闪光灯关闭时它恢复正常
我认为这是因为您仍在本机扩展中打开了相机。 您仅在运行nativeExtension.turnFlashOn(false)时将其释放
摄像机资源一次只能由一个进程保存。 这就是为什么它冻结。 我怀疑如果您查看系统日志(logcat),将会看到诸如“无法连接到相机”之类的错误消息。当闪光灯关闭时,您已经运行了camera.release(),因此它没有被保存,AS可以获取它。
我不确定您要求前置摄像头但使用后置摄像头的AS中发生了什么。 你不是很清楚。 无论哪种方式,都不要这样做,因为无法实现所需的结果,因为这将需要两个进程同时保存摄像机资源。
您为什么不从本机扩展中进行流式传输? 这样,您可以同时使用相机和闪光灯,由于它是本地运行的,因此性能可能会更好。 Flex对相机和录制视频的支持确实很差。 我打算使用它,最终决定将我所有的摄像头过程移至NE。
希望这可以帮助
如果您的设备安装了0、1、2个摄像头,请尝试以下逻辑
camera = null;
nativeExtension.turnFlashOn(true);
// get front camera
camera = Camera.getCamera("1");
// if no front cam try back
if (camera == null)
camera = Camera.getCamera("0");
// if no cams try default cam
if (camera == null)
camera = Camera.getCamera();
else {
trace("Mobile device has no camera!");
}
此代码适用于具有零个,0个或2个凸轮的设备
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.