Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
4cd6c0d2
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看板
提交
4cd6c0d2
编写于
8月 02, 2023
作者:
Z
zengyawen
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
https://gitee.com/zengyawen/docs
上级
1c0537d3
a8327e9d
变更
10
显示空白变更内容
内联
并排
Showing
10 changed file
with
339 addition
and
71 deletion
+339
-71
zh-cn/application-dev/dfx/cppcrash-guidelines.md
zh-cn/application-dev/dfx/cppcrash-guidelines.md
+3
-1
zh-cn/application-dev/key-features/multi-device-app-dev/ide-using.md
...cation-dev/key-features/multi-device-app-dev/ide-using.md
+1
-3
zh-cn/application-dev/media/Readme-CN.md
zh-cn/application-dev/media/Readme-CN.md
+1
-0
zh-cn/application-dev/media/avscreen-capture.md
zh-cn/application-dev/media/avscreen-capture.md
+237
-0
zh-cn/application-dev/media/camera-preview.md
zh-cn/application-dev/media/camera-preview.md
+1
-1
zh-cn/application-dev/reference/apis/js-apis-net-policy.md
zh-cn/application-dev/reference/apis/js-apis-net-policy.md
+80
-58
zh-cn/application-dev/reference/arkui-ts/ts-container-swiper.md
...application-dev/reference/arkui-ts/ts-container-swiper.md
+3
-3
zh-cn/application-dev/security/permission-list.md
zh-cn/application-dev/security/permission-list.md
+1
-1
zh-cn/application-dev/task-management/efficiency-resource-request.md
...cation-dev/task-management/efficiency-resource-request.md
+4
-4
zh-cn/release-notes/changelogs/v3.2-Release/changelogs-arkui.md
...release-notes/changelogs/v3.2-Release/changelogs-arkui.md
+8
-0
未找到文件。
zh-cn/application-dev/dfx/cppcrash-guidelines.md
浏览文件 @
4cd6c0d2
...
@@ -96,8 +96,10 @@ Thread name:crasher <- 异常线程名
...
@@ -96,8 +96,10 @@ Thread name:crasher <- 异常线程名
使用addr2line工具根据偏移地址解析行号:
使用addr2line工具根据偏移地址解析行号:
[product name]为具体设备名。
```
```
root:~/OpenHarmony/out/
rk3568
/exe.unstripped/hiviewdfx/faultloggerd$ addr2line -e crasher 0000332c
root:~/OpenHarmony/out/
[product name]
/exe.unstripped/hiviewdfx/faultloggerd$ addr2line -e crasher 0000332c
base/hiviewdfx/faultloggerd/tools/crasher/dfx_crasher.c:57
base/hiviewdfx/faultloggerd/tools/crasher/dfx_crasher.c:57
```
```
...
...
zh-cn/application-dev/key-features/multi-device-app-dev/ide-using.md
浏览文件 @
4cd6c0d2
...
@@ -58,8 +58,6 @@ DevEco Studio的基本使用,请参考[DevEco Studio使用指南](../../quick-
...
@@ -58,8 +58,6 @@ DevEco Studio的基本使用,请参考[DevEco Studio使用指南](../../quick-
> **说明:**
> **说明:**
> - 在一个工程中同一个设备类型只支持一个Entry类型的模块。
> - 在一个工程中同一个设备类型只支持一个Entry类型的模块。
>
>
> - 当前的DevEco Studio(3.1.1 Release)在创建工程时,设备类型仅能选择phone和tablet,默认该模块已经选择了entry类型,那么在创建wearable这个模块,只能选择feature类型。
>
> - 在下一个小节,我们将介绍如何修改Module的配置,包括Module的类型以及其支持的设备类型等。
> - 在下一个小节,我们将介绍如何修改Module的配置,包括Module的类型以及其支持的设备类型等。
...
@@ -115,7 +113,7 @@ DevEco Studio的基本使用,请参考[DevEco Studio使用指南](../../quick-
...
@@ -115,7 +113,7 @@ DevEco Studio的基本使用,请参考[DevEco Studio使用指南](../../quick-
同样的,修改feature1和feature2模块中的oh-package.json文件,使其可以使用common模块中的代码。
同样的,修改feature1和feature2模块中的oh-package.json文件,使其可以使用common模块中的代码。
修改oh-package.json文件后,
一定要点击右上角的“Sync Now”,否则改动不会生效!
修改oh-package.json文件后,
请点击右上角的“Sync Now”,否则改动不会生效。
## 引用ohpm包中的代码
## 引用ohpm包中的代码
...
...
zh-cn/application-dev/media/Readme-CN.md
浏览文件 @
4cd6c0d2
...
@@ -31,6 +31,7 @@
...
@@ -31,6 +31,7 @@
-
[
开发音频通话功能
](
audio-call-development.md
)
-
[
开发音频通话功能
](
audio-call-development.md
)
-
[
视频播放
](
video-playback.md
)
-
[
视频播放
](
video-playback.md
)
-
[
视频录制
](
video-recording.md
)
-
[
视频录制
](
video-recording.md
)
-
[
屏幕录制
](
avscreen-capture.md
)
-
音视频编解码
-
音视频编解码
-
[
获取支持的编解码能力
](
obtain-supported-codecs.md
)
-
[
获取支持的编解码能力
](
obtain-supported-codecs.md
)
-
[
音频编码
](
audio-encoding.md
)
-
[
音频编码
](
audio-encoding.md
)
...
...
zh-cn/application-dev/media/avscreen-capture.md
0 → 100644
浏览文件 @
4cd6c0d2
# 屏幕录制
屏幕录制主要为主屏幕录屏功能。
开发者可以调用录屏(AVScreenCapture)模块的Native API接口,完成屏幕录制,采集设备内、麦克风等的音视频源数据。当开发直播、办公等应用时,可以调用录屏模块获取音视频原始码流,然后通过流的方式流转到其他模块处理,达成直播时共享桌面的场景。
录屏模块和窗口(Window)、图形(Graphic)等模块完成整个视频采集的流程。
当前在进行屏幕录制时默认使用主屏,图形默认根据主屏生产录屏帧数据到显示数据缓冲队列,录屏框架从显示数据缓冲队列获取数据进行相应消费处理。
## 开发指导
使用AVScreenCapture录制屏幕涉及到AVScreenCapture实例的创建、音视频采集参数的配置、采集的开始与停止、资源的释放等。本开发指导将以一次录制屏幕数据的过程为例,向开发者讲解如何使用AVScreenCapturer进行屏幕录制,详细的API声明请参考
[
AVScreenCapture API参考
](
../reference/native-apis/_a_v_screen_capture.md
)
。
使用AVScreenCapture时要明确其状态的变化,在创建实例后,调用对应的方法可以进入指定的状态实现对应的行为。
在确定的状态下执行不合适的方法会导致AVScreenCapture发生错误,开发者需要在调用状态转换的方法前进行状态检查,避免程序运行异常。
### 权限说明
在开发前,请根据应用实际需求,参考
[
访问控制授权申请指导
](
../security/accesstoken-guidelines.md
)
申请以下权限:
| 权限名 | 说明 | 授权方式 | 权限级别 |
| ------ | ----- | --------| ------- |
| ohos.permission.CAPTURE_SCREEN | 允许应用截取屏幕图像。| system_grant | system_core |
| ohos.permission.MICROPHONE | 允许应用使用麦克风(可选)。
如需录制麦克风源的音频,需要申请该权限。| user_grant | normal |
### 开发步骤及注意事项
开发者可以通过以下几个步骤来实现一个简单的屏幕录制功能。
1.
创建AVScreenCapture实例capture。
```c++
OH_AVScreenCapture* capture = AVScreenCapture_Create();
```
2.
配置屏幕录制参数。
创建AVScreenCapture实例capture后,可以设置屏幕录制所需要的参数。
```c++
OH_AudioCaptureInfo miccapinfo = {
.audioSampleRate = 16000,
.audioChannels = 2,
.audioSource = OH_MIC
};
OH_VideoCaptureInfo videocapinfo = {
.videoFrameWidth = display->GetWidth(),
.videoFrameHeight = display->Height(),
.videoSource = OH_VIDEO_SOURCE_SURFACE_RGBA
};
OH_AudioInfo audioinfo = {
.micCapInfo = miccapinfo,
};
OH_VideoInfo videoinfo = {
.videoCapInfo = videocapinfo
};
OH_RecorderInfo recorderinfo = {
.url = name
};
OH_AVScreenCaptureConfig config = {
.captureMode = OH_CAPTURE_HOME_SCREEN,
.dataType = OH_ORIGINAL_STREAM,
.audioInfo = audioinfo,
.videoInfo = videoinfo,
.recorderInfo = recorderinfo
};
OH_AVScreenCapture_Init(capture, config);
```
3.
设置麦克风开关。
```
c++
bool
isMic
=
true
;
OH_AVScreenCapture_SetMicrophoneEnabled
(
capture
,
isMic
);
```
4.
回调函数的设置,主要监听录屏过程中的错误事件的发生,音频流和视频流数据的产生事件。
```
c++
OH_AVScreenCaptureCallback
callback
;
callback
.
onAudioBufferAvailable
=
OnAudioBufferAvailable
;
callback
.
onVideoBufferAvailable
=
OnVideoBufferAvailable
;
OH_AVScreenCapture_SetCallback
(
capture
,
callback
);
```
5.
调用StartScreenCapture方法开始进行屏幕录制。
```
c++
OH_AVScreenCapture_StartScreenCapture
(
capture
);
```
6.
调用StopScreenCapture()方法停止录制。
```
c++
OH_AVScreenCapture_StopScreenCapture
(
capture_
);
```
7.
调用AcquireAudioBuffer()获取音频原始码流数据
```
c++
OH_AVScreenCapture_AcquireAudioBuffer
(
capture
,
&
audiobuffer
,
type
);
```
8.
调用AcquireVideoBuffer()获取音频原始码流数据。
```
c++
OH_NativeBuffer
*
buffer
=
OH_ScreenCapture_AcquireVideoBuffer
(
capture
,
&
fence
,
&
timestamp
,
&
damage
);
```
9.
调用ReleaseAudioBuffer方法释放音频buffer。
```
c++
OH_ScreenCapture_ReleaseAudioBuffer
(
capture
,
type
);
```
10.
调用ReleaseVideoBuffer()释放视频数据。
```
c++
OH_ScreenCapture_ReleaseVideoBuffer
(
capture
);
```
11.
调用release()方法销毁实例,释放资源。
```
c++
OH_AVScreenCapture_Release
(
capture
);
```
### 完整示例
下面展示了使用AVScreenCapture屏幕录制的完整示例代码。
目前阶段流程结束后返回的buffer为原始码流,针对原始码流可以进行编码并以mp4等文件格式保存以供播放。编码格式与文件格式当前阶段仅作预留,待后续版本实现。
```
c++
#include "multimedia/player_framework/native_avscreen_capture.h"
#include "multimedia/player_framework/native_avscreen_capture_base.h"
#include "multimedia/player_framework/native_avscreen_capture_errors.h"
void
OnError
(
struct
OH_AVScreenCapture
*
capture
,
int32_t
errorCode
)
{
(
void
)
capture
;
(
void
)
errorCode
;
}
void
OnAudioBufferAvailable
(
struct
OH_AVScreenCapture
*
capture
,
bool
isReady
,
OH_AudioCapSourceType
type
)
{
if
(
isReady
)
{
OH_AudioBuffer
*
audiobuffer
=
(
struct
OH_AudioBuffer
*
)
malloc
(
sizeof
(
OH_AudioBuffer
));
//获取音频流
int32_t
ret
=
OH_AVScreenCapture_AcquireAudioBuffer
(
capture
,
&
audiobuffer
,
type
);
/* get buffer */
(
void
)
audiobuffer
->
buf
;
/* getbuffer size */
(
void
)
audiobuffer
->
size
;
/* get audiobuffer timestampe */
(
void
)
audiobuffer
->
timestamp
;
free
(
audiobuffer
);
audiobuffer
=
nullptr
;
//释放音频流
int32_t
ret
=
OH_ScreenCapture_ReleaseAudioBuffer
(
capture
,
type
);
}
}
void
OnVideoBufferAvailable
(
struct
OH_ScreenCapture
*
capture
,
bool
isReady
)
{
if
(
isReady
)
{
int32_t
fence
=
0
;
int64_t
timestamp
=
0
;
struct
OH_Rect
damage
;
//获取视频流
OH_NativeBuffer
*
buffer
=
OH_ScreenCapture_AcquireVideoBuffer
(
capture
,
&
fence
,
&
timestamp
,
&
damage
);
void
*
virAddr
=
nullptr
;
OH_NativeBuffer_Map
(
buffer
,
&
virAddr
);
//获取buffer
OH_NativeBuffer_Config
config
;
OH_NativeBuffer_GetNativeBufferConfig
(
buffer
,
config
);
//获取config信息 宽,高,format
// fence, timestampe, damage 获取fence,时间戳,坐标信息
OH_NativeBuffer_UnMap
(
buffer
);
//释放buffer
//释放视频流
int32_t
ret
=
OH_ScreenCapture_ReleaseVideoBuffer
(
capture
);
}
}
int
main
()
{
//实例化ScreenCapture
struct
OH_AVScreenCapture
*
capture
=
OH_AVScreenCapture_Create
(
void
);
//设置回调
struct
OH_AVScreenCaptureCallback
callback
;
callback
.
onError
=
OnError
;
callack
.
onAudioBufferAvailable
=
OnAudioBufferAvailable
;
callack
.
onVideoBufferAvailable
=
OnVideoBufferAvailable
;
int32_t
ret
=
OH_AVScreenCapture_SetCallback
(
capture
,
callback
);
//初始化录屏,传入配置信息OH_AVScreenRecorderConfig
OH_AudioCaptureInfo
miccapinfo
=
{
.
audioSampleRate
=
16000
,
.
audioChannels
=
2
,
.
audioSource
=
OH_MIC
};
OH_VideoCaptureInfo
videocapinfo
=
{
.
videoFrameWidth
=
720
,
.
videoFrameHeight
=
1280
,
.
videoSource
=
OH_VIDEO_SOURCE_SURFACE_RGBA
};
OH_AudioInfo
audioinfo
=
{
.
micCapInfo
=
miccapinfo
,
};
OH_VideoInfo
videoinfo
=
{
.
videoCapInfo
=
videocapinfo
};
OH_AVScreenCaptureConfig
config
=
{
.
captureMode
=
OH_CAPTURE_HOME_SCREEN
,
.
dataType
=
OH_ORIGINAL_STREAM
,
.
audioInfo
=
audioinfo
,
.
videoInfo
=
videoinfo
,
.
recorderInfo
=
recorderinfo
};
OH_AVScreenCapture_Init
(
capture
,
config
);
int32_t
ret
=
OH_AVScreenCapture_Init
(
capture
,
&
config
);
//开始录屏
int32_t
ret
=
OH_AVScreenCapture_StartScreenCapture
(
capture
);
//mic开关设置
int32_t
ret
=
OH_ScreenCapture_SetMicrophoneEnable
(
capture
,
true
);
sleep
(
10
);
//录制10s
//结束录屏
int32_t
ret
=
OH_ScreenCapture_StopScreenCapture
(
capture
);
//释放ScreenCapture
int32_t
ret
=
OH_ScreenCapture_Realease
(
capture
);
return
0
;
}
```
zh-cn/application-dev/media/camera-preview.md
浏览文件 @
4cd6c0d2
...
@@ -34,7 +34,7 @@
...
@@ -34,7 +34,7 @@
}
}
```
```
2.
通过CameraOutputCapability类中的previewProfiles()方法获取当前设备支持的预览能力,返回previewProfilesArray数组 。通过createPreviewOutput()方法创建预览输出流,其中,createPreviewOutput()方法中的
而
两个参数分别是previewProfilesArray数组中的第一项和步骤一中获取的surfaceId。
2.
通过CameraOutputCapability类中的previewProfiles()方法获取当前设备支持的预览能力,返回previewProfilesArray数组 。通过createPreviewOutput()方法创建预览输出流,其中,createPreviewOutput()方法中的两个参数分别是previewProfilesArray数组中的第一项和步骤一中获取的surfaceId。
```
ts
```
ts
let
previewProfilesArray
=
cameraOutputCapability
.
previewProfiles
;
let
previewProfilesArray
=
cameraOutputCapability
.
previewProfiles
;
...
...
zh-cn/application-dev/reference/apis/js-apis-net-policy.md
浏览文件 @
4cd6c0d2
...
@@ -89,9 +89,11 @@ setBackgroundAllowed(isAllowed: boolean): Promise\<void>
...
@@ -89,9 +89,11 @@ setBackgroundAllowed(isAllowed: boolean): Promise\<void>
**示例:**
**示例:**
```
js
```
js
policy
.
setBackgroundAllowed
(
true
).
then
(
function
(
error
)
{
policy
.
setBackgroundAllowed
(
true
).
then
(()
=>
{
console
.
log
(
JSON
.
stringify
(
error
))
console
.
log
(
"
setBackgroundAllowed success
"
);
})
}).
catch
(
error
=>
{
console
.
log
(
JSON
.
stringify
(
error
));
});
```
```
## policy.isBackgroundAllowed<sup>10+</sup>
## policy.isBackgroundAllowed<sup>10+</sup>
...
@@ -164,10 +166,11 @@ isBackgroundAllowed(): Promise\<boolean>;
...
@@ -164,10 +166,11 @@ isBackgroundAllowed(): Promise\<boolean>;
**示例:**
**示例:**
```
js
```
js
policy
.
isBackgroundAllowed
().
then
(
function
(
error
,
data
)
{
policy
.
isBackgroundAllowed
().
then
((
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
error
))
console
.
log
(
JSON
.
stringify
(
data
));
console
.
log
(
JSON
.
stringify
(
data
))
}).
catch
(
error
=>
{
})
console
.
log
(
JSON
.
stringify
(
error
));
});
```
```
## policy.setPolicyByUid<sup>10+</sup>
## policy.setPolicyByUid<sup>10+</sup>
...
@@ -248,9 +251,11 @@ setPolicyByUid(uid: number, policy: NetUidPolicy): Promise\<void>;
...
@@ -248,9 +251,11 @@ setPolicyByUid(uid: number, policy: NetUidPolicy): Promise\<void>;
**示例:**
**示例:**
```
js
```
js
policy
.
setPolicyByUid
(
11111
,
policy
.
NetUidPolicy
.
NET_POLICY_NONE
).
then
(
function
(
error
)
{
policy
.
setPolicyByUid
(
11111
,
policy
.
NetUidPolicy
.
NET_POLICY_NONE
).
then
(()
=>
{
console
.
log
(
JSON
.
stringify
(
error
))
console
.
log
(
"
setPolicyByUid success
"
);
})
}).
catch
(
error
=>
{
console
.
log
(
JSON
.
stringify
(
error
));
});
```
```
## policy.getPolicyByUid<sup>10+</sup>
## policy.getPolicyByUid<sup>10+</sup>
...
@@ -329,10 +334,11 @@ getPolicyByUid(uid: number): Promise\<NetUidPolicy>;
...
@@ -329,10 +334,11 @@ getPolicyByUid(uid: number): Promise\<NetUidPolicy>;
**示例:**
**示例:**
```
js
```
js
policy
.
getPolicyByUid
(
11111
).
then
(
function
(
error
,
data
)
{
policy
.
getPolicyByUid
(
11111
).
then
((
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
error
))
console
.
log
(
JSON
.
stringify
(
data
));
console
.
log
(
JSON
.
stringify
(
data
))
}).
catch
(
error
=>
{
})
console
.
log
(
JSON
.
stringify
(
error
));
});
```
```
## policy.getUidsByPolicy<sup>10+</sup>
## policy.getUidsByPolicy<sup>10+</sup>
...
@@ -412,10 +418,11 @@ getUidsByPolicy(policy: NetUidPolicy): Promise\<Array\<number>>;
...
@@ -412,10 +418,11 @@ getUidsByPolicy(policy: NetUidPolicy): Promise\<Array\<number>>;
**示例:**
**示例:**
```
js
```
js
policy
.
getUidsByPolicy
(
11111
).
then
(
function
(
error
,
data
)
{
policy
.
getUidsByPolicy
(
11111
).
then
((
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
error
))
console
.
log
(
JSON
.
stringify
(
data
));
console
.
log
(
JSON
.
stringify
(
data
))
}).
catch
(
error
=>
{
})
console
.
log
(
JSON
.
stringify
(
error
));
});
```
```
## policy.getNetQuotaPolicies<sup>10+</sup>
## policy.getNetQuotaPolicies<sup>10+</sup>
...
@@ -487,11 +494,11 @@ getNetQuotaPolicies(): Promise\<Array\<NetQuotaPolicy>>;
...
@@ -487,11 +494,11 @@ getNetQuotaPolicies(): Promise\<Array\<NetQuotaPolicy>>;
**示例:**
**示例:**
```
js
```
js
policy
.
getNetQuotaPolicies
().
then
(
function
(
error
,
data
)
{
policy
.
getNetQuotaPolicies
().
then
(
(
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
error
))
console
.
log
(
JSON
.
stringify
(
data
));
console
.
log
(
JSON
.
stringify
(
data
))
}).
catch
(
error
=>
{
})
console
.
log
(
JSON
.
stringify
(
error
));
});
```
```
## policy.setNetQuotaPolicies<sup>10+</sup>
## policy.setNetQuotaPolicies<sup>10+</sup>
...
@@ -608,9 +615,11 @@ let netquotapolicy = {
...
@@ -608,9 +615,11 @@ let netquotapolicy = {
netQuotaPolicyList
.
push
(
netquotapolicy
);
netQuotaPolicyList
.
push
(
netquotapolicy
);
policy
.
setNetQuotaPolicies
(
netQuotaPolicyList
).
then
(
function
(
error
)
{
policy
.
setNetQuotaPolicies
(
netQuotaPolicyList
).
then
(()
=>
{
console
.
log
(
JSON
.
stringify
(
error
))
console
.
log
(
"
setNetQuotaPolicies success
"
);
})
}).
catch
(
error
=>
{
console
.
log
(
JSON
.
stringify
(
error
));
});
```
```
## policy.isUidNetAllowed<sup>10+</sup>
## policy.isUidNetAllowed<sup>10+</sup>
...
@@ -692,10 +701,11 @@ isUidNetAllowed(uid: number, isMetered: boolean): Promise\<boolean>;
...
@@ -692,10 +701,11 @@ isUidNetAllowed(uid: number, isMetered: boolean): Promise\<boolean>;
**示例:**
**示例:**
```
js
```
js
policy
.
isUidNetAllowed
(
11111
,
true
).
then
(
function
(
error
,
data
)
{
policy
.
isUidNetAllowed
(
11111
,
true
).
then
((
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
error
))
console
.
log
(
JSON
.
stringify
(
data
));
console
.
log
(
JSON
.
stringify
(
data
))
}).
catch
(
error
=>
{
})
console
.
log
(
JSON
.
stringify
(
error
));
});
```
```
## policy.isUidNetAllowed<sup>10+</sup>
## policy.isUidNetAllowed<sup>10+</sup>
...
@@ -777,10 +787,11 @@ isUidNetAllowed(uid: number, iface: string): Promise\<boolean>;
...
@@ -777,10 +787,11 @@ isUidNetAllowed(uid: number, iface: string): Promise\<boolean>;
**示例:**
**示例:**
```
js
```
js
policy
.
isUidNetAllowed
(
11111
,
'
wlan0
'
).
then
(
function
(
error
,
data
)
{
policy
.
isUidNetAllowed
(
11111
,
'
wlan0
'
).
then
((
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
error
))
console
.
log
(
JSON
.
stringify
(
data
));
console
.
log
(
JSON
.
stringify
(
data
))
}).
catch
(
error
=>
{
})
console
.
log
(
JSON
.
stringify
(
error
));
});
```
```
## policy.setDeviceIdleTrustlist<sup>10+</sup>
## policy.setDeviceIdleTrustlist<sup>10+</sup>
...
@@ -861,9 +872,11 @@ setDeviceIdleTrustlist(uids: Array\<number>, isAllowed: boolean): Promise\<void>
...
@@ -861,9 +872,11 @@ setDeviceIdleTrustlist(uids: Array\<number>, isAllowed: boolean): Promise\<void>
**示例:**
**示例:**
```
js
```
js
policy
.
setDeviceIdleTrustlist
([
11111
,
22222
],
true
).
then
(
function
(
error
)
{
policy
.
setDeviceIdleTrustlist
([
11111
,
22222
],
true
).
then
(()
=>
{
console
.
log
(
JSON
.
stringify
(
error
))
console
.
log
(
"
setDeviceIdleTrustlist success
"
);
})
}).
catch
(
error
=>
{
console
.
log
(
JSON
.
stringify
(
error
));
});
```
```
## policy.getDeviceIdleTrustlist<sup>10+</sup>
## policy.getDeviceIdleTrustlist<sup>10+</sup>
...
@@ -934,10 +947,11 @@ getDeviceIdleTrustlist(): Promise\<Array\<number>>;
...
@@ -934,10 +947,11 @@ getDeviceIdleTrustlist(): Promise\<Array\<number>>;
**示例:**
**示例:**
```
js
```
js
policy
.
getDeviceIdleTrustlist
().
then
(
function
(
error
,
data
)
{
policy
.
getDeviceIdleTrustlist
().
then
((
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
error
))
console
.
log
(
JSON
.
stringify
(
data
));
console
.
log
(
JSON
.
stringify
(
data
))
}).
catch
(
error
=>
{
})
console
.
log
(
JSON
.
stringify
(
error
));
});
```
```
## policy.getBackgroundPolicyByUid<sup>10+</sup>
## policy.getBackgroundPolicyByUid<sup>10+</sup>
...
@@ -1017,10 +1031,11 @@ getBackgroundPolicyByUid(uid: number): Promise\<NetBackgroundPolicy>;
...
@@ -1017,10 +1031,11 @@ getBackgroundPolicyByUid(uid: number): Promise\<NetBackgroundPolicy>;
**示例:**
**示例:**
```
js
```
js
policy
.
getBackgroundPolicyByUid
(
11111
).
then
(
function
(
error
,
data
)
{
policy
.
getBackgroundPolicyByUid
(
11111
).
then
((
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
error
))
console
.
log
(
JSON
.
stringify
(
data
));
console
.
log
(
JSON
.
stringify
(
data
))
}).
catch
(
error
=>
{
})
console
.
log
(
JSON
.
stringify
(
error
));
});
```
```
## policy.resetPolicies<sup>10+</sup>
## policy.resetPolicies<sup>10+</sup>
...
@@ -1099,9 +1114,11 @@ resetPolicies(simId: string): Promise\<void>;
...
@@ -1099,9 +1114,11 @@ resetPolicies(simId: string): Promise\<void>;
**示例:**
**示例:**
```
js
```
js
policy
.
resetPolicies
(
'
1
'
).
then
(
function
(
error
)
{
policy
.
resetPolicies
(
'
1
'
).
then
(()
=>
{
console
.
log
(
JSON
.
stringify
(
error
))
console
.
log
(
"
resetPolicies success
"
);
})
}).
catch
(
error
=>
{
console
.
log
(
JSON
.
stringify
(
error
));
});
```
```
## policy.updateRemindPolicy<sup>10+</sup>
## policy.updateRemindPolicy<sup>10+</sup>
...
@@ -1186,9 +1203,11 @@ updateRemindPolicy(netType: NetBearType, simId: string, remindType: RemindType):
...
@@ -1186,9 +1203,11 @@ updateRemindPolicy(netType: NetBearType, simId: string, remindType: RemindType):
```
js
```
js
import
connection
from
'
@ohos.net.connection
'
;
import
connection
from
'
@ohos.net.connection
'
;
policy
.
updateRemindPolicy
(
connection
.
NetBearType
.
BEARER_CELLULAR
,
'
1
'
,
policy
.
RemindType
.
REMIND_TYPE_WARNING
).
then
(
function
(
error
)
{
policy
.
updateRemindPolicy
(
connection
.
NetBearType
.
BEARER_CELLULAR
,
'
1
'
,
policy
.
RemindType
.
REMIND_TYPE_WARNING
).
then
(()
=>
{
console
.
log
(
JSON
.
stringify
(
error
))
console
.
log
(
"
updateRemindPolicy success
"
);
})
}).
catch
(
error
=>
{
console
.
log
(
JSON
.
stringify
(
error
));
});
```
```
## policy.setPowerSaveTrustlist<sup>10+</sup>
## policy.setPowerSaveTrustlist<sup>10+</sup>
...
@@ -1269,9 +1288,11 @@ setPowerSaveTrustlist(uids: Array\<number>, isAllowed: boolean): Promise\<void>;
...
@@ -1269,9 +1288,11 @@ setPowerSaveTrustlist(uids: Array\<number>, isAllowed: boolean): Promise\<void>;
**示例:**
**示例:**
```
js
```
js
policy
.
setPowerSaveTrustlist
([
11111
,
22222
],
true
).
then
(
function
(
error
)
{
policy
.
setPowerSaveTrustlist
([
11111
,
22222
],
true
).
then
(()
=>
{
console
.
log
(
JSON
.
stringify
(
error
))
console
.
log
(
"
setPowerSaveTrustlist success
"
);
})
}).
catch
(
error
=>
{
console
.
log
(
JSON
.
stringify
(
error
));
});
```
```
## policy.getPowerSaveTrustlist<sup>10+</sup>
## policy.getPowerSaveTrustlist<sup>10+</sup>
...
@@ -1343,10 +1364,11 @@ getPowerSaveTrustlist(): Promise\<Array\<number>>;
...
@@ -1343,10 +1364,11 @@ getPowerSaveTrustlist(): Promise\<Array\<number>>;
**示例:**
**示例:**
```
js
```
js
policy
.
getPowerSaveTrustlist
().
then
(
function
(
error
,
data
)
{
policy
.
getPowerSaveTrustlist
().
then
((
data
)
=>
{
console
.
log
(
JSON
.
stringify
(
error
))
console
.
log
(
JSON
.
stringify
(
data
));
console
.
log
(
JSON
.
stringify
(
data
))
}).
catch
(
error
=>
{
})
console
.
log
(
JSON
.
stringify
(
error
));
});
```
```
## policy.on
## policy.on
...
...
zh-cn/application-dev/reference/arkui-ts/ts-container-swiper.md
浏览文件 @
4cd6c0d2
...
@@ -134,11 +134,11 @@ finishAnimation(callback?: () => void): void
...
@@ -134,11 +134,11 @@ finishAnimation(callback?: () => void): void
| 参数名 | 参数类型 | 必填项 | 参数描述 |
| 参数名 | 参数类型 | 必填项 | 参数描述 |
| ---------------- | ---------------------------------------- | ---- | ---------------------------------------- |
| ---------------- | ---------------------------------------- | ---- | ---------------------------------------- |
|
isShowBackground
| boolean | 否 | 设置箭头底板是否显示。
<br/>
默认值:false |
|
showBackground
| boolean | 否 | 设置箭头底板是否显示。
<br/>
默认值:false |
| isSidebarMiddle | boolean | 否 | 设置箭头显示位置。
<br/>
默认值:false
<br/>
默认显示在导航点指示器两侧。 |
| isSidebarMiddle | boolean | 否 | 设置箭头显示位置。
<br/>
默认值:false
<br/>
默认显示在导航点指示器两侧。 |
| backgroundSize |
[
Length
](
ts-types.md#length
)
| 否 | 设置底板大小。
<br/>
在导航点两侧显示:
<br/>
默认值:24vp
<br/>
在组件两侧显示:
<br/>
默认值:32vp
<br/>
不支持设置百分比。 |
| backgroundSize |
[
Length
](
ts-types.md#length
)
| 否 | 设置底板大小。
<br/>
在导航点两侧显示:
<br/>
默认值:24vp
<br/>
在组件两侧显示:
<br/>
默认值:32vp
<br/>
不支持设置百分比。 |
| backgroundColor |
[
ResourceColor
](
ts-types.md#resourcecolor
)
| 否 | 设置底板颜色。
<br/>
在导航点两侧显示:
<br/>
默认值:
\#
19182431
<br/>
在组件两侧显示:
<br/>
默认值:
\#
00000000 |
| backgroundColor |
[
ResourceColor
](
ts-types.md#resourcecolor
)
| 否 | 设置底板颜色。
<br/>
在导航点两侧显示:
<br/>
默认值:
\#
19182431
<br/>
在组件两侧显示:
<br/>
默认值:
\#
00000000 |
| arrowSize |
[
Length
](
ts-types.md#length
)
| 否 | 设置箭头大小。
<br/>
在导航点两侧显示时:
<br/>
默认值:18vp
<br/>
在组件两侧显示时:
<br/>
默认值:24vp
<br/>
**说明:**
<br/>
isS
howBackground为true时,arrowSize为backgroundSize的3/4。
<br/>
不支持设置百分比。 |
| arrowSize |
[
Length
](
ts-types.md#length
)
| 否 | 设置箭头大小。
<br/>
在导航点两侧显示时:
<br/>
默认值:18vp
<br/>
在组件两侧显示时:
<br/>
默认值:24vp
<br/>
**说明:**
<br/>
s
howBackground为true时,arrowSize为backgroundSize的3/4。
<br/>
不支持设置百分比。 |
| arrowColor |
[
ResourceColor
](
ts-types.md#resourcecolor
)
| 否 | 设置箭头颜色。
<br/>
默认值:
\#
182431 |
| arrowColor |
[
ResourceColor
](
ts-types.md#resourcecolor
)
| 否 | 设置箭头颜色。
<br/>
默认值:
\#
182431 |
## SwiperAutoFill<sup>10+</sup>
## SwiperAutoFill<sup>10+</sup>
...
@@ -219,7 +219,7 @@ struct SwiperExample {
...
@@ -219,7 +219,7 @@ struct SwiperExample {
.
duration
(
1000
)
.
duration
(
1000
)
.
itemSpace
(
0
)
.
itemSpace
(
0
)
.
displayArrow
({
.
displayArrow
({
isS
howBackground
:
true
,
s
howBackground
:
true
,
isSidebarMiddle
:
true
,
isSidebarMiddle
:
true
,
backgroundSize
:
24
,
backgroundSize
:
24
,
backgroundColor
:
Color
.
White
,
backgroundColor
:
Color
.
White
,
...
...
zh-cn/application-dev/security/permission-list.md
浏览文件 @
4cd6c0d2
...
@@ -2686,7 +2686,7 @@
...
@@ -2686,7 +2686,7 @@
## ohos.permission.MANAGE_DEVICE_AUTH_CRED
## ohos.permission.MANAGE_DEVICE_AUTH_CRED
允许应用调用设备认证
华为
帐号凭据管理应用接口。
允许应用调用设备认证
分布式
帐号凭据管理应用接口。
**权限级别**
:system_basic
**权限级别**
:system_basic
...
...
zh-cn/application-dev/task-management/efficiency-resource-request.md
浏览文件 @
4cd6c0d2
...
@@ -33,10 +33,10 @@
...
@@ -33,10 +33,10 @@
| 名称 | 类型 | 必填 | 说明 |
| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| -------- | -------- | -------- | -------- |
| resourceTypes | number | 是 | 申请的资源类型 |
| resourceTypes | number | 是 | 申请的资源类型 |
| isApply | boolean | 是 | 申请或释放资源
<br/>
- t
ur
e表示申请资源
<br/>
- false表示释放部分资源 |
| isApply | boolean | 是 | 申请或释放资源
<br/>
- t
ru
e表示申请资源
<br/>
- false表示释放部分资源 |
| timeOut | number | 是 | 资源使用时间(ms) |
| timeOut | number | 是 | 资源使用时间(ms) |
| isPersist | boolean | 否 | 是否为永久持有资源,默认为false
<br/>
- t
ur
e表示永久持有
<br/>
- false表示有限时间内持有 |
| isPersist | boolean | 否 | 是否为永久持有资源,默认为false
<br/>
- t
ru
e表示永久持有
<br/>
- false表示有限时间内持有 |
| isProcess | boolean | 否 | 进程或应用申请,默认为false
<br/>
- t
ur
e表示进程申请
<br/>
- false表示应用申请 |
| isProcess | boolean | 否 | 进程或应用申请,默认为false
<br/>
- t
ru
e表示进程申请
<br/>
- false表示应用申请 |
| reason | string | 是 | 申请资源原因 |
| reason | string | 是 | 申请资源原因 |
**表3**
能效资源类型
**表3**
能效资源类型
...
@@ -67,7 +67,7 @@
...
@@ -67,7 +67,7 @@
// 应用需要在后台保持活动状态,不被挂起。
// 应用需要在后台保持活动状态,不被挂起。
let
request
=
{
let
request
=
{
resourceTypes
:
backgroundTaskManager
.
ResourceType
.
CPU
,
// 资源类型是CPU资源,保证应用进程不被挂起
resourceTypes
:
backgroundTaskManager
.
ResourceType
.
CPU
,
// 资源类型是CPU资源,保证应用进程不被挂起
isApply
:
true
,
//
释放
资源
isApply
:
true
,
//
申请
资源
timeOut
:
0
,
// 超时时间,超过超时时间后资源自动释放
timeOut
:
0
,
// 超时时间,超过超时时间后资源自动释放
reason
:
"
apply
"
,
// 申请原因
reason
:
"
apply
"
,
// 申请原因
isPersist
:
true
,
// 永久持有资源
isPersist
:
true
,
// 永久持有资源
...
...
zh-cn/release-notes/changelogs/v3.2-Release/changelogs-arkui.md
浏览文件 @
4cd6c0d2
...
@@ -304,3 +304,11 @@ pluginComponentManager.request({
...
@@ -304,3 +304,11 @@ pluginComponentManager.request({
}
}
)
)
```
```
## cl.arkui.4 FormComponent组件中的JS卡片禁用网络图片
FormComponent组件中的JS卡片禁止使用网络图片。
**变更影响**
影响FormComponent中JS卡片中网络图片的加载显示。变更前JS卡片支持网络图片加载,变更后JS卡片不支持网络图片的加载。变更后建议将所需的网络图片下载至内存后刷新。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录