问题描述
我有一个离子电容器 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 并尝试更改模拟器选项窗口中的值:
但是我没有看到任何日志。 我希望得到一些帮助:)
解决方法
愚蠢的问题但是...你调用 startRecording
函数吗?
我检查了此功能,它在 @ionic/angular
项目上运行良好。我认为 @ionic/vue
没有什么区别。
此外,我检查了 documentation 中的 @capacitor/motion
。有几点需要牢记:
此插件目前是使用 Web API 实现的。大多数浏览器 使用此 API 前需要获得许可。要请求许可, 提示用户对任何用户启动的操作(例如 按钮点击):
据我所知,这个插件没有使用原生部分。并且似乎不需要 requestPermission
调用(至少对于 Android 而言)。
下一点。 DeviceMotionEvent 是浏览器中的一项实验性功能。因此,它可能会在未来以某种方式发生变化。
无论如何,如果问题仍然存在,您也可以尝试使用cordova插件:Device Motion和Device Orientation