我想在几小时内定期从Android设备的相机拍摄照片,以创建延时视频效果。Android - 如何从困难的睡眠中唤醒手机拍照?
我设置了AlarmManager,AlarmManager.RTC_WAKEUP标志设置为每隔几分钟启动一项服务。
该服务包含部分唤醒锁,做一些工作,然后通过启动活动的闹钟管理器调用广播接收器。
活动被创建(或恢复),打开它自己的唤醒锁,并设置相机预览表面。一旦表面被设置,SurfaceHolder监听器的surfaceChanged()方法被调用,最终拍摄一张照片。
如果设备处于清醒状态,则所有事情都按预期完美工作。但是,如果设备处于睡眠状态,则Activity的onResume()方法完成后,活动立即暂停。相机的预览表面永远不会完成初始化,也不会拍摄任何照片。
所以我的问题是:
有没有办法以编程方式唤醒了电话?我甚至尝试使用:
PowerManager powerManager = (PowerManager)this.getSystemService(Context.POWER_SERVICE); powerManager.userActivity(SystemClock.currentThreadTimeMillis(),false);
但是,这并不唤醒手机,如果它是睡着了。
有什么方法可以在不使用预览表面视图的情况下拍照吗?
有没有办法拍摄不依赖异步回调的图片?我可以将活动onResume()方法中的所有代码拍摄照片吗?
是否有任何方法让Activity的onResume()方法运行时间足够长,以便相机的预览有足够的时间来初始化并调用所有侦听器?
我正确使用了wakelocks,并且我已经在清单文件中正确设置了所有权限。我的活动没有保持足够长的时间,以便异步侦听器正常工作。
为了解决这个问题,我试着让所有的Android 1.6兼容,因为那是我唯一可以访问的测试设备。
这是令人沮丧的东西!
任何原因您没有在您的服务中完成所有这些工作? – 2013-11-13 17:01:41
这个问题已经有一段时间了,所以我不是100%确定的。当手机处于沉睡状态时,我认为服务不运行,这就是为什么我必须先使用闹钟管理器唤醒手机。 – 2013-11-13 20:17:22
如果您设法运行该服务(有一种方法) - 是否需要在Activity_中执行所有活动?原因如果不是我认为我得到了答案 – 2013-11-13 20:20:28