我需要一种方法来控制Android设备上的摄像头闪光灯,同时录制视频.我正在制作一个闪光灯应用程序,并使用闪烁的频闪灯拍摄视频将导致能够记录高速移动的物体,如风扇叶片.
只能通过启动视频预览并在摄像机参数中设置FLASH_MODE_TORCH来启用闪光灯.这看起来像这样:
Camera c = Camera.open();
Camera.Parameters p = c.getParameters();
p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
c.setParameters(p);
c.startPreview();
Run Code Online (Sandbox Code Playgroud)
预览开始后,我可以来回翻转该参数以打开和关闭灯光.这很有效,直到我尝试录制视频.麻烦的是,为了将相机送到MediaRecorder,我首先必须解锁它.
MediaRecorder m = new MediaRecorder();
c.unlock(); // the killer
m.setCamera(c);
Run Code Online (Sandbox Code Playgroud)
解锁后,我无法再更改摄像机参数,因此无法更改闪光灯状态.
我不知道是否真的可以这样做,因为我不是最好的java-hacking,但这是我所知道的:
所以,我仍然可以访问相机,但它不会听我说的任何东西.(这是Camera.unlock()的目的)
编辑:
检查本机代码后,我可以看到在CameraService.cpp中,我对Camera.setParameters(Parameters)的调用被拒绝,因为我的进程ID与摄像头服务记录的进程ID不匹配.所以这似乎是我的障碍.
EDIT2:
看起来MediaPlayerService是在录制视频时控制摄像机的主要服务.我不知道是否可能,但如果我能以某种方式在我自己的进程中启动该服务,我应该能够跳过Camera.unlock()调用.
EDIT3:
最后一个选择是,如果我能以某种方式获得指向CameraHardwareInterface的指针.从它的外观来看,这是一个特定于设备的接口,可能不包括PID检查.这个问题的主要问题是我能找到指针的唯一地方是在CameraService中,CameraService没有说话.
编辑4 :(几个月后)
在这一点上,我认为不可能做我原本想要的.我不想删除有人确实回答的问题,但我并没有积极寻求答案.(虽然,收到有效答案会很棒.)
有没有人知道是否有办法阻止用户从Android手机卸载应用程序或在删除时重新安装?在你激怒我之前,请知道我有一个应用程序,打算由父母/雇主/等安装在手机上.并有一个受密码保护的设置屏幕; 用户需要输入密码才能删除该应用.
有没有人知道通过上传处理脚本自动运行某些文件类型的好方法?当我将它们上传到服务器时,我正在尝试自动缩小CSS和Javascript,在本地保留一个漂亮的,人类可读的版本,同时在服务器上保留一个缩小的版本.我目前正在Windows上使用WinSCP,它在某种程度上是可编写脚本的,但可能不够编写脚本.我可能需要一些拼凑在一起的解决方案,所以不要害怕用胶带暗示一些东西; 但是,我确实需要在本地计算机上进行缩小并上传压缩文件,因为我使用共享主机并且无法在服务器上安装垃圾.
谢谢.
Android Wear已经出现了一些包含自定义表盘的应用程序(如此).它们不仅仅是展示表盘的应用程序; 它们是完全成熟的面孔,可在长按手表主屏幕时选择.我找不到有关如何设置应用以提供自定义面孔的任何文档.如何配置您的应用程序以提供面部?
我WearableListenerService
在我的主应用程序和配套Wear应用程序中实现了一个.在清单中,由于服务是由Google Play服务启动的,因此需要将服务声明为android:exported="true"
(或根本不声明并保留为默认值true
).系统上的任何应用程序都可以调用没有权限的导出服务,但是我找不到添加到服务声明中以保护它的正确权限.我已经查看了手机和Wear设备上的权限,pm list permissions
但我没有看到任何看起来像我需要的东西.