Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
5e0a9c67
D
Docs
项目概览
OpenHarmony
/
Docs
大约 2 年 前同步成功
通知
161
Star
293
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
5e0a9c67
编写于
5月 17, 2023
作者:
T
tzb
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
doc of driverExtension
Signed-off-by:
N
tzb
<
tangzebiao@huawei.com
>
上级
566e901c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
382 addition
and
0 deletion
+382
-0
zh-cn/application-dev/application-models/driverextensionability.md
...lication-dev/application-models/driverextensionability.md
+129
-0
zh-cn/application-dev/reference/apis/js-apis-app-ability-driverExtensionAbility.md
...erence/apis/js-apis-app-ability-driverExtensionAbility.md
+208
-0
zh-cn/application-dev/reference/apis/js-apis-inner-application-driverExtensionContext.md
.../apis/js-apis-inner-application-driverExtensionContext.md
+45
-0
未找到文件。
zh-cn/application-dev/application-models/driverextensionability.md
0 → 100644
浏览文件 @
5e0a9c67
# DriverExtensionAbility
[
DriverExtensionAbility
](
../reference/apis/js-apis-app-ability-driverExtensionAbility.md
)
是DRIVER类型的ExtensionAbility组件,提供驱动相关扩展框架。对于部分设备,支持插入外接的硬件模块来扩展设备能力, 此时可以以应用方式安装该硬件模块的驱动程序。通过DriverExtensionAbility可实现此类应用的开发。
[
DriverExtensionAbility
](
../reference/apis/js-apis-app-ability-driverExtensionAbility.md
)
可以通过DriverExtensionManager被应用绑定,并根据应用的请求信息在后台处理相关事务。
每个类型的ExtensionAbility都有自己的Context,DriverExtensionAbility通过
[
DriverExtensionContext
](
../reference/apis/js-apis-inner-application-driverExtensionContext.md
)
提供相关能力。
本章节将从如下场景来介绍DriverExtensionAbility的基本使用。
-
[
DriverExtensionAbility
](
#driverextensionability
)
-
[
开发步骤
](
#开发步骤
)
## 开发步骤
开发者在实现一个驱动时,需要在DevEco Studio工程中手动新建一个DriverExtensionAbility,具体步骤如下。
1.
在工程Module对应的ets目录下,右键选择“New
>
Directory”,新建一个目录并命名为driverextability。
2.
在driverextability目录,右键选择“New
>
TypeScript File”,新建一个TypeScript文件并命名为DriverExtAbility.ts。
3.
打开DriverExtAbility.ts文件,导入
[
RPC通信模块
](
../reference/apis/js-apis-rpc.md
)
,重载onRemoteMessageRequest()方法,接收应用传递过来的消息,并将处理的结果返回给应用。REQUEST_VALUE用于校验应用发送的服务请求码。
```
ts
import
rpc
from
'
@ohos.rpc
'
;
const
REQUEST_CODE
=
99
;
class
StubTest
extends
rpc
.
RemoteObject
{
constructor
(
des
)
{
super
(
des
);
}
// 接收应用传递过来的消息处理,以及将处理的结果返回给应用
onRemoteMessageRequest
(
code
,
data
,
reply
,
option
)
{
if
(
code
===
REQUEST_CODE
)
{
// 接收应用传递过来的数据
// 应用使用多次调用data.writeInt()写入多个数据时,驱动可以通过多次调用data.readInt()方法接收对应的数据
let
optFir
=
data
.
readInt
();
let
optSec
=
data
.
readInt
();
// 驱动将数据的处理结果返回给应用
// 示例中为接收了两个数据,并将两个数据的求和返回给应用
reply
.
writeInt
(
optFir
+
optSec
);
}
return
true
;
}
}
```
4.
在DriverExtAbility.ts文件中,增加导入
[
DriverExtensionAbility
](
../reference/apis/js-apis-app-ability-driverExtensionAbility.md
)
的依赖包,该包提供了onInit()、onRelease()、onConnect()和onDisconnect()生命周期回调,自定义类继承
[
DriverExtensionAbility
](
../reference/apis/js-apis-app-ability-driverExtensionAbility.md
)
并根据需要重写需要的生命周期回调。
```
ts
import
DriverExtensionAbility
from
'
@ohos.app.ability.DriverExtensionAbility
'
;
import
rpc
from
'
@ohos.rpc
'
;
const
TAG
:
string
=
'
[Example].[Entry].[DriverExtAbility]
'
;
const
REQUEST_CODE
=
99
;
class
StubTest
extends
rpc
.
RemoteObject
{
// ...
}
export
default
class
DriverExtAbility
extends
DriverExtensionAbility
{
onInit
(
want
)
{
console
.
info
(
TAG
,
`onInit, want:
${
want
.
abilityName
}
`
);
}
onRelease
()
{
console
.
info
(
TAG
,
`onRelease, want:
${
want
.
abilityName
}
`
);
}
onConnect
(
want
)
{
console
.
info
(
TAG
,
`onConnect, want:
${
want
.
abilityName
}
`
);
return
new
StubTest
(
"
test
"
);
}
onDisconnect
(
want
)
{
console
.
info
(
TAG
,
`onDisconnect, want:
${
want
.
abilityName
}
`
);
}
onDump
()
{
console
.
info
(
TAG
,
`onDump, params:`
+
JSON
.
stringify
(
params
));
return
[
'
params
'
];
}
}
```
5.
在工程Module对应的
[
module.json5配置文件
](
../quick-start/module-configuration-file.md
)
中注册DriverExtensionAbility,type标签需要设置为“driver”,srcEntry标签表示当前ExtensionAbility组件所对应的代码路径。
```
json
{
"module"
:
{
//
...
"extensionAbilities"
:
[
{
"name"
:
"DriverExtAbility"
,
"icon"
:
"$media:icon"
,
"description"
:
"driver"
,
"type"
:
"driver"
,
"exported"
:
true
,
"srcEntry"
:
"./ets/driverextability/DriverExtAbility.ts"
,
"metadata"
:
[
{
"name"
:
"bus"
,
//
必填项,所属总线
"value"
:
"USB"
,
},
{
"name"
:
"desc"
,
//
必填项,必要的驱动描述
"value"
:
"the sample of driverExtensionAbility"
,
},
{
"name"
:
"vendor"
,
//
必填项,驱动厂商名称
"value"
:
"string"
,
},
{
"name"
:
"vid"
,
//
支持
USB
vendor
id
列表,用逗号分隔,不可为空
"value"
:
"string, string"
,
},
{
"name"
:
"pid"
,
//
支持的
USB
product
id
列表,用逗号分隔,不可为空
"value"
:
"string, string"
,
}
]
}
]
}
}
```
\ No newline at end of file
zh-cn/application-dev/reference/apis/js-apis-app-ability-driverExtensionAbility.md
0 → 100644
浏览文件 @
5e0a9c67
# @ohos.app.ability.DriverExtensionAbility (DriverExtensionAbility)
DriverExtensionAbility模块提供驱动相关扩展能力,提供驱动创建、销毁、连接、断开等生命周期回调。
> **说明:**
>
> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
> 本模块接口仅可在Stage模型下使用。
## 导入模块
```
ts
import
DriverExtension
from
'
@ohos.app.ability.DriverExtensionAbility
'
;
```
## 权限
无
## 属性
**系统能力**
:SystemCapability.Driver.ExternalDevice
**系统API**
: 此接口为系统接口,三方应用不支持调用。
| 名称 | 类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| context |
[
DriverExtensionContext
](
js-apis-inner-application-driverExtensionContext.md
)
| 是 | 否 | DriverExtension的上下文环境,继承自ExtensionContext。 |
## DriverExtensionAbility.onInit
onInit(want: Want): void;
Extension生命周期回调,在创建时回调,执行初始化业务逻辑操作。
**系统能力**
:SystemCapability.Driver.ExternalDevice
**系统API**
: 此接口为系统接口,三方应用不支持调用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want |
[
Want
](
js-apis-app-ability-want.md
)
| 是 | 当前Extension相关的Want类型信息,包括ability名称、bundle名称等。 |
**示例:**
```
ts
class
DriverExt
extends
DriverExtension
{
onInit
(
want
)
{
console
.
log
(
'
onInit, want: ${want.abilityName}
'
);
}
}
```
## DriverExtensionAbility.onRelease
onRelease(): void;
Extension生命周期回调,在销毁时回调,执行资源清理等操作。
**系统能力**
:SystemCapability.Driver.ExternalDevice
**系统API**
: 此接口为系统接口,三方应用不支持调用。
**示例:**
```
ts
class
DriverExt
extends
DriverExtension
{
onRelease
()
{
console
.
log
(
'
onRelease
'
);
}
}
```
## DriverExtensionAbility.onConnect
onConnect(want: Want): rpc.RemoteObject | Promise
<rpc.RemoteObject>
;
Extension生命周期回调,如果是connectAbility拉起的服务,会在onCreate之后回调。返回一个RemoteObject对象,用于客户端和服务端进行通信。
**系统能力**
:SystemCapability.Driver.ExternalDevice
**系统API**
: 此接口为系统接口,三方应用不支持调用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want |
[
Want
](
js-apis-app-ability-want.md
)
| 是 | 当前Extension相关的Want类型信息,包括ability名称、bundle名称等。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| rpc.RemoteObject | 一个RemoteObject对象,用于客户端和服务端进行通信。 |
**示例:**
```
ts
import
rpc
from
'
@ohos.rpc
'
;
class
StubTest
extends
rpc
.
RemoteObject
{
constructor
(
des
)
{
super
(
des
);
}
onRemoteRequest
(
code
,
data
,
reply
,
option
)
{
}
}
class
DriverExt
extends
DriverExtension
{
onConnect
(
want
)
{
console
.
log
(
'
onConnect , want: ${want.abilityName}
'
);
return
new
StubTest
(
'
test
'
);
}
}
```
如果生成返回值RemoteObject依赖一个异步接口,可以使用异步生命周期:
```
ts
import
rpc
from
'
@ohos.rpc
'
;
class
StubTest
extends
rpc
.
RemoteObject
{
constructor
(
des
)
{
super
(
des
);
}
onRemoteRequest
(
code
,
data
,
reply
,
option
)
{
}
}
async
function
getDescriptor
()
{
// 调用异步函数...
return
"
asyncTest
"
}
class
DriverExt
extends
DriverExtension
{
async
onConnect
(
want
)
{
console
.
log
(
`onConnect , want:
${
want
.
abilityName
}
`
);
let
descriptor
=
await
getDescriptor
();
return
new
StubTest
(
descriptor
);
}
}
```
## DriverExtensionAbility.onDisconnect
onDisconnect(want: Want): void | Promise
\<
void>;
Extension的生命周期回调,客户端执行断开连接服务时回调。
**系统能力**
:SystemCapability.Driver.ExternalDevice
**系统API**
: 此接口为系统接口,三方应用不支持调用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want |
[
Want
](
js-apis-app-ability-want.md
)
| 是 | 当前Extension相关的Want类型信息,包括ability名称、bundle名称等。 |
**示例:**
```
ts
class
DriverExt
extends
DriverExtension
{
onDisconnect
(
want
)
{
console
.
log
(
'
onDisconnect, want: ${want.abilityName}
'
);
}
}
```
在执行完onDisconnect生命周期回调后,应用可能会退出,从而可能导致onDisconnect中的异步函数未能正确执行,比如异步写入数据库。可以使用异步生命周期,以确保异步onDisconnect完成后再继续后续的生命周期。
```
ts
class
DriverExt
extends
DriverExtension
{
async
onDisconnect
(
want
)
{
console
.
log
(
'
onDisconnect, want: ${want.abilityName}
'
);
// 调用异步函数...
}
}
```
## DriverExtensionAbility.onDump
onDump(params: Array
\<
string>): Array
\<
string>;
转储客户端信息时调用。
**系统能力**
:SystemCapability.Driver.ExternalDevice
**系统API**
: 此接口为系统接口,三方应用不支持调用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| params | Array
\<
string> | 是 | 表示命令形式的参数。|
**示例:**
```
ts
class
DriverExt
extends
DriverExtension
{
onDump
(
params
)
{
console
.
log
(
'
dump, params: ${JSON.stringify(params)}
'
);
return
[
'
params
'
];
}
}
```
zh-cn/application-dev/reference/apis/js-apis-inner-application-driverExtensionContext.md
0 → 100644
浏览文件 @
5e0a9c67
# DriverExtensionContext
DriverExtensionContext模块是DriverExtensionAbility的上下文环境,继承自ExtensionContext。
DriverExtensionContext模块提供DriverExtensionAbility实现中需要主动发起的操作。
> **说明:**
>
> - 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
> - 本模块接口仅可在Stage模型下使用。
## 导入模块
```
ts
import
common
from
'
@ohos.app.ability.common
'
;
```
## 使用说明
在使用DriverExtensionContext的功能前,需要通过DriverExtensionAbility子类实例获取。
```
ts
import
DriverExtensionAbility
from
'
@ohos.app.ability.DriverExtensionAbility
'
;
let
context
;
class
EntryAbility
extends
DriverExtensionAbility
{
onInit
()
{
context
=
this
.
context
;
// 获取DriverExtensionContext
}
}
```
## DriverExtensionContext.updateDriverState
updateDriverState(): void;
驱动状态上报。预留接口,暂不提供具体功能。
**系统能力**
:SystemCapability.Driver.ExternalDevice
**示例:**
```
ts
this
.
context
.
updateDriverState
()
;
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录