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


相关知识:
安卓app 开发费用
安卓App开发费用因制作工作量的不同而有所差异,具体的开发费用应该根据实际情况进行定制,以下是一些可能会影响开发费用的因素:1.开发周期:定制一个完整的安卓app需要多少时间是有所不同的,这个时间将直接影响到开发费用。要制作一个简单的app需要几个星期,而
2023-05-23
安卓11开发者版本
近期,谷歌公司发布了Android 11的第一个开发者预览版,该版本为开发者提供了优秀的前所未有的库和API,帮助开发者更好地开发应用程序。本文将详细介绍安卓11开发者版本的原理和相关特性,以期为广大开发者提供参考。1. 系统UI改进Android 11改
2023-05-23
安卓 开发人员选项
安卓开发人员选项(Developer options)是一项隐藏在Android系统设置中的高级功能,可以让开发人员获取更多的系统控制权,用来调试和测试应用程序以及优化设备性能。开启模式:在设置中找到“关于手机”选项,点击7次(某些Android版本可能需
2023-05-23
安徽安卓app开发哪家好
在安徽地区开展APP开发的公司数量较多,但是想要选择一家好的公司进行开发,需要从诸多的方面进行考虑。首先,我们需要考虑APP开发公司的实力,包括开发经验、技术水平、开发团队、开发成果等众多方面。一家有实力的企业,在开发过程中可以提供更加专业的建议和方案,可
2023-05-23
native做安卓移动端开发
Native(原生开发)是指使用针对特定平台(如iOS或Android)的原生编程语言和开发工具,开发基于该平台的应用程序。对于安卓移动端开发而言,Native指的就是使用Java和Android Studio等工具进行开发。Native开发具有以下优势:
2023-05-23
mooc安卓开发
MOOC(Massive Open Online Course)即大规模在线开放课程,是指通过互联网远程教学的一种方式,目前已经成为了教育领域的一个新兴趋势,而安卓开发也是其中的重要一环。下面将为你介绍MOOC安卓开发的具体原理以及详细介绍。一、MOOC安
2023-05-23
firefox开发者安卓版
Firefox开发者安卓版是Mozilla基金会开发的一款针对安卓平台的专业开发者工具。该工具提供了一系列实用的调试工具和调用接口,让开发者能够更加方便地进行网页和应用程序的开发和调试。Firefox开发者安卓版最大的特点是其支持远程调试,可以通过远程直接
2023-05-23
arm开发板 安卓
ARM开发板是一种基于ARM架构的嵌入式开发板,它具有功耗低、性能高、集成度高、扩展性强的优势,因此被广泛应用于智能手机、平板电脑、物联网、智能家居等领域。而在这些应用场景中,安卓系统的应用越来越广泛。在本文中,我们将对ARM开发板与安卓系统进行原理介绍和
2023-05-23
安卓阅读类app开发问题
安卓阅读类App开发需要考虑以下几个方面:1. 应用架构开发阅读类App时,通常需要采用MVC或MVVM设计模式来构建应用结构。同时,需要考虑应用的维护性和扩展性问题,尽量避免应用代码过于臃肿,建议使用模块化开发。2. 功能需求阅读App的核心功能包括阅读
2023-04-28
安卓app开发理念
安卓App开发是指运用Java语言和安卓SDK开发各类应用程序的技术。具体来说,安卓应用程序采用的是Java语言编程,以及Android SDK提供的API。开发人员使用Java语言编写业务逻辑代码,使用Android SDK提供的API来调用设备硬件和系
2023-04-28
安卓app开发毕业设计
安卓应用开发是计算机科学和技术专业及相关专业的学生在毕业设计中的热门方向之一。本文将简要介绍如何进行一个安卓应用开发的毕业项目,并提供详细的内容和步骤。1. 选题:选择一个项目题目是安卓应用开发毕业设计的第一步。结合自己所在的专业和兴趣,选择一款具有现实意
2023-04-28
安卓app开发小项目
一个简单的 Android App 开发项目是一个简单的计算器。这个项目将展示如何使用 Java 和 Android Studio 编写简单的代码,并且展示如何使用 Android Studio 中的布局编辑器来创建应用程序的用户界面。以下是步骤:1. 创
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1