oss安卓开发

阿里云对象存储(OSS)是一种云存储解决方案,提供安全、高可用、高扩展、低成本的数据存储服务。它可用于存储图片、音视频、文档等各种多媒体文件,也可用于搭建各种类型的网站文件系统、移动APP数据存储等。 OSS 还提供 Restful API 接口、SDK 工具和丰富的管理控制台,使开发人员和管理员能够更轻松地管理和访问存储的文件。

本文将主要介绍 OSS 在安卓开发中的原理和使用方式。

## OSS 安卓 SDK

OSS 安卓 SDK 通常是以 jar 包的形式提供给开发者使用。在安卓开发中,我们可以将其下载到本地文件,然后在工程中导入,就可以使用 OSS 提供的 API 接口进行开发。

目前 OSS 提供在安卓端的 SDK 可以在官网上进行下载,其链接如下:

```

https://help.aliyun.com/document_detail/32013.html

```

## SDK 使用流程

下面我们就以安卓 APP 开发为例,介绍 OSS SDK 的使用流程。

### 1.导入 SDK

下载 OSS SDK 并在项目中导入oss-android-sdk-x.x.x.jar 包。

### 2.配置权限

在安卓Manifest.xml 文件中配置以下权限:

```

```

### 3.初始化 SDK

在 Application 中初始化 OSSClient:

```java

public class MyApplication extends Application{

private OSS oss;

@Override

public void onCreate() {

super.onCreate();

OSSLog.enableLog();

OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider("YourAccessKeyId", "YourAccessKeySecret");

OSS oss = new OSSClient(getApplicationContext(), "YourEndpoint", credentialProvider);

}

public OSS getOss() {

return oss;

}

}

```

其中,`YourAccessKeyId` 和 `YourAccessKeySecret` 是你在阿里云账号中申请的 Access Key,`YourEndpoint` 是给 OSS 分配的域名。

### 4.简单上传

使用 OSSClient 的 `putObject`接口进行简单上传。

```java

public class OssService {

private static final String endpoint = "**YourEndpoint**";

private static final String callbackAddress = "**YourCallbackAddress**";

private static final String accessKeyId = "**YourAccessKeyId**";

private static final String accessKeySecret = "**YourAccessKeySecret**";

private static final String testBucket = "**YourBucketName**";

private static final String testObject = "**YourObjectName**";

private static final String uploadFilePath = "**YourUploadFilePath**";

public OSS getOss(Context context) {

OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider(accessKeyId, accessKeySecret);

OSS oss = new OSSClient(context, endpoint, credentialProvider);

return oss;

}

public void asyncPutObjectFromLocalFile() {

// 构造上传请求

PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath);

OSSAsyncTask task = getOss(context).asyncPutObject(put, new OSSCompletedCallback() {

@Override

public void onSuccess(PutObjectRequest request, PutObjectResult result) {

Log.d("PutObject", "UploadSuccess");

Log.d("ETag", result.getETag());

Log.d("RequestId", result.getRequestId());

}

@Override

public void onFailure(PutObjectRequest request, ClientException clientException, ServiceException serviceException) {

// 请求异常

if (clientException != null) {

// 本地异常如网络异常等

clientException.printStackTrace();

}

if (serviceException != null) {

// 服务异常

Log.e("ErrorCode", serviceException.getErrorCode());

Log.e("RequestId", serviceException.getRequestId());

Log.e("HostId", serviceException.getHostId());

Log.e("RawMessage", serviceException.getRawMessage());

}

}

});

}

}

```

其中,`PutObjectRequest` 中设置待上传文件的 Bucket 名称、上传路径和本地文件的绝对路径;OSSAsyncTask 控制上传任务的异步执行结果。

### 5. 简单下载

使用 OSSClient 的 `getObject` 接口进行简单下载。

```java

public class OssService {

// 上文代码省略...

public void asyncGetObject() {

// 构造下载文件请求

GetObjectRequest get = new GetObjectRequest(testBucket, testObject);

OSSAsyncTask task = getOss(context).asyncGetObject(get, new OSSCompletedCallback() {

@Override

public void onSuccess(GetObjectRequest request, GetObjectResult result) {

InputStream inputStream = result.getObjectContent();

try {

FileOutputStream outputStream = new FileOutputStream(Environment.getExternalStorageDirectory() + "/oss/" + testObject);

byte[] buffer = new byte[2048];

int len;

while ((len = inputStream.read(buffer)) != -1) {

outputStream.write(buffer, 0, len);

}

outputStream.close();

inputStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

@Override

public void onFailure(GetObjectRequest request, ClientException clientException, ServiceException serviceException) {

// 请求异常

if (clientException != null) {

// 本地异常如网络异常等

clientException.printStackTrace();

}

if (serviceException != null) {

// 服务异常

Log.e("ErrorCode", serviceException.getErrorCode());

Log.e("RequestId", serviceException.getRequestId());

Log.e("HostId", serviceException.getHostId());

Log.e("RawMessage", serviceException.getRawMessage());

}

}

});

}

}

```

其中,`GetObjectRequest` 中设置下载文件的 Bucket 名称和下载路径;OSSAsyncTask 控制下载任务的异步执行结果。

## 结语

OSS 提供安卓 SDK,方便开发者在安卓 APP 中使用它的服务,通过本文,希望可以帮助读者掌握 OSS 安卓开发的核心原理和使用方式。


相关知识:
安卓ai通话开发
随着人工智能技术的发展,现在我们能够看到越来越多的智能设备和应用程序,其中一项典型的应用就是安卓AI通话技术。安卓AI通话技术是一种基于人工智能技术和语音识别技术实现的电话通话系统,该系统能够自动识别接听电话的人的语音内容,并根据其内容确认对话主题,最终根
2023-05-23
安卓10开发者选项虚拟定位
随着安卓系统的不断更新,开发者选项也有不断的更新和升级。在最新的安卓10系统中,开发者选项中新增了一个虚拟定位的功能,使得开发者可以在模拟器或者真机上快速切换定位信息。本文将详细介绍安卓10开发者选项虚拟定位的原理和使用方法。1.虚拟定位的原理在安卓系统中
2023-05-23
xp开发安卓程序
XP开发安卓程序是一种基于XP语言和安卓系统的开发方式,可以快速地创建基于安卓系统的应用程序,下面详细介绍一下其原理和使用方法。一、XP语言简介XP语言是一种易于学习和使用的编程语言,与其他最受欢迎的编程语言相比,它更加简单易懂。XP语言设计目标包括高效率
2023-05-23
uniapp开发安卓和ios注意点
Uniapp是一款跨平台开发工具,开发者可以用它开发一次代码即可同时生成iOS和安卓版本的应用程序,极大地提高了开发效率。但是,在使用Uniapp进行开发时,需要注意一些细节问题,才能达到良好的开发效果。本文将重点介绍Uniapp开发安卓和iOS的注意点。
2023-05-23
m1开发安卓
M1芯片是苹果公司自主研发的一款处理器芯片,用于其最新发布的Mac电脑产品中。由于M1芯片移植了ARM架构,具有更高的能效比和更强的性能,所以苹果公司逐渐将其在产品中使用。除了Mac电脑,苹果公司还将M1芯片移植到了iPad和iPhone设备中。本文将介绍
2023-05-23
java安卓客户端开发怎么学
Java安卓客户端开发是一项非常受欢迎的技术领域,因为安卓是目前全球最主流和最大的智能手机操作系统之一。学习Java安卓客户端开发需要具备一定基础知识,包括Java编程语言和Android操作系统的相关知识。本文将从原理和详细介绍两个角度,为初学者介绍Ja
2023-05-23
eclipse如何开发安卓软件
开发安卓软件是一件非常有趣的事情,它需要用到一些特定的工具,例如 Android SDK、Java 开发工具以及 IDE 工具,例如 Eclipse、Android Studio、IntelliJ IDEA 等等。在这篇文章中,我们将会详细介绍在 Ecli
2023-05-23
alicloud开发安卓
AliCloud是阿里巴巴云计算的品牌,它提供了丰富的云计算资源和服务,包括存储、计算、网络、安全等等。Android开发者可以通过AliCloud的SDK来快速接入AliCloud的云服务,并且在应用程序中使用这些云服务。AliCloud的SDK提供了以
2023-05-23
直播安卓app开发的
标题:入门直播安卓APP开发:原理与详细介绍摘要:本文将向您介绍如何入门直播安卓APP开发,包括直播原理、技术选择和开发流程,帮助初学者掌握直播APP开发的基本知识。一、直播原理简介直播(实时传输)是通过互联网将本地或远程的音视频源传输到用户终端进行观看的
2023-04-28
安卓app开发者证书
安卓应用开发者证书,正式名称为Android应用签名密钥(Android App Signing Key),是用于Android App开发过程中进行应用签名的一种机制。为了确保安全性和数据完整性, 任何要在Android设备上安装的应用都必须经过数字签名
2023-04-28
安卓app开发学习路径
安卓app开发是一项非常有前途和发展空间的技能,以下是适合初学者的学习路径:1. Java语言基础:安卓应用是使用Java开发的,因此首先要掌握Java语言基础,包括语法、面向对象编程、继承、多态、泛型等。可以通过看书、网上教程或参加线上视频课程进行学习。
2023-04-28
eclipse安卓开发更改app图标
Eclipse 是一种集成开发环境 (IDE),可以用于 Android 应用程序的开发。虽然 Android Studio 是现在主流的 Android 开发工具,但在某些情况下,使用 Eclipse 仍然有它的优势。在此教程中,我们将介绍如何在使用 E
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1