【问题标题】:Android Amazon S3 Upload video stuck waitingAndroid Amazon S3 上传视频卡住等待
【发布时间】:2016-03-08 17:29:13
【问题描述】:

我已经尽可能多地阅读了关于这个主题的内容,并且我已经浏览了文档 (AWS 2.2.9) 并尽可能地使用他们的示例代码,但我被困住了。这是我为设置所做的:

清单 -

相关权限 - “android.permission.INTERNET”和“android.permission.ACCESS_NETWORK_STATE”

服务-

android:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService" android:enabled="true"

我已经设置了存储桶以及 Cognito 的凭据。这是我为上传添加的代码:

File f = getVideoFile(activity);

...

TransferObserver observer = sTransferUtility.upload(Constants.BUCKET_NAME, f.getName(), f);

    observer.setTransferListener(new TransferListener() {
        @Override
        public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {
            Log.e("Transfer", "Percent Complete = " + bytesCurrent / bytesTotal * 100);
        }

        @Override
        public void onStateChanged(int id, TransferState state) {
            Log.e("Transfer", "onStateChanged");
            Log.e("Transfer", "state = " + state);
        }

        @Override
        public void onError(int id, Exception ex) {
            Log.e("Transfer", "Error = " + ex.getMessage());
        }
    });

我还临时添加了一个等待循环,看看我是否只是不耐烦,但它只是显示 state = WAITING 直到我杀死应用程序:

    TransferState state = observer.getState();
    while (state != TransferState.COMPLETED) {
        Log.e("Transfer", "state = "  + state);
        try {
            Thread.sleep(10000);
            state = observer.getState();
        } catch (Exception e) {
            Log.e("Transfer", "exception " + e.getMessage());
        }
    }

所有这些都发生在一个片段内。我没有看到任何错误报告(我知道其他人已经观察到缺少配置会导致这种行为,但我认为我已经完成了我应该做的一切,在这里)。

如果听到我忽略的任何内容或需要尝试获取更多信息,我将不胜感激。

编辑:

我并不怀疑整个问题不在于代码,而在于我的配置。

我的 Cognito 和存储桶 ID 如下所示(但不完全是这些):

COGNITO_POOL_ID:“us-east-1:abcdefgh-abcd-efgh-ijkl-mnopqrstuvwxy” BUCKET_NAME:“我的桶”

我也很好奇密钥应该是我的 .upload() 中的文件名应该包含路径还是只包含文件名。我都试过了,但哪一个是正确的:

/storage/emulated/0/Android/data/com.blah.blah/files/video.mp4

视频.mp4

到目前为止还好吗?

谢谢。

-VAR

【问题讨论】:

  • 您是否在 TransferObserver 上调用刷新?它报告卡在什么状态?
  • WestonE,我添加了刷新。报告状态卡在“WAITING”。
  • 这仍然是个问题吗?你是在后台线程中调用它吗?如果您在片段之外进行调用怎么办?你确定文件存在吗?可以下载文件吗? video.mp4 也应该没问题。
  • 是的,仍然是个问题。是的,在后台线程中。没有在片段之外尝试过(我想这可能是下一次试验)。该文件存在,我可以使用 TransferObserver::getBytesTotal(); 以字节为单位查看总大小;
  • 我不需要从这个应用程序下载,但我会试一试。

标签: android amazon-web-services amazon-s3


【解决方案1】:

我遇到了同样的问题,下面的帖子给了我解决方案。

Uploading files doesn't work with TransferUtility Amazon S3 in Android

在清单中,我必须将传输实用程序服务放入应用程序标签中。

【讨论】:

    【解决方案2】:

    把它放在 AndroidManifest.xml 中的应用标签内

    <service android:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService" 
    android:enabled="true" />
    

    【讨论】:

      【解决方案3】:

      我在 AsyncTask 类中进行上传,状态从未改变,继续等待。 将代码切换到内部 de Activity 后可以正常工作。 因此,请尝试在您的活动中调用 TransferObserver observer = transferUtility.upload()。

      【讨论】:

        猜你喜欢
        • 2013-05-19
        • 2012-02-11
        • 1970-01-01
        • 1970-01-01
        • 2014-10-05
        • 2023-04-05
        • 2020-09-30
        • 1970-01-01
        • 2017-08-05
        相关资源
        最近更新 更多