Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.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
android监控应用程序_Android - Fatal编程技术网

android监控应用程序

android监控应用程序,android,Android,我想创建一个具有实时监控功能的Android应用程序。一个监控功能是审计音频流。另一个功能是与外围传感器交互。这些监控功能可由其他人触发。 此外,为了节省功耗,音频功能将以轮询模式运行,即睡眠一定时间,唤醒一定时间 我正在考虑如何设计Android应用程序 将音频功能设计为服务还是活动? 问题是,如果将其设计为活动,则如果屏幕在一段时间后关闭,音频功能将关闭 如何设计轮询功能?使用AlarmManager或带计时器的内线程 我的目标是尽可能节省电力消耗。谢谢。我建议您: a) 使用服务。活动

我想创建一个具有实时监控功能的Android应用程序。一个监控功能是审计音频流。另一个功能是与外围传感器交互。这些监控功能可由其他人触发。 此外,为了节省功耗,音频功能将以轮询模式运行,即睡眠一定时间,唤醒一定时间

我正在考虑如何设计Android应用程序

  • 将音频功能设计为服务还是活动? 问题是,如果将其设计为活动,则如果屏幕在一段时间后关闭,音频功能将关闭

  • 如何设计轮询功能?使用AlarmManager或带计时器的内线程


我的目标是尽可能节省电力消耗。谢谢。

我建议您:

a) 使用服务。活动是短暂的实体(它仅在屏幕上工作)

b) 使服务成为前台(阅读以下内容:,android.app.Notification)。这将减少系统终止您的服务的机会

c) 在服务中,启动一个线程并执行线程中需要的所有操作

d) 如果希望定期执行,只需在线程中执行Thread.sleep()(线程睡眠时不消耗CPU周期)

我认为c)和d)比AlarmManager更可取。 这是一篇来自文档的文章(http://developer.android.com/reference/android/app/AlarmManager.html):“注意:Alarm Manager适用于希望在特定时间运行应用程序代码的情况,即使应用程序当前未运行。适用于正常计时操作(滴答声、超时等)使用Handler更简单、更高效。”


由于您的应用程序正在运行,因此最好有一些永久运行的线程并在其上执行某些操作。一般来说,Handler、HandlerThread和MessageQueue只是更复杂的消息处理和调度的方便类。看起来您的案例非常简单,普通线程就足够了。

同意Victor的意见,您肯定要使用服务,并通过调用
startForeground()将其固定到内存中。

但是,我建议您考虑使用内置的系统
处理程序
;将您的功能放在一个
Runnable
中,然后调用
mhandler.postDelayed(myRunnable,)
;这将允许android框架充分利用电源管理。

这是一项服务

您可能需要一些额外的健壮性:服务可以被终止,以后不会重新启动,即使是前台服务。这将停止你的监视

从UI启动您的服务。如果您想让服务在设备重新启动后继续运行,也可以从BroadcastReceiver for android.intent.action.BOOT_启动它

在服务中创建一个线程,如其他答案中所述

此外,使用Alarm Manager定期重新启动服务。多个startService()调用都可以。如果已经运行,服务将继续运行。但是,如果系统忘记了它,比如说,在一系列资源不足的情况下,它现在将重新启动

负责任地安排这些警报:作为一个好公民,设置绝对最小的频率。毕竟,安卓有很好的理由终止这项服务


对于某些服务,可能需要更多的步骤,但在这种情况下,这种方法似乎就足够了。

什么是“审计音频流”?使用音频记录读取音频缓冲流,审计分贝水平并制作日志。谢谢