Android Amazon S3上传视频卡住等待

时间:2015-12-03 22:11:25

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

我已经尽可能多地阅读了这个主题,并且我已经浏览了文档(AWS 2.2.9),并尽可能地使用他们的示例代码,而我正在使用它们。我被卡住了。以下是我为设置所做的事情:

清单 -

相关权限 - " android.permission.INTERNET对"和" android.permission.ACCESS_NETWORK_STATE"

服务 -

android:name =" com.amazonaws.mobileconnectors.s3.transferutility.TransferService"机器人:启用="真"

我设置了我的存储桶以及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());
        }
    });

我之后还暂时添加了一个等待循环,看看我是否只是不耐烦但它只是显示状态=等待直到我杀了应用程序:

    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:" MyBucket"

我也很好奇键是否应该是我的.upload()中的文件名应该包含路径或文件名。我已经尝试了两种,但其中哪一种是正确的:

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

video.mp4

到目前为止好吗?

感谢。

-var

3 个答案:

答案 0 :(得分:2)

我有同样的问题,以下主题给了我解决方案。

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

在清单中,我必须将转移实用程序服务放在应用程序标记内。

答案 1 :(得分:2)

将它放在AndroidManifest.xml中的应用程序标记内

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

答案 2 :(得分:0)

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