ar安卓开发库
AR(增强现实)技术在近年来备受瞩目,被广泛应用于游戏、广告、营销、教育、医疗等领域。在移动设备上开发AR应用,需要借助AR开发库,而在Android平台上开发AR应用,最常用的开发库是Google推出的ARCore。ARCore是一个运行在Android上的AR平台,它是去年推出的,它通过使用摄像...
2023-11-11 围观 : 4次
阿里云对象存储(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 安卓开发的核心原理和使用方式。
AR(增强现实)技术在近年来备受瞩目,被广泛应用于游戏、广告、营销、教育、医疗等领域。在移动设备上开发AR应用,需要借助AR开发库,而在Android平台上开发AR应用,最常用的开发库是Google推出的ARCore。ARCore是一个运行在Android上的AR平台,它是去年推出的,它通过使用摄像...
HTML一键打包工具是一种将多个HTML文件打包成一个文件的工具,其原理主要是通过将多个HTML文件合并成一个HTML文件,从而实现快速打包和上传的目的。下面将详细介绍HTML一键打包工具的原理和使用方法。一、原理HTML一键打包工具主要是通过以下几个步骤来实现多个HTML文件的打包:1. 首先,需...
做App前端的工作主要是负责App用户界面的设计和实现,其中还包括用户交互、动画效果以及应用程序逻辑等方面的工作。为了成为一名优秀的App前端开发工程师,需要掌握以下技术:1. HTML、CSS和JavaScript:这是做前端开发的必备技能。HTML用于构建网页的结构,CSS用于样式设计,Java...
作为一个有着丰富知识的网站博主,我非常乐意为大家分享如何做网站或者app。本文将以一个初学者的角度出发,介绍做网站或者app的原理和详细步骤。一、做网站1. 域名和主机做一个网站首先需要域名和主机。域名是网站的名称,而主机则是网站所使用的服务器。域名可以在网上购买,主机也可以通过购买或者租赁来获得。...
Windows 11是微软公司推出的最新操作系统,它的界面设计和操作方式都有所改进和优化,更加符合现代人的使用习惯。在Windows 11中,用户可以通过界面设置软件进行自定义操作,来满足个性化的需求。下面,我们来详细介绍一下Windows 11界面设置软件的原理和使用方法。Windows 11界面...