摇一摇功能实现,当用户摇动手机的时候,手机的加速度会有较大变化

当用户摇动手机的时候,手机的加速度会有较大变化,于是通过手机加速度传感器的监测数据来判断是否摇动手机。

HarmonyOS
2024-05-26 11:18:17
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
沉默如海

相关能力

提供了sensor模块,用于管理各种手机预置的传感器。

代码实现

1)module.json5文件中,申请访问加速度传感器权限

"requestPermissions": [ { "name": "ohos.permission.ACCELEROMETER" } ]

2)实现功能

import sensor from '@ohos.sensor'; 
@Entry 
@Component 
struct Index { 
  @State message: string = '摇一摇' 
  @State flag: boolean = false 
  private 
  
  shakeHandler(data){ 
    let x = data.x 
    let y = data.y 
    let z = data.z 
    let shreshold = 10 
    if (Math.sqrt(x*x + y*y + z*z)/3 > shreshold){ 
      this.flag = true 
    }else{ 
      this.flag = false 
    } 
  } 
  
  aboutToAppear(){ //挂载传感器监听函数 
    try{ 
      sensor.on(sensor.SensorId.ACCELEROMETER, this.shakeHandler.bind(this),{ interval: 10000000 }) 
    }catch (error){ 
      console.log("出错了: " + error.data, "---msg: "+error.message) 
    } 
  } 
  aboutToDisappear(){//卸载传感器监听函数 
    try{ 
      sensor.off(sensor.SensorId.ACCELEROMETER) 
    }catch (err){ 
      console.error('Off fail, errCode: ' + err.code + ' ,msg: ' + err.message) 
    } 
  } 
  build() { 
    Row() { 
      Column() { 
        Text(this.message) 
          .fontSize(50) 
          .fontWeight(FontWeight.Bold) 
      } 
      .width('100%') 
    } 
    .height('100%') 
    .backgroundColor(this.flag? Color.Red : Color.White ) 
  } 
}
分享
微博
QQ
微信
回复
2024-05-27 11:03:52
提问
该提问已有0人参与 ,帮助了0人