1、权限
TypeScript
{
"name": "ohos.permission.ACCELEROMETER",
"reason": "$string:accelerometer_reason",
"usedScene": {
"abilities": ["EntryAbility"],
"when": "inuse"
}
},
{
"name": "ohos.permission.GYROSCOPE",
"reason": "$string:gyroscope_reason",
"usedScene": {
"abilities": ["EntryAbility"],
"when": "inuse"
}
},
{
"name": "ohos.permission.ACTIVITY_MOTION",
"reason": "$string:activity_motion_reason",
"usedScene": {
"abilities": ["EntryAbility"],
"when": "inuse"
}
2、使用
TypeScript
import { sensor } from '@kit.SensorServiceKit';
import { abilityAccessCtrl, common, Permissions } from '@kit.AbilityKit';
@Entry
@Component
struct Index {
@State isWalking: boolean = false;
@State hasPermission: boolean = false;
private context = getContext(this) as common.UIAbilityContext;
async aboutToAppear(): Promise<void> {
await this.requestPermission();
}
async requestPermission(): Promise<void> {
const atManager = abilityAccessCtrl.createAtManager();
const permission: Permissions = 'ohos.permission.ACTIVITY_MOTION';
const grantStatus = await atManager.checkAccessToken(
this.context.applicationInfo.accessTokenId,
permission
);
if (grantStatus === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED) {
this.hasPermission = true;
return;
}
const result = await atManager.requestPermissionsFromUser(this.context, [permission]);
this.hasPermission = result.authResults[0] === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED;
}
onPageShow(): void {
if (!this.hasPermission) {
return;
}
sensor.on(sensor.SensorId.PEDOMETER_DETECTION, (data: sensor.PedometerDetectionResponse) => {
this.isWalking = data.scalar === 1;
console.log(this.isWalking ? ' 正在行走' : ' 停止行走');
});
}
onPageHide(): void {
sensor.off(sensor.SensorId.PEDOMETER_DETECTION);
}
build() {
Column({ space: 20 }) {
if (!this.hasPermission) {
Text(' 需要运动检测权限')
Button('授权').onClick(async () => {
await this.requestPermission();
if (this.hasPermission) {
this.onPageShow();
}
})
} else {
Text(this.isWalking ? ' 正在行走' : ' 静止中')
.fontSize(30)
.fontColor(this.isWalking ? Color.Green : Color.Gray)
}
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
}
}