2

我想从非活动线程(设备上运行的 Web 服务器)中拍照。

为了做到这一点,我希望有一个绑定到应用程序的服务,我可以调用它来拍照,并在完成后返回位图。但看起来我不能这样做,因为出于安全目的,Android 禁止在不显示预览的情况下拍照(即使在某些设备上接受的答案中显示的虚拟预览也是如此)

然后我想要一个 Activity 为我拍照,并带有一个真实的预览,但我也想不出任何方法来做到这一点,因为:

  • 我无法取回位图,因为我无法调用startActivityForResult(),因为我的网络服务器不是 Activity,所以我无法覆盖onActivityResult(). (webServer 只是引用了 Application 的实例)

  • 我不能只将 HttpRequest 与 Intent 一起传递给 Activity 来响应它,因为 Response 对象不可分割?

你会如何以最合乎逻辑/最优雅的方式做这样的事情?

4

1 回答 1

2

真诚地希望这仅供个人使用,并且您不会认真考虑在许多移动设备上放置一个 Web 服务器——带有一个开放的、未受保护的服务器套接字。如果你是,我希望你有一个资金充足的法律辩护基金。

话虽如此:

第 1 步:让您的 Web 守护程序服务注册BroadcastReceiver一个LocalBroadcastManager

第 2 步:根据需要,拨打服务电话startActivity(),提出您的拍照活动

第 3 步:让您的拍照活动LocalBroadcastManager为您的 Web 守护程序服务发送广播,其中 JPEG 数据可以是Intent额外的,或者如果您确定之前能够处理它,可能只是作为静态数据成员拍摄下一张照片。

使用避免将(及其巨大的额外位图)LocalBroadcastManager运送到操作系统并再次返回到您的进程。Intent

于 2012-06-10T23:14:33.410 回答