4

介绍

你们中的一些人可能知道,新的三星 Galaxy S3 具有一些很酷的运动功能,可用于简化一些“任务”。对于那些不知道的人,这里是解释的链接

动机

我想写一个后台服务来充当这个Touchwizz-exclusive set of features

有什么可能

根据有关传感器提供程序和后台服务的 android 文档,以及在此链接上找到的有用信息(由@Michal K 提供),可以从后台服务拦截这些传感器事件。即使电池非常昂贵,它仍然是可能的。

我不确定这是可能的

我不确定是否可以使用后台服务或任何其他方式与前台应用程序(无论是“联系人”、“消息传递”还是我们)进行交互。

通过交互,我的意思是,能够做这样的事情,例如:

  1. BGService 拦截“说”手机处于“通话位置”的事件
  2. BGService 检查前台应用程序是“联系人”还是“消息传递”
  3. 如果是,BGService 会检查是否有任何打开的短信或联系人
  4. 如果有一个打开的(聚焦的)联系人或短信线程,BgService 会为该联系人(或短信的发件人)启动呼叫。

这是我要实现的核心思想,这是否可能,或者应用程序和事件之间的这种集成是可能的,因为它们都捆绑在一个框架中(在这种情况下是 Touchwizz)?

如果可能的话,欢迎任何提示。

提前致谢

4

1 回答 1

1

1.BGService拦截事件“说”手机处于“通话位置”

您可以使用TelephonyManager API来确定电话状态

2.BGService 检查前台应用是“Contacts”还是“Messaging”

您可以使用ActivityManager API来确定前台应用程序。有关示例,请参见以下帖子: 从后台任务或服务确定当前前台应用程序

3.如果是,BGService检查是否有打开的短信或联系方式

这我不知道它是否可以做到。您需要一种方法来查询 SMS 或联系人应用程序以找出视图中的焦点。SmsManager API仅提供发送 SMS 的方法。

4.如果有一个打开的(聚焦的)联系人或短信线程,BgService 会为该联系人(或短信的发送者)启动呼叫。

与#3相同的答案。

或者,如果您只对 SMS 和联系人应用程序中的内容更改感兴趣,您可以使用ContentObserver API做一些事情。

另请查看ContentProviders的 API 文档和Content Provider Basics文档。

于 2012-07-19T04:50:28.413 回答