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手机中,如何打开开发者模式呢?下面我们来一一介绍。一、
2023-05-23
安卓 开发模式
安卓开发模式是指安卓应用程序开发中的一种模式,常见的有MVC、MVP、MVVM等,其实现的目的是将应用程序拆分成多个组件进行开发,使得应用程序更易于维护,同时也使得开发者能够更好地管理应用程序的逻辑和数据。MVC模式MVC模式(Model-View-Con
2023-05-23
eclipse安卓开发环境
Eclipse是一款开源的集成开发环境(IDE),用于Java开发。除了Java之外,它还支持各种其他语言和开发工具,包括安卓开发。Eclipse的安卓开发环境包含一组插件,称为ADT(Android Development Tools),这些插件让你可以
2023-05-23
eclipse安卓常用开发工具
Eclipse是一款常用的开发环境,被广泛认可为Android开发的首选工具之一。下面将详细介绍Eclipse在Android开发中常用的开发工具。1. Java Development Kit (JDK)JDK是Java开发的核心工具,是编写和运行Jav
2023-05-23
c++ 安卓 开发
C++是一门强大的编程语言,被广泛应用于嵌入式系统、网络开发、操作系统和游戏等多个领域。在安卓系统的开发中,C++也具有重要的地位。本文将简要介绍C++在安卓开发中的原理和应用。C++在安卓开发中的原理Android NDK(Native Developm
2023-05-23
开发安卓app需要哪些技术
开发一个安卓应用程序(APP)需要掌握一系列的技术,包括编程语言、开发工具、设计原则以及对安卓操作系统的理解。以下是开发一个安卓应用所需的主要技术:1. 编程语言:掌握一种或多种编程语言是开发安卓应用程序的基础,目前主流的编程语言有Java、Kotlin和
2023-04-28
安卓系统app开发 与底层互动
安卓系统的应用程序开发,是在Java语言基础上开发。要与底层互动,就需要了解Android系统的底层实现。Android系统是基于Linux内核的,它提供了许多C/C++库及JNI框架供Java程序使用,以支持和平滑地与设备硬件进行通信和协作。底层C/C+
2023-04-28
安卓个人开发者发布app
安卓个人开发者发布APP详细教程作为一个安卓开发者,将自己开发的应用成功发布到应用商店是非常令人激动的一件事。在本教程中,我将向您详细介绍如何作为个人开发者发布安卓应用程序到Google Play商店。## 准备工具和开发环境在开始发布APP之前,请确保您
2023-04-28
安卓app开发的初步了解
安卓App开发初步了解安卓(Android)是由Google开发的一个基于Linux内核和其他开源软件的开放源代码移动操作系统。它主要用于触摸屏移动设备如智能手机和平板电脑。由于Android系统的开放性和丰富的功能,它迅速吸引了全球数百万开发者。在这篇文
2023-04-28
原生安卓开发app
原生安卓开发指使用Android SDK提供的API、JAVA语言和XML等技术,结合类、接口、组件等开发Android应用程序。下面是一些核心的步骤和内容:1.安装Android开发环境首先需要下载Android Studio,它是一个Android开发
2023-04-28
unity3d开发安卓app前期准备什么
在开发 Unity3D 安卓 App 之前,需要先进行以下准备工作:1. Unity3D 开发环境的安装:首先下载并安装 Unity3D 开发环境。确保安装的版本与想要开发的项目版本相对应,并激活对应的个人版或专业版许可证。2. 安卓移动端开发环境的安装:
2023-04-28
eclipse安卓app开发
Eclipse是一款流行的集成开发环境(IDE),可以用于开发各种类型的应用程序,包括Java、C++和安卓应用程序。安卓应用程序是基于Java语言和安卓操作系统的。在使用Eclipse开发安卓应用程序之前,需要安装安卓开发工具包(ADT)插件。安装ADT
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1