2011-01-07 41 views
1

我有一个动态壁纸,我想与同一包中的活动进行交流。我从来没有做过任何有关服务的工作。我可以使用Local Service pattern,还是我受限制,因为我的服务是动态壁纸,需要使用Intents或AIDL?Android中的活动/动态壁纸通信

我认为流动会去这样的事情,请大家指正在我的过程可能失败:

  1. 预览从动态壁纸选择器
  2. 动态壁纸走进我的自定义设置活动
  3. 点击一个“屏幕截图”按钮或首选项打开一个“屏幕截图”活动
  4. 发送消息到我的墙纸,要求屏幕截图位图被渲染
  5. 沃尔玛lpaper服务接收该消息并使得其当前的视觉效果的位图在应用程序的数据目录
  6. 墙纸将消息发送回活动指示位图
  7. 活性接收到该消息的成功和位置,装载从位图给定的位置,并将其显示给用户进行进一步处理/共享

我不确定的部分是消息在4-7中传递。

回答

1

这是我最终做的。我的主要目标是让我的动态壁纸创建其内容的屏幕截图。我不需要当前预览或主屏幕上实际显示的任何内容,只是基于当前共享首选项的渲染。

我把壁纸服务的渲染方面分解成了一个单独的类。我的壁纸服务包含此渲染类的实例,并通过调用此渲染器,动态壁纸功能正常。破碎的类允许我从任何其他活动实例化独立的渲染器,我可以向其发送位图。渲染器然后简单地绘制指向提供的位图的画布,而不是通常情况下从壁纸服务提供的画布