gpt4 book ai didi

java - android:定期在任务或线程中拍照?

转载 作者:太空宇宙 更新时间:2023-11-04 13:55:24 32 4
gpt4 key购买 nike

我正在编写一个 Android 应用程序,它应该以用户定义的间隔(20 秒 - 1 分钟)拍照。即使在后台运行或设备处于 sleep 状态时,它也应该拍摄照片。该应用程序将运行很长一段时间。如果需要唤醒设备,应尽快使其恢复 sleep 状态以节省电池生命周期。拍照后,应用程序将处理一些额外的工作(比较两张照片)。

我读了一些关于调度警报( http://developer.android.com/training/scheduling/alarms.htm )、创建服务(也@ android 培训)和 Android AsyncTasks、Java 线程( http://www.mergeconflict.net/2012/05/java-threads-vs-android-asynctask-which.html )的内容

...但我仍然不确定实现这一目标的最佳方法是什么。

我的问题是:

  1. 我应该使用线程还是任务在后台拍照?(两张图片的比较可能需要比几张图片更长的时间毫秒但我不知道这个的CPU负载操作)
  2. 我应该使用闹钟来唤醒设备还是有其他解决方案?
  3. 两者(警报和线程/任务)如何协同工作? (在任务/线程中包含警报?)

非常感谢您提前提供的帮助。

最佳答案

对于我们的问题,我知道我可以帮助开始以用户定义的时间间隔重复拍照任务。对于这样的任务,您可以使用 Timer为了达成这个。代码看起来像这样:

mTmr = new Timer();
mTsk = new TimerTask() {
@Override
public void run() {
//Take picture or do whatever you want
}
};
mTmr.schedule(mTsk, 0, USER_DEFINED_EXECUTION_INTERVAL);

schedule 启动计时器。这里使用的schedule的第一个参数是要运行的任务,即mTsk。第二个参数是第一次执行之前的延迟(以毫秒为单位),在本例中没有延迟。第三个参数是您想要操作的执行间隔。该参数是执行之间的时间,因此如果是 20 秒,您将传入 20,000。如果是一分钟那就是六万。您可以使用您想要的任何方法从用户处获取此值。

要保持计时器运行,请确保您不在 onPause 中调用 mTmr.cancel,因为对于您的情况,您希望在用户不在应用上时保持计时器运行。不调用 cancel 意味着计时器将保留其资源,直到用户关闭应用。

或者你可以看看这个How to schedule a periodic task in Java?如果您想使用 ScheduledExecutorService 而不是 Timer

关于java - android:定期在任务或线程中拍照?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29878090/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com