接口
通用规则
同步
同步方法调用后必须等到方法结果返回后才能继续后续的行为,返回值可以是任意类型。
- 示例
var info = app.getInfo();
console.log(JSON.stringify(info));
异步
异步方法调用整个过程不会阻碍调用者的工作。业务执行完成后会调用开发者提供的回调函数。
- 异步接口支持的回调函数
提示:
- success、fail、cancel 和 complete 四个回调函数是否支持参考具体接口描述
- success、fail 和 cancel 三个回调函数的触发是互斥的,即会且只会在一个回调函数中触发,触发任意一个都会再次调用 complete 回调。
- 示例
battery.getStatus({
  success: function (data) {
    console.log("success get battery level:" + data.level);
  },
  fail: function (data, code) {
    console.log("fail to get battery level code:" + code);
  },
});
订阅
订阅接口不会立即返回结果,开发者要在参数中设置相应的回调函数;该回调函数会在完成时或者事件变化时进行回调;可以执行多次。
- 订阅接口支持以下回调函数 
- 以地理位置接口为例 
geolocation.subscribe({
  success: function (data) {
    console.log("get location. latitude:" + data.latitude);
  },
  fail: function (data, code) {
    console.log("fail to get location. code:" + code);
  },
});
通用错误码
该章节提供公共的错误码。
其中,错误码 200 为系统通用错误码,所有系统未知异常发生时抛出。比如框架申请内存空间失败等。
| code | 含义 | 
|---|---|
| 200 | 通用错误。 | 
| 202 | 参数错误。 | 
| 300 | I/O 错误。 | 
基本功能
应用上下文
导入模块
import app from "@system.app";
app.getInfo()
获取当前应用配置文件中声明的信息。
- 参数 - 无 
- 返回值 - 参数名 - 类型 - 说明 - appName - string - 表示应用的名称。 - versionName - string - 表示应用的版本名称。 - versionCode - number - 表示应用的版本号。 
- 示例 
var info = app.getInfo();
console.log(JSON.stringify(info));
app.terminate()
退出当前 Ability
- 参数 - 无 
- 示例 
app.terminate();
日志打印
导入模块
无需导入。
日志分类
打印一段文本信息,console.debug|log|info|warn|error(message)
- 参数 - 参数名 - 类型 - 必填 - 说明 - message - string - 是 - 表示要打印的文本信息。 
- 示例 
var versionCode = 1;
console.info("Hello World. The current version code is " + versionCode);
提示:
console.log()打印的是 debug 级别日志信息。
页面路由
导入模块
import router from "@system.router";
router.replace(OBJECT)
用应用内的某个页面替换当前页面,并销毁被替换的页面。
- 参数 - 参数名 - 类型 - 必填 - 说明 - uri - string - 是 - 目标页面的 uri,可以是一下的两种格式: 页面绝对路径,由配置文件中 pages 列表提供,例如:pages/index/indexpages/detail/detail 特殊值,如果 uri 的值是"/",则跳转到首页。 - params - Object - 否 - 跳转时要同时传递到目标页面的数据,跳转到目标页面后,参数可以在页面中直接使用,如 this.data1(data1 为跳转时 params 参数中的 key 值)。如果目标页面中已有该字段,则其值会被传入的字段值覆盖。 
- 示例 
// 在当前页面中
export default {
  replacePage() {
    router.replace({
      uri: "pages/detail/detail",
      params: {
        data1: "message",
      },
    });
  },
};
// 在detail页面中
export default {
  data: {
    data1: "default",
  },
  onInit() {
    console.info("showData1:" + this.data1);
  },
};
应用配置
导入模块
import configuration from "@system.configuration";
configuration.getLocale()
获取应用当前的语言和地区。默认与系统的语言和地区同步。
- 返回值 - 参数名 - 类型 - 说明 - language - string - 语言。例如:zh。 - countryOrRegion - string - 国家或地区。例如:CN。 - dir - string - 文字布局方向。取值范围: ltr:从左到右;rtl:从右到左。 
- 示例 
const localeInfo = configuration.getLocale();
console.info(localeInfo.language);
定时器
支持设备
表 1 API 的设备支持情况
| API | 轻量级智能穿戴 | 
|---|---|
| setTimeout | 支持 | 
| clearTimeout | 支持 | 
| setInterval | 支持 | 
| clearInterval | 支持 | 
导入模块
无需导入。
权限列表
无
setTimeout(handler[, delay[, ...args]])
设置一个定时器,该定时器在定时器到期后执行一个函数。
- 参数 - 参数名 - 类型 - 必填 - 说明 - handler - Function - 是 - 定时器到期后执行函数。 - delay - number - 否 - 延迟的毫秒数,函数的调用会在该延迟之后发生。如果省略该参数,delay 取默认值 0,意味着“马上”执行,或尽快执行。 - ...args- Array - <any>- 否 - 附加参数,一旦定时器到期,他们会作为参数传递给 handler。 
- 返回值 - timeoutID 定时器的 ID 
- 示例 
var timeoutID = setTimeout(function () {
  console.log("delay 1s");
}, 1000);
clearTimeout(timeoutID)
取消了先前通过调用 setTimeout()建立的定时器。
- 参数 - 参数名 - 类型 - 必填 - 说明 - timeoutID - number - 是 - 要取消定时器的 ID, 是由 setTimeout()返回的。 
- 示例 
var timeoutID = setTimeout(function () {
  console.log("do after 1s delay.");
}, 1000);
clearTimeout(timeoutID);
setInterval(handler[, delay[, ...args]])
重复调用一个函数,在每次调用之间具有固定的时间延迟。
- 参数 - 参数名 - 类型 - 必填 - 说明 - handler - Function - 是 - 要重复调用的函数。 - delay - number - 否 - 延迟的毫秒数(一秒等于 1000 毫秒),函数的调用会在该延迟之后发生。 - ...args - Array - <any>- 否 - 附加参数,一旦定时器到期,他们会作为参数传递给 handler。 
- 返回值 - intervalID 重复定时器 ID 
- 示例 
var intervalID = setInterval(function () {
  console.log("do very 1s.");
}, 1000);
clearInterval(intervalID)
可取消先前通过 setInterval() 设置的重复定时任务。
- 参数 - 参数名 - 类型 - 必填 - 说明 - intervalID - number - 是 - 要取消的重复定时器的 ID,是由 setInterval() 返回的。 
- 示例
var intervalID = setInterval(function () {
  console.log("do very 1s.");
}, 1000);
clearInterval(intervalID);
页面路由
接口声明
无需声明
导入模块
import router from '@system.router' 或 const router = require('@system.router')
接口定义
router.push(OBJECT)
跳转到应用内的某个页面
参数:
| 参数 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| uri | String | 是 | 要跳转到的 uri,可以是下面的格式:包含 schema 的完整 uri;目前支持的 schema 有 tel,sms 和 mailto,例如 tel:10086。以‘/’开头的应用内页面的路径;例:/about。以非‘/’开头的应用内页面的名称;例:About。特殊的,如果 uri 的值是"/",则跳转到 path 为"/"的页,没有则跳转到首页支持包含 schema 的完整 uri。对于带有 schema 的 uri,处理流程如下:查找 app 下所有 page 的 filter 设置来选择合适的 page 处理请求(参见 manifest 文件)如果没有合适的 page 能够处理请求,会使用默认策略来处理请求。目前默认策略支持对 http、https、internal 这几种 schema 的处理如果默认策略也不能处理请求,会尝试使用系统中的应用来处理请求如果没有系统应用可以处理请求,会抛弃请求默认策略的处理逻辑:如果 schema 是 http/https,会用内置的 web 页面打开网页如果 schema 是 internal(参见文件组织),会根据 uri 的文件扩展名来确定文件类型,再调用系统中的应用打开文件如果 schema 是 hap(参见 hap 链接),会跳转到 hap 链接所支持的类型 | 
示例:
- 应用内切换页面 - path 切换router.push({ uri: "/about", params: { testId: "1", }, });
- name 切换// open page by name router.push({ uri: "About", params: { testId: "1", }, });
 
- path 切换
- 打开另一个快应用
router.push({
  uri: "hap://app/com.example.quickapp/page?key=value",
});
router.replace(OBJECT)
跳转到应用内的某个页面,当前页面无法返回
参数:
| 参数 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| uri | String | 是 | 要跳转到的 uri,可以是下面的格式:以"/"开头的应用内页面的路径;例:/about。以非"/"开头的应用内页面的名称;例:About。特殊的,如果 uri 的值是"/",则跳转到 path 为"/"的页,没有则跳转到首页 | 
| params | Object | 否 | 跳转时需要传递的数据,参数可以在目标页面中通过 this.param1 的方式使用,param1 为 json 中的参数名,param1 对应的值会统一转换为 String 类型。使用 this.param1 变量时,需要在目标页面中在 public(应用外传参)或 protected (应用内传参)下定义 key 名相同的属性 | 
示例:
router.replace({
  uri: "/test",
  params: {
    testId: "1",
  },
});
router.back(OBJECT)
返回指定页面
参数:
| 参数 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| path | String | 否 | 返回目标页面的路径,可以是以下几种取值:不传该参数,返回上一页面以"/"开头的应用内已打开页面的路径;例:/about。特殊的,如果 path 的值是"/",则跳转到页面名称为"/"的页,没有则跳转到首页注意点:path 需要是以"/"开头的当前应用已经打开的页面路径,否则均视为无效参数,返回上一页面若根据 path 未匹配到已经打开的页面,返回上一页面若根据 path 参数匹配到多个页面,返回至最后打开的页面 | 
示例:
// A页面, open page by name
router.push({
  uri: "B",
});
// B页面, open page by name
router.push({
  uri: "C",
});
// C页面, open page by name
router.push({
  uri: "D",
});
// D页面, open page by name
router.push({
  uri: "E",
});
// E页面不传入页面路径,返回至D页面
router.back();
// D页面不传入页面名称,返回至C页面
router.back();
// C页面传入页面路径,返回至A页面
router.back({
  path: "/A",
});
router.clear()
清空所有历史页面记录,仅保留当前页面
参数:
无
示例:
router.clear();
router.getLength()
获取当前页面栈的页面数量
返回值:
| 类型 | 说明 | 
|---|---|
| Number | 页面数量 | 
示例:
var length = router.getLength();
console.log(`page's length = ${length}`);
router.getState()
获取当前页面状态
返回参数:
| 参数名 | 类型 | 说明 | 
|---|---|---|
| index | Number | 当前页面在页面栈中的位置 | 
| name | String | 当前页面的名称 | 
| path | String | 当前页面的路径 | 
示例:
var page = router.getState();
console.log(`page index = ${page.index}`);
console.log(`page name = ${page.name}`);
console.log(`page path = ${page.path}`);
router.getPages()
获取当前页面栈列表
返回值:
| 类型 | 说明 | 
|---|---|
| Array | 页面栈列表。数组每一项都为 Object 类型。 | 
数组每一项构成:
| 字段 | 类型 | 说明 | 
|---|---|---|
| name | String | 页面的名称 | 
| path | String | 页面的路径 | 
示例:
var stacks = router.getPages();
console.log("栈底页面名称为:", stacks[0].name); // 如 list、detail 等
console.log("栈底页面路径为:", stacks[0].path); // 如 /list、/detail、/home/preview
文件数据
数据存储
导入模块
import storage from "@system.storage";
storage.get(OBJECT)
读取存储的内容。
- 参数 - 参数名 - 类型 - 必填 - 说明 - key - string - 是 - 内容索引。 字符串最大长度为 32,且不能包含“/"*+,:;<=>?[] | \x7F”等特殊符号。 - default - string - 否 - key 不存在则返回的默认值。如果未指定,则返回空字符串,长度为 0。 - success - Function - 否 - 接口调用成功的回调函数,返回存储的内容。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
- 示例 
storage.get({
  key: "storage_key",
  success: function (data) {
    console.log("call storage.get success: " + data);
  },
  fail: function (data, code) {
    console.log("call storage.get fail, code: " + code + ", data: " + data);
  },
  complete: function () {
    console.log("call complete");
  },
});
storage.set(OBJECT)
修改存储的内容。
- 参数 - 参数名 - 类型 - 必填 - 说明 - key - string - 是 - 要修改的存储内容的索引。字符串最大长度为 32,且不能包含“/"*+,:;<=>?[] | \x7F”等特殊符号。 - value - string - 否 - 新值。最大长度 128。value 是长度为 0 的空字符串,则删除索引为 key 的数据项。 - success - Function - 否 - 接口调用成功的回调函数。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
- 示例 
storage.set({
  key: "storage_key",
  value: "storage value",
  success: function () {
    console.log("call storage.set success.");
  },
  fail: function (data, code) {
    console.log("call storage.set fail, code: " + code + ", data: " + data);
  },
});
storage.clear(OBJECT)
清空存储的内容。
- 参数 - 参数名 - 类型 - 必填 - 说明 - success - Function - 否 - 接口调用成功的回调函数。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
- 示例 
storage.clear({
  success: function () {
    console.log("call storage.clear success.");
  },
  fail: function (data, code) {
    console.log("call storage.clear fail, code: " + code + ", data: " + data);
  },
});
storage.delete(OBJECT)
删除存储的内容。
- 参数 - 参数名 - 类型 - 必填 - 说明 - key - string - 是 - 内容索引。字符串最大长度为 32,且不能包含“/"*+,:;<=>?[] | \x7F”等特殊符号。 - success - Function - 否 - 接口调用成功的回调函数。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
- 示例 
storage.delete({
  key: "Storage1",
  success: function () {
    console.log("call storage.delete success.");
  },
  fail: function (data, code) {
    console.log("call storage.delete fail, code: " + code + ", data: " + data);
  },
});
文件存储
导入模块
import file from "@system.file";
file.move(OBJECT)
将指定文件移动到其他指定位置。
- 参数 - 参数名 - 类型 - 必填 - 说明 - srcUri - string - 是 - 要移动的文件的 uri。字符串最大长度为 128,且不能包含“"*+,:;<=>?[] | \x7F”等特殊符号。 - dstUri - string - 是 - 文件要移动到的位置的 uri。字符串最大长度为 128,且不能包含“"*+,:;<=>?[] | \x7F”等特殊符号。 - success - Function - 否 - 接口调用成功的回调函数,返回文件要移动到的位置的 uri。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
- fail 返回错误代码: - 错误码 - 说明 - 202 - 出现参数错误。 - 300 - 出现 I/O 错误。 - 301 - 文件或目录不存在。 
- 示例 
file.move({
  srcUri: "internal://app/myfiles1",
  dstUri: "internal://app/myfiles2",
  success: function (uri) {
    console.log("call success callback success");
  },
  fail: function (data, code) {
    console.error("call fail callback fail, code: " + code + ", data: " + data);
  },
});
file.copy(OBJECT)
将指定文件拷贝并存储到指定位置,接口所使用的 URI 描述详见文件组织。
- 参数 - 参数名 - 类型 - 必填 - 说明 - srcUri - string - 是 - 要拷贝的文件的 uri。字符串最大长度为 128,且不能包含“"*+,:;<=>?[] | \x7F”等特殊符号。 - dstUri - string - 是 - 文件要拷贝到的位置的 uri。字符串最大长度为 128,且不能包含“"*+,:;<=>?[] | \x7F”等特殊符号。 - success - Function - 否 - 接口调用成功的回调函数,返回文件要拷贝到的位置的 uri。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
- fail 返回错误代码: - 错误码 - 说明 - 202 - 出现参数错误。 - 300 - 出现 I/O 错误。 - 301 - 文件或目录不存在。 
- 示例 
file.copy({
  srcUri: "internal://app/file.txt",
  dstUri: "internal://app/file_copy.txt",
  success: function (uri) {
    console.log("call success callback success");
  },
  fail: function (data, code) {
    console.error("call fail callback fail, code: " + code + ", data: " + data);
  },
});
file.list(OBJECT)
获取指定路径下全部文件的列表,接口所使用的 URI 描述详见文件组织。
- 参数 - 参数名 - 类型 - 必填 - 说明 - uri - string - 是 - 目录 uri。字符串最大长度为 128,且不能包含“"*+,:;<=>?[] | \x7F”等特殊符号。 - success - Function - 否 - 接口调用成功的回调函数。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
- success 返回值: - 参数名 - 类型 - 说明 - fileList - Array - <FileInfo>- 获取的文件列表,其中每个文件的信息的格式为: { uri:'file1', lastModifiedTime:1589965924479, length:10240, type: 'file' } 
- 表 1 FileInfo - 参数名 - 类型 - 说明 - uri - string - 文件的 uri。 - lastModifiedTime - number - 文件上一次保存时的时间戳,显示从 1970/01/01 00:00:00 GMT 到当前时间的毫秒数。 受限于底层文件系统约束,固定返回 0。 - length - number - 文件的大小,单位为字节。 当 type 等于 dir 时,length 固定为 0。 - type - string - 文件的类型,可选值为: dir:目录;file:文件。 
- fail 返回错误代码: - 错误码 - 说明 - 202 - 出现参数错误。 - 300 - 出现 I/O 错误。 - 301 - 文件或目录不存在。 
- 示例 
file.list({
  uri: "internal://app/pic",
  success: function (data) {
    console.log(data.fileList);
  },
  fail: function (data, code) {
    console.error("call fail callback fail, code: " + code + ", data: " + data);
  },
});
file.get(OBJECT)
获取指定本地文件的信息,URI 请参考文件组织。
- 参数 - 参数名 - 类型 - 必填 - 说明 - uri - string - 是 - 文件的 uri。字符串最大长度为 128,且不能包含“"*+,:;<=>?[] | \x7F”等特殊符号。 - recursive - boolean - 否 - 是否进行递归获取子目录文件列表,缺省为 false。 - success - Function - 否 - 接口调用成功的回调函数。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
- success 返回值: - 参数名 - 类型 - 说明 - uri - string - 文件的 uri。 - length - number - 文件字节长。 当 type 等于 dir 时,length 固定为 0。 - lastModifiedTime - number - 文件保存时的时间戳,从 1970/01/01 00:00:00 到当前时间的毫秒数。 受限于底层文件系统约束,固定返回 0。 - type - string - 文件类型,可选值为:dir:目录; file:文件。 - subFiles - Array - 文件列表。 
- fail 返回错误代码: - 错误码 - 说明 - 202 - 出现参数错误。 - 300 - 出现 I/O 错误。 - 301 - 文件或目录不存在。 
- 示例 
file.get({
  uri: "internal://app/file",
  success: function (data) {
    console.log(data.uri);
  },
  fail: function (data, code) {
    console.error("call fail callback fail, code: " + code + ", data: " + data);
  },
});
file.delete(OBJECT)
删除本地文件,使用的 URI 参考文件组织。
- 参数 - 参数名 - 类型 - 必填 - 说明 - uri - string - 是 - 删除文件的 uri,不能是应用资源路径。字符串最大长度为 128,且不能包含“"*+,:;<=>?[] | \x7F”等特殊符号。 - success - Function - 否 - 接口调用成功的回调函数。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
- fail 返回错误代码: - 错误码 - 说明 - 202 - 出现参数错误。 - 300 - 出现 I/O 错误。 - 301 - 文件或目录不存在。 
- 示例 
file.delete({
  uri: "internal://app/my_file",
  success: function () {
    console.log("call delete success.");
  },
  fail: function (data, code) {
    console.error("call fail callback fail, code: " + code + ", data: " + data);
  },
});
file.writeText(OBJECT)
写文本内容到指定文件。
- 参数 - 参数名 - 类型 - 必填 - 说明 - uri - string - 是 - 本地文件 uri,如果文件不存在会创建文件。字符串最大长度为 128,且不能包含“"*+,:;<=>?[] | \x7F”等特殊符号。 - text - string - 是 - 写入的字符串。 - encoding - string - 否 - 编码格式,默认为 UTF-8。 目前仅支持 UTF-8。 - append - boolean - 否 - 是否追加模式,默认为 false。 - success - Function - 否 - 接口调用成功的回调函数。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
- fail 返回错误代码: - 错误码 - 说明 - 202 - 出现参数错误。 - 300 - 出现 I/O 错误。 - 301 - 文件或目录不存在。 
- 示例 
file.writeText({
  uri: "internal://app/workspace/test.txt",
  text: "Text that just for test.",
  success: function () {
    console.log("call writeText success.");
  },
  fail: function (data, code) {
    console.error("call fail callback fail, code: " + code + ", data: " + data);
  },
});
file.writeArrayBuffer(OBJECT)
写 Buffer 内容到指定文件。
- 参数 - 参数名 - 类型 - 必填 - 说明 - uri - string - 是 - 本地文件 uri,如果文件不存在会创建文件。字符串最大长度为 128,且不能包含“"*+,:;<=>?[] | \x7F”等特殊符号。 - buffer - Uint8Array - 是 - 写入的 Buffer。 - position - number - 否 - 文件开始写入数据的位置的偏移量,默认为 0。 - append - boolean - 否 - 是否追加模式,默认为 false。当设置为 true 时,position 参数无效。 - success - Function - 否 - 接口调用成功的回调函数。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
- fail 返回错误代码: - 错误码 - 说明 - 202 - 出现参数错误。 - 300 - 出现 I/O 错误。 - 301 - 文件或目录不存在。 
- 示例 
file.writeArrayBuffer({
  uri: "internal://cache/workspace/test",
  buffer: buffer, //buffer为Uint8Array类型
  success: function () {
    console.log("call writeArrayBuffer success.");
  },
  fail: function (data, code) {
    console.error("call fail callback fail, code: " + code + ", data: " + data);
  },
});
file.readText(OBJECT)
从指定文件中读取文本内容。
- 参数 - 参数名 - 类型 - 必填 - 说明 - uri - string - 是 - 本地文件 uri。字符串最大长度为 128,且不能包含“"*+,:;<=>?[] | \x7F”等特殊符号。 - encoding - string - 否 - 编码格式,缺省为 UTF-8。 目前仅支持 UTF-8。 - position - number - 否 - 读取的起始位置,默认值为文件的起始位置。 - length - number - 否 - 读取的长度,默认值为 4096。 - success - Function - 否 - 接口调用成功的回调函数。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
- success 返回值: - 参数名 - 类型 - 说明 - text - string - 读取到的文本内容。 
- fail 返回错误代码: - 错误码 - 说明 - 202 - 出现参数错误。 - 300 - 出现 I/O 错误。 - 301 - 文件或目录不存在。 - 302 - 要读取的文件内容超过 4KB。 
- 示例 
file.readText({
  uri: "internal://cache/workspace/text.txt",
  success: function (data) {
    console.log("call readText success: " + data.text);
  },
  fail: function (data, code) {
    console.error("call fail callback fail, code: " + code + ", data: " + data);
  },
});
file.readArrayBuffer(OBJECT)
从指定文件中读取 Buffer 内容。
- 参数 - 参数名 - 类型 - 必填 - 说明 - uri - string - 是 - 本地文件 uri。字符串最大长度为 128,且不能包含“"*+,:;<=>?[] | \x7F”等特殊符号。 - position - number - 否 - 读取的起始位置,缺省为文件的起始位置。 - length - number - 否 - 需要读取的长度,缺省则读取到文件结尾。 - success - Function - 否 - 接口调用成功的回调函数。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
- success 返回值: - 参数名 - 类型 - 说明 - buffer - Uint8Array - 读取到的文件内容。 
- fail 返回错误代码: - 错误码 - 说明 - 202 - 出现参数错误。 - 300 - 出现 I/O 错误。 - 301 - 文件或目录不存在。 
- 示例 
file.readArrayBuffer({
  uri: "internal://app/workspace/test",
  position: 10,
  length: 200,
  success: function (data) {
    console.log("call readArrayBuffer success: " + data.buffer);
  },
  fail: function (data, code) {
    console.error("call fail callback fail, code: " + code + ", data: " + data);
  },
});
file.access(OBJECT)
判断指定文件或目录是否存在。
- 参数 - 参数名 - 类型 - 必填 - 说明 - uri - string - 是 - 目录或文件 uri。字符串最大长度为 128,且不能包含“"*+,:;<=>?[] | \x7F”等特殊符号。 - success - Function - 否 - 接口调用成功的回调函数。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
- fail 返回错误代码: - 错误码 - 说明 - 202 - 出现参数错误。 - 300 - 出现 I/O 错误。 - 301 - 文件或目录不存在。 
- 示例 
file.access({
  uri: "internal://app/test",
  success: function () {
    console.log("call access success.");
  },
  fail: function (data, code) {
    console.error("call fail callback fail, code: " + code + ", data: " + data);
  },
});
file.mkdir(OBJECT)
创建指定目录。
- 参数 - 参数名 - 类型 - 必填 - 说明 - uri - string - 是 - 目录的 uri 路径。字符串最大长度为 128,且不能包含“"*+,:;<=>?[] | \x7F”等特殊符号,同时创建目录时递归层次最多不超过 5 层。 - recursive - boolean - 否 - 是否递归创建该目录的上级目录,缺省为 false。 - success - Function - 否 - 接口调用成功的回调函数。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
- fail 返回错误代码: - 错误码 - 说明 - 202 - 出现参数错误。 - 300 - 出现 I/O 错误。 
- 示例 
file.mkdir({
  uri: "internal://share/test_directory",
  success: function () {
    console.log("call mkdir success.");
  },
  fail: function (data, code) {
    console.error("call fail callback fail, code: " + code + ", data: " + data);
  },
});
file.rmdir(OBJECT)
删除指定目录。
- 参数 - 参数名 - 类型 - 必填 - 说明 - uri - string - 是 - 目录的 uri 路径。字符串最大长度为 128,且不能包含“"*+,:;<=>?[] | \x7F”等特殊符号。 - recursive - boolean - 否 - 是否递归删除子文件和子目录,缺省为 false。 - success - Function - 否 - 接口调用成功的回调函数。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
- fail 返回错误代码: - 错误码 - 说明 - 202 - 出现参数错误。 - 300 - 出现 I/O 错误。 - 301 - 文件或目录不存在。 
- 示例 
file.rmdir({
  uri: "internal://app/test_directory",
  success: function () {
    console.log("call rmdir success.");
  },
  fail: function (data, code) {
    console.error("call fail callback fail, code: " + code + ", data: " + data);
  },
});
音频播放器
播放:boolean play();
暂停:boolean pause();
停止:boolean stop();
获取播放状态
getPlayState({ success: (data) => {}, complete: () => {} });
| data 属性 | 类型 | 值 | 
|---|---|---|
| status | string | "play","pause","stop" | 
| src | string | 音频文件路径 | 
| currentTime | number | 当前播放时长 | 
| autoplay | boolean | 是否自动播放 | 
| loop | boolean | 是否循环播放 | 
| volume | number | 音量 | 
| muted | boolean | 是否静音 | 
设置/获取播放路径
audio.src = "internal://mass/A.mp3";
设置/获取播放位置
currentTime;
获取音乐播放时长
duration;
设置/获取播放器是否 loop 播放
loop;
设置/获取播放器的音量
volume;
设置/获取播放器静音状态
muted;
设置 onplay 回调
onplay;
设置 onpause 回调
onpause;
设置 onstop 回调
onstop;
设置 onloadeddata 回调
onloadeddata;
设置 onended 回调
onended;
设置 onerror 回调
onerror;
设置 ontimeupdate 回调
ontimeupdate (通知间隔 1S)
播放器 Demo
import audio from "@system.audio";
audio.onplay = () => {};
audio.onpause = () => {};
audio.onstop = () => {};
audio.onloadeddata = () => {};
audio.onended = () => {};
audio.onerror = () => {};
audio.ontimeupdate = () => {};
audio.src = "internal://mass/A.mp3";
audio.play();
audio.pause();
audio.stop();
弹窗 prompt
接口声明
{ "name": "system.prompt" }
导入模块
import prompt from '@system.prompt' 
// 或 
const prompt = require('@system.prompt')
接口定义
prompt.showToast(OBJECT)
显示 Toast 提示信息
参数
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| message | String | 是 | 显示的文本信息。 | 
| duration | Number | 否 | 显示持续时间,单位ms,默认值1500,建议区间:1500-10000。 | 
示例:
prompt.showToast({
  message: 'Message Info',
  duration: 2000
})
系统能力
设备通信 interconnect
用于和搭配使用的手机 app 进行通信,收发手机 app 数据。 通信连接会自动建立,应用内不用关心连接的创建和销毁,但是可以注册回调函数来接收连接状态改变的信息,以便于进行相应处理,例如对用户进行提示。
获取手机端 APK 的安装情况的功能:
var conn_status = conn.getApkStatus();
if (conn_status == "CONNECTED") {
} else if (conn_status == "DISCONNECTED") {
} else if (conn_status == "UNINSTALLED") {
} else {
  //error
}
接口声明
{ "name": "system.interconnect" }
导入模块
import interconnect from '@system.interconnect' 或 const interconnect = require('@system.interconnect')
interconnect.instance
获取连接对象,在 app 中以单例形式存在,后续的数据收发都是基于这个连接对象。
参数
无。
示例
let conn = interconnect.instance();
数据收发 api 说明
- 发送数据 conn.send
conn.send({
data: {data:'需要发送的数据'},
success: ()=>{
  console.log(`handling success`)
},
fail: (data: {data, code})=> {
  console.log(`handling fail, errMsg = ${data.data}, errCode = ${data.code}`)
}
})
- 接收数据 conn.onmessage
conn.onmessage = (data: {data}) => {
  console.log(`received message: ${data.data}`)
}
- 连接打开回调 conn.onopen
conn.onopen = () => {
  console.log(`connection opened`);
};
- 连接关闭回调 conn.onclose
conn.onclose = (data: {data, code}) => {
  console.log(`connection closed, reason = ${data.data}, code = ${data.code}`)
}
- 连接出错回调 conn.onerror
conn.onerror = (data: {data, code})=> {
  console.log(`connection error, errMsg = ${data.data}, errCode = ${data.code}`)
}
网络状态
接口声明
{ "name": "system.network" }
导入模块
import network from '@system.network' 或 const network = require('@system.network')
接口定义
network.subscribe(OBJECT)
取消监听网络连接状态
参数:
无
示例:
network.unsubscribe();
订阅
订阅蓝牙状态
network.subscribe({
  type: "BT",
  callback: (conn_status) => {
    if (conn_status) {
      //connection status
    } else {
      //disconnection status
    }
  },
});
订阅 WIFI 状态
network.subscribe({
  type: "WIFI",
  callback: (conn_status) => {
    if (conn_status) {
      //connection status
    } else {
      //disconnection status
    }
  },
});
取消订阅
取消蓝牙状态订阅: network.unsubscribe({type:'BT'});
取消WIFI状态订阅:network.unsubscribe({type:'WIFI'});
震动
接口声明
{ "name": "system.vibrator" }
导入模块
import vibrator from '@system.vibrator' 或 const vibrator = require('@system.vibrator')
vibrator.vibrate(OBJECT)
触发震动
参数:
| 参数 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| mode | String | 否 | 振动模式,"long"表示长振动,"short"表示短振动。默认为 long | 
示例:
vibrator.vibrate({
  mode: "long",
});
屏幕亮度
接口声明
{ "name": "system.brightness" }
导入模块
import brightness from '@system.brightness' 或 const brightness = require('@system.brightness')
brightness.getValue(OBJECT)
获得当前屏幕亮度值
参数:
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| success | Function | 否 | 成功回调 | 
| fail | Function | 否 | 失败回调 | 
| complete | Function | 否 | 执行结束后的回调 | 
success 返回值:
| 参数值 | 类型 | 说明 | 
|---|---|---|
| value | Integer | 屏幕亮度,取值范围 0-255 | 
示例:
brightness.getValue({
  success: function (data) {
    console.log(`handling success, value = ${data.value}`);
  },
  fail: function (data, code) {
    console.log(`handling fail, code = ${code}`);
  },
});
brightness.setValue(OBJECT)
设置当前屏幕亮度值
参数:
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| value | Integer | 是 | 屏幕亮度,取值范围 0-255 | 
| success | Function | 否 | 成功回调 | 
| fail | Function | 否 | 失败回调 | 
| complete | Function | 否 | 执行结束后的回调 | 
示例:
brightness.setValue({
  value: 100,
  success: function () {
    console.log("handling success");
  },
  fail: function (data, code) {
    console.log(`handling fail, code = ${code}`);
  },
});
brightness.getMode(OBJECT)
获得当前屏幕亮度模式
参数:
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| success | Function | 否 | 成功回调 | 
| fail | Function | 否 | 失败回调 | 
| complete | Function | 否 | 执行结束后的回调 | 
success 返回值:
| 参数值 | 类型 | 说明 | 
|---|---|---|
| mode | Integer | 0 为手动调节屏幕亮度,1 为自动调节屏幕亮度 | 
示例:
brightness.getMode({
  success: function (data) {
    console.log(`handling success, mode = ${data.mode}`);
  },
  fail: function (data, code) {
    console.log(`handling fail, code = ${code}`);
  },
});
brightness.setMode(OBJECT)
设置当前屏幕亮度模式
参数:
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| mode | Integer | 是 | 0 为手动调节屏幕亮度,1 为自动调节屏幕亮度 | 
| success | Function | 否 | 成功回调 | 
| fail | Function | 否 | 失败回调 | 
| complete | Function | 否 | 执行结束后的回调 | 
示例:
brightness.setMode({
  mode: 1,
  success: function () {
    console.log("handling success");
  },
  fail: function (data, code) {
    console.log(`handling fail, code = ${code}`);
  },
});
brightness.setKeepScreenOn(OBJECT) 1060+
设置是否保持常亮状态
参数:
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| keepScreenOn | Boolean | 是 | 是否保持屏幕常亮 | 
| success | Function | 否 | 成功回调 | 
| fail | Function | 否 | 失败回调 | 
| complete | Function | 否 | 执行结束后的回调 | 
示例:
brightness.setKeepScreenOn({
  keepScreenOn: true,
  success: function () {
    console.log("handling success");
  },
  fail: function (data, code) {
    console.log(`handling fail, code = ${code}`);
  },
});
设备信息
导入模块
import device from "@system.device";
device.getInfo(OBJECT)
获取当前设备的信息。
- 参数 - 参数名 - 类型 - 必填 - 说明 - success - Function - 否 - 接口调用成功的回调函数。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
- success 返回值: - 参数名 - 类型 - 说明 - brand - string - 品牌。 - manufacturer - string - 生产商。 - model - string - 型号。 - product - string - 代号。 - language - string - 系统语言。 - region - string - 系统地区。 - windowWidth - number - 可使用的窗口宽度。 - windowHeight - number - 可使用的窗口高度。 - screenDensity - number - 屏幕密度。 - screenShape - string - 屏幕形状。可取值: rect:方形屏;circle:圆形屏。 - IMEI - string - 设备识别码 - releaseType5+ - string - 版本发布类型,值为类型+版本号,如 Beta1。 类型可能值有: 
 Canary:同一 apiVersion 下,canary 版本之间保持 API 兼容,beta 版本不对 canary 版本兼容。
 Beta:同一 apiVersion 下,beta 版本之间保持 API 兼容,release 版本不对 beta 版本兼容。
 Release:release 版本会保持 5 个 API 版本兼容。- deviceType5+ - string - 设备类型,可能值有: 
 tv:智慧屏
 wearable:智能穿戴
 liteWearable:轻量级智能穿戴
 smartVision:智能视觉设备
- fail 返回错误代码: - 错误码 - 说明 - 200 - 返回结果中存在无法获得的信息。 
- 示例 
device.getInfo({
  success: function (data) {
    console.log(
      "Device information obtained successfully. Device brand:" + data.brand
    );
  },
  fail: function (data, code) {
    console.log(
      "Failed to obtain device information. Error code:" +
        code +
        "; Error information: " +
        data
    );
  },
});
运动健康
导入模块
import request from "@system.health";
var hr = getHr();
地理位置
导入模块
import geolocation from '@system.geolocation' 
或 
const geolocation = require('@system.geolocation')
geolocation.getLocation(OBJECT)
获取地理位置
- 参数:
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| timeout | Long | 否 | 设置超时时间,单位是 ms,默认值为 30000。在权限被系统拒绝或者定位设置不当的情况下,有可能永远不能返回结果,因而需要设置超时。超时后会使用 fail 回调 | 
| coordType | String | 否 | 坐标系类型,可选值可通过 getSupportedCoordTypes 获取,默认为 wgs84 | 
| success | Function | 是 | 成功回调 | 
| fail | Function | 否 | 失败回调,原因可能是用户拒绝 | 
| complete | Function | 否 | 执行结束后的回调 | 
- success返回值:
| 参数名 | 类型 | 说明 | 
|---|---|---|
| longitude | Number | 经度 | 
| latitude | Number | 纬度 | 
| accuracy | Number | 精确度 | 
| time | Number | 时间 | 
- fail返回错误代码
| 错误码 | 说明 | 
|---|---|
| 201 | 用户拒绝,获取定位权限失败 | 
| 204 | 超时返回 | 
| 1000 1000+ | 系统位置开关关闭 | 
- 示例:
geolocation.getLocation({
  success: function (data) {
    console.log(`handling success: longitude = ${data.longitude}, latitude = ${data.latitude}`)
  },
  fail: function (data, code) {
    console.log(`handling fail, code = ${code}`)
  }
})
geolocation.subscribe(OBJECT)
监听地理位置。如果多次调用,仅最后一次调用生效
- 参数:
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| reserved | Boolean | 否 | 是否持久化订阅,默认为 false。机制:设置为 true,页面跳转,不会自动取消订阅,需手动取消订阅 | 
| coordType | String | 否 | 坐标系类型,可选值可通过 getSupportedCoordTypes 获取,默认为 wgs84 | 
| callback | Function | 是 | 每次位置信息发生变化,都会被回调 | 
| fail | Function | 否 | 失败回调,原因可能是用户拒绝 | 
- callback返回值:
| 参数名 | 类型 | 说明 | 
|---|---|---|
| longitude | Number | 经度 | 
| latitude | Number | 纬度 | 
| accuracy | Number | 精确度 | 
| time | Number | 时间 | 
- fail返回错误代码
| 错误码 | 说明 | 
|---|---|
| 201 | 用户拒绝,获取定位权限失败 | 
| 1000 1000+ | 系统位置开关关闭 | 
- 示例:
geolocation.subscribe({
  callback: function (data) {
    console.log(`handling success: longitude = ${data.longitude}, latitude = ${data.latitude}`)
  },
  fail: function (data, code) {
    console.log(`handling fail, code = ${code}`)
  }
})
geolocation.unsubscribe()
取消监听地理位置
- 参数: 无 
- 示例: 
geolocation.unsubscribe()
网络访问
上传下载
支持设备
表 1 API 的设备支持情况
| API | 手机 | 平板 | 智慧屏 | 智能穿戴 | 
|---|---|---|---|---|
| request.upload | 支持 | 支持 | 支持 | 支持 | 
| request.download | 支持 | 支持 | 支持 | 支持 | 
| request.onDownloadComplete | 支持 | 支持 | 支持 | 支持 | 
导入模块
import request from "@system.request";
获取未下载完成的 session count: request.getUnCompletedDownloadCnt();
示例:
var unCompletedSessionCnt = request.getUnCompletedDownloadCnt();
request.upload(OBJECT)
上传文件。
- 参数 - 参数名 - 类型 - 必填 - 说明 - url - string - 是 - 资源地址。 - header - Object - 否 - 请求头。 - method - string - 否 - 请求方法:POST、PUT。缺省 POST。 - files - Array - <File>- 是 - 待上传文件列表。请使用 multipart/form-data 进行提交。 - data - Array - <RequestData>- 否 - 请求的表单数据。 - success - Function - 否 - 接口调用成功的回调函数。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
表 2 File
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| filename | string | 否 | multipart 提交时,请求头中的文件名。 | 
| name | string | 否 | multipart 提交时,表单项目的名称,缺省为 file。 | 
| uri | string | 是 | 文件的本地存储路径(路径使用方式请参考存储目录定义)。 | 
| type | string | 否 | 文件的内容类型,默认根据文件名或路径的后缀获取。 | 
表 3 RequestData
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| name | string | 是 | 表示 form 元素的名称。 | 
| value | string | 是 | 表示 form 元素的值。 | 
success 返回值:
| 参数名 | 类型 | 说明 | 
|---|---|---|
| code | number | 服务器返回的状态码。 | 
| data | string | 服务器返回的内容。根据返回头内容中的 type 决定该值的类型。 | 
| headers | Object | 服务器返回的返回头内容。 | 
- 示例
request.upload({
  url: "http://www.path.com",
  files: [
    {
      uri: "internal://cache/path/to/file.txt",
      name: "file",
      filename: "file.txt",
    },
  ],
  data: [
    {
      name: "name1",
      value: "value",
    },
  ],
  success: function (data) {
    console.log("upload success, code:" + data.code);
  },
  fail: function () {
    console.log("upload fail");
  },
});
request.download(OBJECT)
下载文件。
- 参数 - 参数名 - 类型 - 必填 - 说明 - url - string - 是 - 资源地址。 - header - Object - 否 - 请求头。 - description - string - 否 - 资源地址的下载描述,默认为文件名称。 - filename - string - 否 - 本次下载文件的名称。默认从本次请求或资源地址中获取。 - success - Function - 否 - 接口调用成功的回调函数。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 - share - bool - 是 - true : 下载请求会共存。false :下载请求会打断 share 类型的下载请求 - onDownLoadNotify - Function - 否 - 下载进度通知 - success 返回值: 
| 参数名 | 类型 | 说明 | 
|---|---|---|
| token | string | 表示下载的 token,获取下载状态的依据。 | 
onDownLoadNotify 返回值:
| 参数名 | 类型 | 说明 | 
|---|---|---|
| result | number | 0 - 成功 (其它 - 失败) | 
| percent | number | 0 ~ 100 (下载进度) | 
fail 返回错误代码:
| 错误码 | 说明 | 
|---|---|
| 400 | 表示下载任务失败。 | 
- 示例
request.download({
  url: "http://www.path.com",
  success: function (data) {
    console.log("call success callback success: " + data.token);
  },
  fail: function (data, code) {
    console.log("handling fail");
  },
});
request.onDownloadComplete(OBJECT)
获取下载任务状态。
- 参数 - 参数名 - 类型 - 必填 - 说明 - token - string - 是 - download 接口返回的结果 token。 - success - Function - 否 - 接口调用成功的回调函数。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
success 返回值:
| 参数名 | 类型 | 说明 | 
|---|---|---|
| uri | string | 表示下载文件的 uri。 | 
| percent | number | 0 ~ 100 (下载进度) | 
fail 返回错误代码:
| 错误码 | 说明 | 
|---|---|
| 400 | 表示下载任务失败。 | 
| 401 | 表示不存在该下载任务。 | 
示例
request.onDownloadComplete({
  token: "token-index",
  success: function (data) {
    console.log("download success, uri:" + data.uri);
  },
  fail: function (data, code) {
    console.log("download fail");
  },
});
数据请求
支持设备
表 1 API 的设备支持情况
| API | 智能穿戴 | 
|---|---|
| fetch.fetch | 支持 | 
导入模块
import fetch from "@system.fetch";
fetch.fetch(OBJECT)
通过网络获取数据。
- 参数 - 参数名 - 类型 - 必填 - 说明 - url - string - 是 - 资源地址。 - data - string | Object - 否 - 请求的参数,可选类型是字符串或者 json 对象。 - header - Object - 否 - 设置请求的 header。 - method - string - 否 - 请求方法默认为 GET,可选值为:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE。 - responseType - string - 否 - 默认会根据服务器返回 header 中的 Content-Type 确定返回类型,支持文本和 json 格式。详见 success 返回值。 - success - Function - 否 - 接口调用成功的回调函数。 - fail - Function - 否 - 接口调用失败的回调函数。 - complete - Function - 否 - 接口调用结束的回调函数。 
表 2 data 与 Content-Type 关系
| data | Content-Type | 说明 | 
|---|---|---|
| string | 不设置 | Content-Type 默认为 text/plain,data 值作为请求的 body。 | 
| string | 任意 Type | data 值作为请求的 body。 | 
| Object | 不设置 | Content-Type 默认为 application/x-www-form-urlencoded,data 按照资源地址规则进行 encode 拼接作为请求的 body。 | 
| Object | application/x-www-form-urlencoded | data 按照资源地址规则进行 encode 拼接作为请求的 body。 | 
success 返回值:
| 参数名 | 类型 | 说明 | 
|---|---|---|
| code | number | 表示服务器的状态 code。 | 
| data | string | Object | 返回数据类型由 responseType 确定,详见 responseType 与 success 中 data 关系。 | 
| headers | Object | 表示服务器 response 的所有 header。 | 
表 3 responseType 与 success 中 data 关系
| responseType | data | 说明 | 
|---|---|---|
| 无 | string | 服务器返回的 header 中的 type 如果是 text/*或 application/json、application/javascript、application/xml,值为文本内容。 | 
| text | string | 返回文本内容。 | 
| json | Object | 返回 json 格式的对象。 | 
- 示例
import fetch from "@system.fetch";
export default {
  data: {
    responseData: "NA",
    url: "test_url",
  },
  fetch: function () {
    var that = this;
    fetch.fetch({
      url: that.url,
      success: function (response) {
        console.info("fetch success");
        that.responseData = JSON.stringify(response);
      },
      fail: function () {
        console.info("fetch fail");
      },
    });
  },
};
默认支持 https,如果要支持 http,需要在 config.json 里增加 network 标签,属性标识 "usesCleartext": true。即:
{
  "deviceConfig": {
    "default": {
      "network": {
        "usesCleartext": true
      }
      ...
    }
  }
  ...
}
录音
导入模块
import record from '@system.record' 
或 
const record = require('@system.record')
接口定义
record.start(OBJECT)
开始录音
· 参数:
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| duration | Number | 否 | 录音时长,单位为ms。如果duration为有效值将在达到指定值时停止录音 | 
| sampleRate | Number | 否 | 采样率。不同的音频格式所支持的采样率范围不同。对于aac格式,默认设置为8000,建议使用 8000/16000/44100 | 
| numberOfChannels | Number | 否 | 录音通道数,有效值 1/2 | 
| encodeBitRate | Number | 否 | 编码码率。编码码率的取值与采样率和音频格式有关。 | 
| format | String | 否 | 音频格式,有效值 ogg/3gpp/amr_nb/aac/mp3。缺省为ogg | 
| file_path | String | 否 | 用户指定的录音文件路径,internal://app/record.mp3 | 
| success | Function | 否 | 成功回调 | 
| fail | Function | 否 | 失败回调 | 
| complete | Function | 否 | 执行结束后的回调 | 
· success返回值:
| 参数名 | 类型 | 说明 | 
|---|---|---|
| uri | String | 录音文件的存储路径,在应用的缓存目录中 | 
· fail返回错误代码
| 错误码 | 说明 | 
|---|---|
| 201 | 用户拒绝授权,获取录音权限失败 | 
· 示例:
record.start({
  duration: 10000,
  sampleRate: 8000,
  numberOfChannels: 1,
  encodeBitRate: 16000,
  format: 'ogg',
  success: function (data) {
    console.log(`handling success: ${data.uri}`)
  },
  fail: function (data, code) {
    console.log(`handling fail, code = ${code}`)
  }
})
record.pause()
暂停录音
record.resume()
恢复录音
record.getDuration()
获取录音时长
record.stop(OBJECT)
停止录音。
· 参数: 无
· 示例:
record.stop()
其他
密码算法
接口声明
{ "name": "system.cipher" }
导入模块
import cipher from '@system.cipher' 或 const cipher = require('@system.cipher')
cipher.rsa(OBJECT)
RSA 加解密。不支持分段加密,内容超长会出错
参数:
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| action | String | 是 | 加解密类型,可选值:encrypt:加密,decrypt:解密,sign:数字签名 | 
| text | String | 是 | 待加密或解密的文本内容。待加密的文本内容应该是一段普通文本,长度不能超过 keySize / 8 - 66,其中 keySize 是秘钥的长度(例如秘钥长度为 1024 时,text 不能超过 62 个字节)。待解密的文本内容应该是经过 base64 编码的一段二进制值。base64 编码使用默认风格,下同 | 
| key | String | 是 | 加密或解密使用到的 RSA 密钥,经过 base64 编码后生成的字符串。加密时 key 为公钥,解密时 key 为私钥 | 
| success | Function | 否 | 成功回调 | 
| fail | Function | 否 | 失败回调 | 
| complete | Function | 否 | 执行结束后的回调 | 
success 返回值:
| 参数名 | 类型 | 说明 | 
|---|---|---|
| text | String | 经过加密或解密后生成的文本内容。加密后内容是经过 base64 编码的一段二进制值,解密后内容是一段普通文本。如果解密后的内容不能转化为 utf-8 字符串会出错 | 
fail 返回错误代码
| 错误码 | 说明 | 
|---|---|
| 202 | 输入参数错误。 | 
示例:
//加密
cipher.rsa({
  action: "encrypt",
  //待加密的文本内容
  text: "hello",
  //base64编码后的加密公钥
  key:
    "-----BEGIN RSA PRIVATE KEY-----\n" +
    "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDc7GR2MrfAoefES+wrs1ns2afT\n" +
    "eJXSfIkEHfPXG9fVFjaws1ho4KcZfsxlA0+SXvc83f2SVGCuzULmM2lxxRCtcUN/\n" +
    "h7SoaYEeluhqFimL2AEjfSwINHCLqObJkcjCfoZpE1JCehPiDOJsyT50Auc08h/4\n" +
    "jHQfanyC1nc62LqUCQIDAQAB\n" +
    "-----END RSA PRIVATE KEY-----",
  success: function(data) {
    console.log(`handling success: ${data.text}`);
  },
  fail: function(data, code) {
    console.log(`### cipher.rsa fail ### ${code}: ${data}`);
  },
});
//解密:
cipher.rsa({
  action: "decrypt",
  //待解密的内容,是base64编码后的一段二进制值,解密后是文本内容“hello”
  text:
    "CUg3tTxTIdpCfreIxIBdws3uhd5qXLwcrVl3XDnQzZFVHyjVVCDHS16rjopaZ4C5xU2Tc8mSDzt7\n" +
    "gp9vBfSwi7bMtSUvXG18DlncsKJFDkJpS5t0PkpS9YrJXrY80Gpe+ME6+6dN9bjgqMljbitDdBRf\n" +
    "S/ZWNI4Q8Q0suNjNkGU=",
  //base64编码后的解密私钥
  key:
    "-----BEGIN RSA PUBLIC KEY-----\n" +
    "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANzsZHYyt8Ch58RL\n" +
    "7CuzWezZp9N4ldJ8iQQd89cb19UWNrCzWGjgpxl+zGUDT5Je9zzd/ZJUYK7NQuYz\n" +
    "aXHFEK1xQ3+HtKhpgR6W6GoWKYvYASN9LAg0cIuo5smRyMJ+hmkTUkJ6E+IM4mzJ\n" +
    "PnQC5zTyH/iMdB9qfILWdzrYupQJAgMBAAECgYEAkibhH0DWR13U0gvYJeD08Lfd\n" +
    "Sw1PMHyquEqIcho9Yv7bF3LOXjOg2EEGPx09mvuwXFgP1Kp1e67XPytr6pQQPzK7\n" +
    "XAPcLPx80R/ZjZs8vNFndDOd1HgD3vSVmYQarNzmKi72tOUWMPevsaFXPHo6Xx3X\n" +
    "8x0wYb7XuBsQguRctTECQQD7GWX3JUiyo562iVrpTDPOXsrUxmzCrgz2OZildxMd\n" +
    "Pp/PkyDrx7mEXTpk4K/XnQJ3GpJNi2iDSxDuPSAeJ/aPAkEA4Tw4+1Z43S/xH3C3\n" +
    "nfulYBNyB4si6KEUuC0krcC1pDJ21Gd12efKo5VF8SaJI1ZUQOzguV+dqNsB/JUY\n" +
    "OFfX5wJAB1dKv9r7MR3Peg6x9bggm5vx2h6i914XSuuMJupASM6X5X2rrLj+F3yS\n" +
    "RHi9K1SPyeOg+1tkBtKfABgRZFBOyQJAbuTivUSe73AqTKuHjB4ZF0ubqgEkJ9sf\n" +
    "Q2rekzm9dOFvxjZGPQo1qALX09qATMi1ZN376ukby8ZAnSafLSZ64wJBAM2V37go\n" +
    "Sj44HF76ksRow8gecuQm48NCTGAGTicXg8riKog2GC9y8pMNHAezoR9wXJF7kk+k\n" +
    "lz5cHyoMZ9mcd30=\n"
    "-----END RSA PUBLIC KEY-----",
  success: function(data) {
    console.log(`handling success: ${data.text}`);
  },
  fail: function(data, code) {
    console.log(`### cipher.rsa fail ### ${code}: ${data}`);
  },
});
cipher.aes(OBJECT) 1060+
AES 加解密。支持分段加密
参数:
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| action | String | 是 | 加解密类型,两个可选值:encrypt:加密,decrypt:解密 | 
| text | String | 是 | 待加密或解密的文本内容。待加密的文本内容应该是一段普通文本。待解密的文本内容应该是经过 base64 编码的一段二进制值。base64 编码使用默认风格,下同 | 
| key | String | 是 | 加密或解密使用到的密钥,经过 base64 编码后生成的字符串。 | 
| transformation | String | 否 | AES 算法的加密模式和填充项,默认为"AES/CBC/PKCS5Padding" | 
| iv | String | 否 | AES 加解密的初始向量,经过 base64 编码后的字符串,默认值为 key 值 | 
| ivOffset | Integer | 否 | AES 加解密的初始向量偏移,默认值为 0 | 
| ivLen | Integer | 否 | AES 加解密的初始向量字节长度,默认值为 16 | 
| success | Function | 否 | 成功回调 | 
| fail | Function | 否 | 失败回调 | 
| complete | Function | 否 | 执行结束后的回调 | 
success 返回值:
| 参数名 | 类型 | 说明 | 
|---|---|---|
| text | String | 经过加密或解密后生成的文本内容。加密后内容是经过 base64 编码的一段二进制值,解密后内容是一段普通文本。如果解密后的内容不能转化为 utf-8 字符串会出错(CODE:200) | 
fail 返回错误代码
| 错误码 | 说明 | 
|---|---|
| 200 | 一般性错误,在加解密出错时会返回此错误 | 
| 202 | 参数错误 | 
示例:
//加密
cipher.aes({
  action: "encrypt",
  //待加密的文本内容
  text: "hello",
  //base64编码后的密钥
  key: "NDM5Qjk2UjAzMEE0NzVCRjlFMkQwQkVGOFc1NkM1QkQ=",
  transformation: "AES/CBC/PKCS5Padding",
  ivOffset: 0,
  ivLen: 16,
  success: (data) => {
    console.log(`handling success: ${data.text}`);
  },
  fail: (data, code) => {
    console.log(`### cipher.aes fail ### ${code}: ${data}`);
  },
});
//解密:
cipher.aes({
  action: "decrypt",
  //待解密的内容,是base64编码后的一段二进制值
  text:
    "CUg3tTxTIdpCfreIxIBdws3uhd5qXLwcrVl3XDnQzZFVHyjVVCDHS16rjopaZ4C5xU2Tc8mSDzt7\n" +
    "gp9vBfSwi7bMtSUvXG18DlncsKJFDkJpS5t0PkpS9YrJXrY80Gpe+ME6+6dN9bjgqMljbitDdBRf\n" +
    "S/ZWNI4Q8Q0suNjNkGU=",
  //base64编码后的密钥
  key: "NDM5Qjk2UjAzMEE0NzVCRjlFMkQwQkVGOFc1NkM1QkQ=",
  transformation: "AES/CBC/PKCS5Padding",
  ivOffset: 0,
  ivLen: 16,
  success: (data) => {
    this.dealTxt = data.text;
  },
  fail: (data, code) => {
    prompt.showToast({
      message: "解密失败, code=" + code + ":" + data,
    });
  },
});
cipher base64接口
cipher.base64Encode(text);
var text = cipher.base64Encode("NDM5Qjk2UjAzMEE0NzVCRjlFMkQwQkVGOFc1NkM1QkQ=");
cipher.base64Decode(text);
var uint8Array = cipher.base64Decode("NDM5Qjk2UjAzMEE0NzVCRjlFMkQwQkVGOFc1NkM1QkQ=");
cipher md5接口
cipher.md5(text);
var hex_str = cipher.md5(text);
cipher.md5Base64(text);
var base64_str = cipher.md5Base64(text);
cipher HexEncode接口
cipher.HexEncode(buffer);
| 参数名 | 类型 | 说明 | 
|---|---|---|
| buffer | Uint8Array | buffer | 
var text = cipher.HexEncode(buffer);
cipher.HexDecode(hex_str);
var uint8Array = cipher.HexDecode(buffer);