离子电容器运动插件 - 听众不触发

问题描述

我有一个离子电容器 android 应用程序,我想记录设备的方向和加速度,但是在添加事件侦听器后,它们没有触发。

代码

import { Motion } from '@capacitor/motion';

export default class MotionService {

async startRecording() {
    try {
        await DeviceMotionEvent.requestPermission();
    } catch (e) {
        console.error(e);
    }
    Motion.addListener('accel',event => {
        console.log('Device motion event:',event);
    });
}}

package.json:

  "dependencies": {
    "@capacitor/android": "^3.1.1","@capacitor/app": "^1.0.2","@capacitor/core": "3.1.1","@capacitor/filesystem": "^1.0.2","@capacitor/haptics": "^1.0.2","@capacitor/keyboard": "^1.0.2","@capacitor/motion": "^1.0.2","@capacitor/status-bar": "^1.0.2","@ionic/vue": "^5.4.0","@ionic/vue-router": "^5.4.0","chart.js": "^3.4.1","core-js": "^3.6.5","vue": "^3.0.0-0","vue-router": "^4.0.0-0"
  },

我正在尝试通过运行来测试它:“离子电容器运行 android -l --host=MY_IP”,模拟器设备是 Pixel 3 API 30,然后打开 chrome://inspect/#devices -> 检查以查看控制台.logs 并尝试更改模拟器选项窗口中的值:

enter image description here

但是我没有看到任何日志。 我希望得到一些帮助:)

解决方法

愚蠢的问题但是...你调用 startRecording 函数吗?

我检查了此功能,它在 @ionic/angular 项目上运行良好。我认为 @ionic/vue 没有什么区别。

此外,我检查了 documentation 中的 @capacitor/motion。有几点需要牢记:

此插件目前是使用 Web API 实现的。大多数浏览器 使用此 API 前需要获得许可。要请求许可, 提示用户对任何用户启动的操作(例如 按钮点击):

据我所知,这个插件没有使用原生部分。并且似乎不需要 requestPermission 调用(至少对于 Android 而言)。

下一点。 DeviceMotionEvent 是浏览器中的一项实验性功能。因此,它可能会在未来以某种方式发生变化。

无论如何,如果问题仍然存在,您也可以尝试使用cordova插件:Device MotionDevice Orientation