Jalen_cokoino
Jalen_cokoino
  • 发布:2020-09-05 17:08
  • 更新:2020-09-21 16:24
  • 阅读:837

【报Bug】加速度计与罗盘完全失效

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Win10

HBuilderX类型: 正式

HBuilderX版本号: 2.8.11

手机系统: Android

手机系统版本号: Android 7.0

手机厂商: 华为

手机机型: 荣耀9

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

//发送普通按键数据
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(); //停止监听数据
}
}
},

预期结果:

可以得到方向数据

实际结果:

完全没数据

bug描述:

罗盘与加速度计获取不到数据,完全无效。

2020-09-05 17:08 负责人:无 分享
已邀请:
DCloud_UNI_GSQ

DCloud_UNI_GSQ

是特定机型下失效吗?
另外旧版本HBuilderX是否正常?

  • 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

Jalen_cokoino

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>

代码复现

该问题目前已经被锁定, 无法添加新回复