我正在尝试将照片从android上传到S3,并且我在S3网站上遵循的最新 *** 作方法为tutorial,但似乎未触发TransferObserver.我所有的变量都是全局声明的.当我运行此代码时:
credentialsProvIDer = new CognitoCachingCredentialsProvIDer( getApplicationContext(), "us-east-SECRET", // IDentity Pool ID Regions.US_EAST_1 // Region ); // Instantiate an S3 ClIEnt // Create an S3 clIEnt s3 = new AmazonS3ClIEnt(credentialsProvIDer); // Set the region of your s3 bucket s3.setRegion(Region.getRegion(Regions.DEFAulT_REGION)); // Instantiate TransferUtility transferUtility = new TransferUtility(s3, getApplicationContext()); //Upload a file to amazon s3 Log.i("imagefile", imagefile.toString()); observer = transferUtility.upload( "foond", /* The bucket to upload to */ "key", /* The key for the uploaded object */ imagefile /* The file where the data to upload exists */ ); Log.i("observer", observer.getabsolutefilePath()); Log.i("observer", observer.toString()); Log.i("observer", observer.getState().toString()); Log.i("observer", String.valueOf(observer.getBytesTransferred())); observer.setTransferListener(new TransferListener() { @OverrIDe public voID onStateChanged(int ID, TransferState state) { Log.i("ID", String.valueOf(ID)); Log.i("TransferState", String.valueOf(state)); } @OverrIDe public voID onProgressChanged(int ID, long bytesCurrent, long bytesTotal) { Log.i("ID", String.valueOf(ID)); Log.i("bytesCurrent", String.valueOf(bytesCurrent)); Log.i("bytesTotal", String.valueOf(bytesTotal)); } @OverrIDe public voID one rror(int ID, Exception ex) { Log.e("Error", String.valueOf(ex)); } }); Log.i("observer", observer.getState().toString()); Log.i("observer", String.valueOf(observer.getBytesTransferred()));
我在控制台中得到的是
I/Openglrenderer: Initialized EGL, version 1.4W/art: Suspending all threads took: 21.244msD/CognitoCachingCredentialsProvIDer: Loading credentials from SharedPreferencesI/imagefile: /storage/emulated/0/DCIM/Camera/img_20160223_134442.jpgV/RenderScript: 0x9ab29000 Launching thread(s), cpus 4I/Observer: /storage/emulated/0/DCIM/Camera/img_20160223_134442.jpgI/Observer: com.amazonaws.mobileconnectors.s3.transferutility.TransferObserver@6e1c6dfW/art: Suspending all threads took: 9.843msI/Observer: WAITINGI/Observer: 0I/Observer: WAITINGI/Observer: 0
在我看来,没有日志在setTransferListener中打印出来.为什么会这样呢?另外,应注意,图像未上传到S3.
这是我对清单的权限
<uses-permission androID:name="androID.permission.INTERNET"/><uses-permission androID:name="androID.permission.ACCESS_NETWORK_STATE"/><uses-permission androID:name="androID.permission.READ_EXTERNAL_STORAGE"/><uses-permission androID:name="androID.permission.ACCESS_FINE_LOCATION"/><uses-permission androID:name="androID.permission.ACCESS_COARSE_LOCATION"/>
这是我导入的依赖项:
compile 'com.amazonaws:aws-androID-sdk-core:2.+'compile 'com.amazonaws:aws-androID-sdk-cognito:2.+'compile 'com.amazonaws:aws-androID-sdk-s3:2.+'compile 'com.amazonaws:aws-androID-sdk-ddb:2.+'
我知道我对S3和cognito的设置是正确的,因为我使用了github中提供的示例代码,并且有一个要上传的文件.问题是代码不适合我在androID studio中运行的androID版本,并且我不想经历降级版本的麻烦.
这是我在gradle中的配置
compileSdkVersion 23buildToolsversion "23.0.2"defaultConfig { applicationID "xxxxxxxxx" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionname "1.0"}
TL; DR:TransferObserver观察器= transferUtility.upload无法正常工作.并且图像没有被上传.
解决方法:
只需在清单中注明(提及服务)即可.
<service androID:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService" androID:enabled="true" />
总结 以上是内存溢出为你收集整理的为何在AWS中未触发setTransferListener?全部内容,希望文章能够帮你解决为何在AWS中未触发setTransferListener?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)