Я читал столько, сколько могу здесь по этой теме, и я просканировал документацию (AWS 2.2.9), и я использую их примерный код так близко, как я могу, и я «Застрял. Вот что я сделал для установки:Android Amazon S3 Загрузить видео застрял в ожидании
манифеста -
соответствующих разрешений - "android.permission.INTERNET" и "android.permission.ACCESS_NETWORK_STATE"
сервиса -
андроид: 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());
}
});
Я временно добавил цикл ожидания после того, как увидеть, если я просто быть нетерпеливым, но он просто показывает состояние = ЖДАТЬ, пока я не убить приложение:
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());
}
}
Все это происходит внутри фрагмента. Я не вижу сообщений об ошибках (я понимаю, что другие заметили, что отсутствующая конфигурация может привести к такому поведению, но я думаю, что сделал все, что я должен делать, здесь).
Буду признателен, если услышу о чем-либо, что у меня есть, или вам нужно будет получить дополнительную информацию.
Edit:
Я не подозревает, что вся проблема не с кодом, а с конфигурацией, которую я получил.
Мой Cognito и ведро Id выглядеть следующим образом (но не точно они):
COGNITO_POOL_ID: "мы-восток-1: ABCDEFGH-ABCDEFGH-IJKL-mnopqrstuvwxy" BUCKET_NAME: «MyBucket "
Мне также интересно узнать, должен ли ключ быть именем файла в моей .upload() должен включать в себя путь или просто имя файла. Я пробовал оба, но какой из них будет правильно:
/storage/emulated/0/Android/data/com.blah.blah/files/video.mp4
или
видео. mp4
До сих пор?
Спасибо.
-var
Вы звоните обновления на TransferObserver? В каком состоянии это сообщение застревает? – WestonE
WestonE, я добавил обновление. Состояние отчетности задерживается на «ОЖИДАНИИ». – VAR
Это еще проблема? Вы называете это фоновым потоком? Что делать, если вы делаете вызов за пределами фрагмента? Вы уверены, что файл существует? Можете ли вы скачать файл? Также видео.mp4 должно быть в порядке. – WestonE