//发送普通按键数据
BLEsend(command) {
if(bluetooth.connectFlag){
bluetooth.writeBLECharacteristicValue(command,0x0f);
}
if(command == 15){
this.displayXYZ = !this.displayXYZ;
if(this.displayXYZ){
//开始监听数据
uni.startCompass();
//监听数据
uni.onCompassChange(function (res) {
console.log(res.direction);
});
}else{
uni.stopCompass(); //停止监听数据
}
}
},
- 发布:2020-09-05 17:08
- 更新:2020-09-21 16:24
- 阅读:837
【报Bug】加速度计与罗盘完全失效
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: Win10
HBuilderX类型: 正式
HBuilderX版本号: 2.8.11
手机系统: Android
手机系统版本号: Android 7.0
手机厂商: 华为
手机机型: 荣耀9
页面类型: vue
打包方式: 云端
项目创建方式: HBuilderX
操作步骤:
预期结果:
可以得到方向数据
可以得到方向数据
实际结果:
完全没数据
完全没数据
bug描述:
罗盘与加速度计获取不到数据,完全无效。
Jalen_cokoino (作者)
<template>
<view class="content">
<button @click="search">搜索蓝牙</button>
<button @click="unsearch">停止搜索蓝牙</button>
<button @click="compass">开启罗盘</button>
<button @click="closecompass">关闭罗盘</button>
<button @click="Accelerometer">开启加速度计</button>
<button @click="closeAccelerometer">关闭加速度计</button>
</view>
</template>
<script>
export default {
data() {
return {
title: 'Hello'
}
},
onLoad() {
},
methods: {
search(){
//开启手机蓝牙模块:
uni.openBluetoothAdapter({
success: res => {
console.log("蓝牙已开启");
uni.startBluetoothDevicesDiscovery({
success: res => {
console.log("开始监听设备...");
uni.onBluetoothDeviceFound(devices => {
//重复搜索会打印重复相同数据,还会累加,多了会卡死机。
console.log("发现设备: " + JSON.stringify(devices));
})
},
})
},
})
},
unsearch(){
uni.stopBluetoothDevicesDiscovery({
success: e => {
console.log("停止蓝牙设备搜索");
},
})
},
compass(){
uni.startCompass();
uni.onCompassChange(function (res) {
//重复搜索会打印重复相同数据,还会累加,多了会卡死机。
console.log(res.direction);
});
},
closecompass(){
uni.stopCompass();
},
Accelerometer(){
uni.startAccelerometer();
uni.onAccelerometerChange(function (res) {
//重复搜索会打印重复相同数据,还会累加,多了会卡死机。
console.log("x:"+res.x);
console.log("y:"+res.y);
console.log("z:"+res.z);
});
},
closeAccelerometer(){
uni.stopAccelerometer();
}
}
}
</script>
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.logo {
height: 200rpx;
width: 200rpx;
margin-top: 200rpx;
margin-left: auto;
margin-right: auto;
margin-bottom: 50rpx;
}
.text-area {
display: flex;
justify-content: center;
}
.title {
font-size: 36rpx;
color: #8f8f94;
}
</style>
代码复现
Jalen_cokoino (作者)
目前只用2.811,荣耀9不行,我把它们放在onload里面调用后就可以按上面操作,如果是直接像上面操作就不行。不够又发现有一个问题,就是多次调用停止和监听函数:
uni.onCompassChange(function (res) {
console.log(res.direction);
});
会得到多个重复数据,也就是说是多个罗盘API在运行。
蓝牙的监听和加速度的监听也是这样。
2020-09-21 11:08
DCloud_UNI_GSQ
回复 Jalen_cokoino: 荣耀9 使用之前的版本正常吗?
2020-09-21 11:32
Jalen_cokoino (作者)
回复 DCloud_UNI_GSQ: 下面有代码复现
2020-09-21 16:25
DCloud_UNI_GSQ
回复 Jalen_cokoino: 关于监听失效的情况在之前存在吗?
2020-09-22 11:03
Jalen_cokoino (作者)
回复 DCloud_UNI_GSQ: 现在可以了
2020-09-22 11:27