1

我有一个动态壁纸,我想通过同一个包中的 Activity 进行交流。我从来没有做过服务方面的工作。我可以使用本地服务模式,还是因为我的服务是动态壁纸而受到限制,并且需要使用 Intents 或 AIDL?

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

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

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

4

1 回答 1

1

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

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

于 2011-02-18T20:58:58.483 回答