如何在Pydroid3中获取GPS与手机传感器数据?
在Pydroid3中获取GPS及光线传感器数据的解决方案
问题原因分析
你遇到的ModuleNotFoundError: No module named 'plyer.platforms.linux.gps'是因为Pydroid3的环境被plyer误判为Linux平台,而非Android平台,导致加载了错误的平台适配模块。
解决步骤及代码示例
1. 配置应用权限
打开手机设置→应用→Pydroid3→权限,确保开启位置权限(选择高精度模式)和传感器权限。
2. 安装/更新plyer
在Pydroid3的终端中执行:
pip install --upgrade plyer
3. 修复平台识别问题并编写完整代码
手动指定plyer使用Android平台,同时结合GPS和光线传感器的读取逻辑:
import os # 强制指定为Android平台,避免误判 os.environ['PLYER_PLATFORM'] = 'android' from plyer import gps, sensors import time # GPS位置回调 def gps_callback(**kwargs): lat = kwargs.get('lat', '未知') lon = kwargs.get('lon', '未知') print(f"GPS: 纬度 {lat}, 经度 {lon}") # 光线传感器数据回调 def light_sensor_callback(data): light_intensity = data['values'][0] print(f"光线强度: {light_intensity} lux") try: # 启动GPS,设置1秒更新一次,移动1米触发更新 gps.configure(on_location=gps_callback) gps.start(minTime=1000, minDistance=1) # 启动光线传感器,1秒读取一次 sensors.configure(sensor='light', on_change=light_sensor_callback) sensors.start(sensor='light', period=1000) # 保持脚本运行,否则会立即终止 while True: time.sleep(1) except Exception as err: print(f"运行错误: {str(err)}") finally: # 停止传感器和GPS gps.stop() sensors.stop(sensor='light')
额外注意事项
- 如果仍有报错,尝试更新Pydroid3到最新版本,旧版本可能存在环境变量识别问题。
- 测试时尽量在室外开阔区域,确保GPS能正常定位;光线传感器测试可通过遮挡手机光线感应区域观察数值变化。
内容的提问来源于stack exchange,提问作者user22573647
相关产品推荐
相关产品推荐

