Android -- Google+ 即时上传如何工作?

Posted

技术标签:

【中文标题】Android -- Google+ 即时上传如何工作?【英文标题】:Android -- How does Google+ instant upload work? 【发布时间】:2011-10-02 02:41:53 【问题描述】:

我在 android 上使用新的 Google+ 应用程序时遇到了一个似乎在网上找不到的技术问题。即时上传如何挂钩到原生相机应用程序?

我可以打开 Google+ 应用程序中的一项功能,我使用本机相机应用程序拍摄的任何照片都会自动上传到 Google+ 上的私人相册。无论 Google+ 应用程序当前是否正在运行,这似乎都是正确的。是否有任何类型的钩子可以在我的应用程序中注册回调事件以访问“刚刚拍摄的”图片以获得一些后期处理的好处?我真的很想为我目前正在编写的应用程序利用此功能。

非常感谢任何正确方向的见解或提示!谢谢!

【问题讨论】:

你可能想看看这个:code.google.com/p/android/issues/detail?id=1480 这更侧重于启动相机意图和获取数据。我真的很想被动监控相机应用程序或使用某种类型的回调,就像 Google+ 应用程序似乎做的那样。 查看类似帖子:***.com/questions/230643/… 【参考方案1】:

不完全确定 Google+ 是如何做到这一点的,但一种可行的方法是使用 ContentObserver 接口:获取 MediaStore.Images.Media ContentProvider 并将 ContentObserver 附加到它。每当添加相机图像时,您都会收到通知,您可以进行相应处理(包括上传)。

同样的技术适用于几乎所有能正确处理ContentObservers 的ContentProvider(我假设都是ContentProviders,但你永远无法分辨)。

【讨论】:

@John @Femi 这也是我的方法,然后它将适用于任何将其图像放入媒体商店(或者实际上是 sdcard 上的任何位置,因为媒体商店会扫描新图片)的相机应用程序令人惊讶的图像,尽管注册这些图像可能需要一段时间) 这很好用......现在我需要回答一些其他技术问题,我们应该很高兴!谢谢! 即使应用程序被系统杀死,这是否有效?我的猜测是没有,因为它是基于代码的而不是基于清单的。与基于 xml 的广播接收器非常不同,后者在启动广播时唤醒应用程序。如果我是对的,这有点没用,除非你设法让你的应用程序一直运行,这不是很好。希望我错了。 很遗憾,我可能是对的。引用developer.android.com/guide/topics/providers/…:将一个进程中的数据与另一个进程中运行的代码连接起来 现在我完全确定了。我模拟了应用程序被系统停止并且没有调用 ContentObserver 【参考方案2】:

感谢 Femi 在这篇文章中的回答,我能够接受他所说的话并弄清楚如何模仿 Google+ 的即时上传功能。我在这里写了一篇关于它的教程:

http://www.jessechen.net/blog/how-does-google-plus-instant-upload-work/

【讨论】:

我正在使用您的代码,但是对于拍摄的一张照片,onChange 方法被调用了不止一次,并且如果从图库中删除任何图片,它也会被调用,我只想知道您是否处理过这些东西在你的黑客马拉松中?如果是,你是怎么做到的? @waqas716 这通常是 contentObservers 的一个已知问题。您只需要跟踪正在发生的事情并忽略不符合您需求的事件。例如,为了检查添加了哪些新图像,请仅获取在您从先前查询中存储的时间戳之后创建的图像。

以上是关于Android -- Google+ 即时上传如何工作?的主要内容,如果未能解决你的问题,请参考以下文章

即时运行不适用于运行 android 9.0 的 Google 像素 2xl

如何在不使用 Android Studio 的情况下为 Google Play 开发控制台创建即时应用程序?

Google Play 应用签名和即时应用

如何在 Android Studio 中以编程方式上传和下载 Google Drive 上的任何文件

如何将超过 150MB 的 Android App Bundle (.aab) 上传到 Google Play

JS兼容各个浏览器的本地图片上传即时预览效果