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 安卓开发的核心原理和使用方式。


相关知识:
安卓10的开发者模式都有哪些功能
安卓10的开发者模式是为开发人员提供的一种高级设置,它包含了很多有用的功能,可以帮助开发人员更好地调试和测试应用程序。本文将介绍安卓10的开发者模式中的主要功能,并对其原理进行解析。1.USB调试USB调试是开发者模式中最常用的功能之一。通过将您的Andr
2023-05-23
v5开发版安卓
V5开发版是一款基于Java语言的移动端APP开发框架,它具有开源、简单易用、高效等特点,在移动端应用开发中得到了广泛应用。V5开发版在Android平台上的应用尤为突出,本文将详细介绍V5开发版在Android应用开发中的原理和相关知识。一、V5开发版的
2023-05-23
ubuntu安卓开发环境搭建
Ubuntu和安卓是两个非常流行的操作系统,它们都有着广泛的应用。而搭建一个Ubuntu安卓开发环境可以更好的学习和研究安卓开发。本文将介绍如何在Ubuntu系统上搭建一个安卓开发环境。首先,我们需要安装Java,因为Android开发需要Java开发环境
2023-05-23
tc简单开发工具安卓版本教程
TC简单开发工具是一款为开发者提供方便快捷的开发环境的工具软件,支持多种编程语言,包括C语言、C++语言、Java、Python等。它对于初学者来说尤其友好,因为它提供了简单易用的界面和工具功能,使得开发者可以更加专注于代码的编写而不需要太多额外的配置和设
2023-05-23
u3d开发安卓app
Unity3D是一款跨平台的游戏引擎,支持Windows、macOS、iOS、Android、WebGL等多个平台。借助Unity3D,我们可以开发出跨平台、高性能的游戏和应用程序。其中,安卓平台作为全球最大的移动操作系统之一,也是我们重要的开发目标。在U
2023-05-23
有人用易安卓开发app吗安全吗
易安卓(Easiio-Android)是一款适用于初学者和非程序员的Android应用开发工具。用户可以通过可视化的操作界面,拖拽组件快速创建出自己的应用。对于许多对代码逻辑不熟悉的人来说,易安卓提供了一个简单的上手途径。接下来为您介绍易安卓的原理及详细的
2023-04-28
开发一个安卓app需要多少钱
开发一个安卓应用的成本因素很多,包括项目范围、设计复杂度、开发时间、开发资源、技术难度等。为了给你一个详细的介绍,我们从以下几个方面进行说明:1. 项目范围和功能:你想要开发的安卓应用的核心功能与目标决定了所需的开发时间和成本。一个基本的应用程序,如日历或
2023-04-28
安卓开发购物app的目的
安卓开发购物App的主要目的是为购物者提供便利,让他们可以在手机上购买商品。随着移动互联网的普及和快速发展,人们越来越倾向于使用手机和平板电脑进行网购和线上支付,因此开发购物App已成为了一种不可或缺的需求。在购物App中,用户可以浏览商品信息、下单购买、
2023-04-28
安卓app怎么开发界面
安卓本身提供了一些默认的UI组件,如TextView、Button、EditText、ImageView等,开发者可以通过XML或Java代码来创建和配置这些组件以实现不同的界面效果。1. XML布局方式XML布局方式是安卓开发中最常用的方式,其基本步骤如
2023-04-28
安卓appjava开发
安卓app是基于Java语言进行开发的,下面将对安卓app的Java开发原理进行详细介绍。1. 安卓app中的Java语言Java语言在安卓app中扮演着重要的角色,其可以帮助开发者实现具有良好用户体验的应用程序。Java语言的特点是具有面向对象的语言特性
2023-04-28
佛山优良的安卓app开发
安卓app开发是一门广泛应用的技术,涵盖了从设计、编程到测试和发布的全过程。下面,我们来介绍一些佛山优良的安卓app开发原理或详细介绍。1. Java语言安卓应用程序是使用Java语言编写的,因此要成为一名优秀的安卓应用程序员,需要精通Java编程。Jav
2023-04-28
51单片机安卓app开发
51单片机是一种常见的微控制器,适合用在各种嵌入式系统开发中。我们可以通过开发安卓app来控制51单片机,实现各种应用的控制。本教程将从原理和详细开发过程两方面介绍如何实现这个目的。一、原理要实现安卓app控制51单片机,本质上就是将安卓设备与单片机相连接
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1