我已经尽可能多地阅读了关于这个主题的内容,并且我已经浏览了文档 (AWS 2.2.9) 并尽可能地使用他们的示例代码,但我被困住了。这是我为设置所做的:
list -
相关权限 -
“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", "ercent 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());
}
}
所有这些都发生在一个 fragment 内。我没有看到任何错误报告(我知道其他人已经观察到缺少配置会导致这种行为,但我认为我已经完成了我应该做的一切,在这里)。
如果听到我忽略的任何内容或需要尝试获取更多信息,我将不胜感激。
编辑:
我并不怀疑整个问题不在于代码,而在于我的配置。
我的 Cognito 和存储桶 ID 如下所示(但不完全是这些):
COGNITO_POOL_ID:“us-east-1:abcdefgh-abcd-efgh-ijkl-mnopqrstuvwxy”
BUCKET_NAME:“我的桶”
我也很好奇 key 应该是我的 .upload() 中的文件名应该包含路径还是只包含文件名。我都试过了,但哪一个是正确的:
/storage/emulated/0/Android/data/com.blah.blah/files/video.mp4
或
视频.mp4
到目前为止还好吗?
谢谢。
-VAR
Best Answer-推荐答案 strong>
我遇到了同样的问题,下面的帖子给了我解决方案。
Uploading files doesn't work with TransferUtility Amazon S3 in Android
在 list 中,我必须将传输实用程序服务放入应用程序标签中。
关于Android Amazon S3 上传视频卡住等待,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/34077205/
|