Android中的活动/动态壁纸通信

时间:2011-01-07 15:55:14

标签: android android-activity communication live-wallpaper

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

我认为流程会像这样,请纠正我的流程可能失败的地方:

  1. 从动态壁纸选择器预览动态壁纸
  2. 进入我的自定义设置活动
  3. 点击“屏幕截图”按钮或首选项以打开“屏幕截图”活动
  4. 向我的壁纸发送消息,要求提供要呈现的屏幕截图位图
  5. 壁纸服务接收消息并将其当前视觉效果呈现到应用程序数据目录中的位图
  6. 壁纸会向活动发送一条消息,指示位图的成功和位置
  7. 活动收到此消息,从给定位置加载位图,并将其显示给用户以进行进一步处理/共享
  8. 我不确定的部分是4-7中传递的信息。

1 个答案:

答案 0 :(得分:1)

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

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