【问题标题】:Best way to stream from AppEngine blobstore in Android?从 Android 中的 AppEngine blobstore 流式传输的最佳方式?
【发布时间】:2014-01-29 21:22:47
【问题描述】:

我有一个基于 GWT Java 的 AppEngine 项目,该项目使用 blobstore 存储 mp3 文件。 为了流式传输 blob,我通常通过传递类似的东西来调用我的服务 HttpServlet “/myApp/serve?blob-key=AMIfv...” 到 GWT 音频小部件。 开发服务器或已部署的代码相同。

现在我正在尝试使用 MediaPlayer 的 android 客户端,但我遇到了传递给 MediaPlayer.setDataSource() 的 URL 的问题。

对于已部署的服务器,此 URL 可以正常工作:http://example.appspot.com/myApp/serve?blob-key=AMIfv... 但我无法让开发模式工作。据我所知,服务器在http://localhost:8888/ 运行,所以我通过了:http://localhost:8888/myApp/serve?blob-key=AMIfv...
但 servlet 永远无法到达(我尝试了许多变体)。

是否有更好的方法来实现和定义不断变化的后端?类似于 Endpoints Support 向 Android 客户端提供的数据存储对象? https://developers.google.com/eclipse/docs/endpoints-android 在这里,如果我们将 LOCAL_ANDROID_RUN 设置为 true(在 CloudEndpointUtils.java 中),Android 应用程序将连接到本地开发服务器。如果 LOCAL_ANDROID_RUN 为 false,则客户端库会根据应用程序 ID 提供正确的 URL。

【问题讨论】:

  • 我发现了这个问题,它在 CloudEndpointUtils.java 中的一些 cmets 中得到了解释:我使用的是 Android 模拟器,所以在 Android 的虚拟路由器 10.0.2.2:8888 后面运行,所以解决方案是将 localhost 替换为 10.0.2.2

标签: java android google-app-engine url blobstore


【解决方案1】:

CloudEndpointUtils.java(来自 appengine 连接的 android 向导)定义了LOCAL_APP_ENGINE_SERVER_URL = "http://localhost:8888/"。此环回地址不适用于模拟器或真正的 android。对于这两种情况,一个真实的接口地址,例如http://192.168.1.2:8888 提供到devappserver 数据存储端点和blobstore 的连接。对于模拟器,您可以使用 10.0.2.2,它是模拟器的虚拟路由器别名,用于主机环回接口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多