从Android活动中拍摄一张照片”;“作为一种服务”;
我想从非活动线程(设备上运行的web服务器)拍摄照片 为了做到这一点,我希望有一个服务绑定到应用程序,我可以调用它来拍照,并在完成后返回位图。但看起来我不能这么做,因为出于安全考虑,Android禁止在不显示预览的情况下拍照(即使在某些设备上有虚拟预览) 然后,我想让一个活动为我拍照,并进行真正的预览,但我也想不出任何方法来实现这一点,因为:从Android活动中拍摄一张照片”;“作为一种服务”;,android,android-intent,android-camera,android-activity,android-service,Android,Android Intent,Android Camera,Android Activity,Android Service,我想从非活动线程(设备上运行的web服务器)拍摄照片 为了做到这一点,我希望有一个服务绑定到应用程序,我可以调用它来拍照,并在完成后返回位图。但看起来我不能这么做,因为出于安全考虑,Android禁止在不显示预览的情况下拍照(即使在某些设备上有虚拟预览) 然后,我想让一个活动为我拍照,并进行真正的预览,但我也想不出任何方法来实现这一点,因为: 我无法取回位图,因为我无法调用startActivityForResult(),因为我的web服务器不是活动,所以我无法覆盖onActivityResu
- 我无法取回位图,因为我无法调用
,因为我的web服务器不是活动,所以我无法覆盖startActivityForResult()
。(Web服务器只有应用程序实例的引用)onActivityResult()
- 我不能只传递HttpRequest和活动响应它的意图,因为响应对象是不可打包的
LocalBroadcastManager
注册一个BroadcastReceiver
步骤2:根据需要,让您的服务电话startActivity()
启动您的拍照活动
步骤#3:让您的拍照活动通过LocalBroadcastManager
为您的Web守护程序服务发送一个广播,其中JPEG数据可以是Intent
额外的,或者如果您确信在拍摄下一张图像之前能够处理它,则可能只是作为静态数据成员
使用
LocalBroadcastManager
可以避免将Intent
(及其巨大的额外位图)发送到操作系统并再次返回到您的进程。谢谢!仅供参考,这仅用于演示目的,永远不会运送到生产设备。