图片上传
Android

https://mapopen-website-wiki.cdn.bcebos.com/demos/andDemos/yingyan/图片服务.mp4

扫码体验
核心接口
类
接口
描述
putObject(BosPutObjectRequest request, OnBosListener listener)
上传对象
LBSTraceClient
getObject(BosGetObjectRequest request, OnBosListener listener)
获取对象
generatePresignedUrl(BosGeneratePresignedUrlRequest request, OnBosListener listener)
获取对象的URL
BosPutObjectRequest
buildFileRequest(int tag, long serviceId, String objectKey, BosObjectType objectType, File file)
构造上传文件类型的请求实例
重点关注
1)、 注:鹰眼 Android SDK v3.0以上版本支持随轨迹上传图像等对象数据,若需使用此功能,该参数需设为 true,且需导入bos-android-sdk-1.0.2.jar。
// 是否需要对象存储服务,默认为:false,关闭对象存储服务。
boolean isNeedObjectStorage = true;
// 初始化轨迹服务
Trace mTrace = new Trace(serviceId, entityName, isNeedObjectStorage);
// 是否需要对象存储服务,默认为:false,关闭对象存储服务。
boolean isNeedObjectStorage = true;
// 初始化轨迹服务
Trace mTrace = new Trace(serviceId, entityName, isNeedObjectStorage);
核心代码
1.开启对象储存服务
JAVA
// 是否需要对象存储服务,默认为:false,关闭对象存储服务。 boolean isNeedObjectStorage = true; // 初始化轨迹服务 Trace mTrace = new Trace(serviceId, entityName, isNeedObjectStorage); mClient.startTrace(mTrace, traceListener);
复制
深色
复制成功
2.上传图片
JAVA
/** * 上传图片 * @param path */ private void putObject(String path) { // 对象key(即文件名称包括后缀,如track.jpg、track.png) String[] paths = path.split("/"); objectKey = paths[paths.length - 1]; // 对象类型 BosObjectType objectType = BosObjectType.image; try { // 通过文件形式上传 File file = new File(path); BosPutObjectRequest request = BosPutObjectRequest.buildFileRequest(trackApp.getTag(), trackApp.serviceId, objectKey, objectType, file); if (trackApp.isTraceStarted) { trackApp.mClient.putObject(request, bosListener); } else { viewUtil.showToast(this, "请在轨迹追踪页面开启对象存储并开启鹰眼服务"); } } catch (Exception e) { e.printStackTrace(); } }
复制
深色
复制成功
3.获取图片
JAVA
/**
* 获取对象(图片)
*
* @param view
*/
public void onGetObject(View view) {
// 对象类型
BosObjectType objectType = BosObjectType.image;
BosGetObjectRequest request = new BosGetObjectRequest(trackApp.getTag(), trackApp.serviceId, objectKey,
objectType);
trackApp.mClient.getObject(request, bosListener);
}
复制
深色
复制成功
4.获取图片URL
JAVA
/**
* 获取对象(图片)URL
*
* @param view
*/
public void onGeneratePresignedUrl(View view) {
// 对象类型
BosObjectType objectType = BosObjectType.image;
BosGeneratePresignedUrlRequest request = new BosGeneratePresignedUrlRequest(trackApp.getTag(),
trackApp.serviceId, objectKey, objectType);
// 图片处理命令
ImageProcessCommand imageProcessCommand = new ImageProcessCommand();
imageProcessCommand.setAngle(180);
request.setImageProcessCommand(imageProcessCommand);
// 文字水印命令
TextWatermarkCommand textWatermarkCommand = new TextWatermarkCommand();
textWatermarkCommand.setText("百度鹰眼");
textWatermarkCommand.setFontFamily(FontFamily.KaiTi);
textWatermarkCommand.setAngle(45);
textWatermarkCommand.setFontColor("0000FF");
request.setTextWatermarkCommand(textWatermarkCommand);
trackApp.mClient.generatePresignedUrl(request, bosListener);
}
复制
深色
复制成功
5.监听状态
JAVA
bosListener = new OnBosListener() { @Override public void onPutObjectCallback(BosPutObjectResponse response) { viewUtil.showToast(BosActivity.this, response.getMessage()); } @Override public void onGetObjectCallback(final BosGetObjectResponse response) { if (response.getStatus()!= StatusCodes.SUCCESS) { viewUtil.showToast(BosActivity.this, response.getMessage()); return; } viewUtil.showToast(BosActivity.this, getString(R.string.save_picture)); new Thread() { @Override public void run() { saveObject(response); } }.start(); } @Override public void onGeneratePresignedUrlCallback(BosGeneratePresignedUrlResponse response) { if (response.getStatus()!= StatusCodes.SUCCESS) { viewUtil.showToast(BosActivity.this, response.getMessage()); return; } // 获取Object的URL Uri uri = Uri.parse(response.getUrl()); Intent intent = new Intent(Intent.ACTION_VIEW, uri); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 执行URL BosActivity.this.startActivity(intent); } };
复制
深色
复制成功