Skip to main content

传感器

# 包
from ascript.android.sensor import AccelerometerSensor
from ascript.android.sensor import GyroscopeSensor
from ascript.android.sensor import LightSensor
from ascript.android.sensor import ProximitySensor
from ascript.android.sensor import GpsSensor

读取设备传感器数据,包括加速度计、陀螺仪、光线、接近、GPS等.

AccelerometerSensor 加速度计

检测设备在 X、Y、Z 三个轴方向上的加速度(单位: m/s²).

监听加速度变化

  • 函数
@AccelerometerSensor.on(delay=AccelerometerSensor.DELAY_NORMAL)
def callback(event):
pass
  • 参数
参数类型必须备注
delayint采样速率,默认 DELAY_NORMAL,见下表

采样速率

常量备注
DELAY_NORMAL正常速率,适合一般检测
DELAY_UI适合界面交互
DELAY_GAME适合游戏场景
DELAY_FASTEST最快速率,耗电较高
  • 回调参数 event
属性类型备注
xfloatX轴加速度 (m/s²)
yfloatY轴加速度 (m/s²)
zfloatZ轴加速度 (m/s²)
  • 示例
from ascript.android.sensor import AccelerometerSensor
import time

@AccelerometerSensor.on()
def on_accel(event):
print(f"加速度 X:{event.x:.2f} Y:{event.y:.2f} Z:{event.z:.2f}")

time.sleep(10)
AccelerometerSensor.stop()

检测摇一摇

from ascript.android.sensor import AccelerometerSensor
import math, time

@AccelerometerSensor.on()
def on_shake(event):
total = math.sqrt(event.x**2 + event.y**2 + event.z**2)
if total > 15:
print("检测到摇一摇!")

time.sleep(30)
AccelerometerSensor.stop()

停止监听

AccelerometerSensor.stop()

GyroscopeSensor 陀螺仪

检测设备绕 X、Y、Z 三个轴的旋转角速度(单位: rad/s).

监听陀螺仪变化

  • 函数
@GyroscopeSensor.on(delay=GyroscopeSensor.DELAY_NORMAL)
def callback(event):
pass
  • 回调参数 event
属性类型备注
xfloatX轴角速度 (rad/s)
yfloatY轴角速度 (rad/s)
zfloatZ轴角速度 (rad/s)
  • 示例
from ascript.android.sensor import GyroscopeSensor
import time

@GyroscopeSensor.on(delay=GyroscopeSensor.DELAY_GAME)
def on_gyro(event):
print(f"陀螺仪 X:{event.x:.4f} Y:{event.y:.4f} Z:{event.z:.4f}")

time.sleep(10)
GyroscopeSensor.stop()

停止监听

GyroscopeSensor.stop()

LightSensor 光线传感器

检测环境光线强度(单位: lux).

监听光线变化

  • 函数
@LightSensor.on()
def callback(event):
pass
  • 回调参数 event
属性类型备注
valuefloat光线强度 (lux). 室内一般 100~500, 室外可达 10000+
  • 示例
from ascript.android.sensor import LightSensor
import time

@LightSensor.on()
def on_light(event):
if event.value < 10:
print("环境很暗:", event.value, "lux")
elif event.value > 5000:
print("环境很亮:", event.value, "lux")

time.sleep(30)
LightSensor.stop()

停止监听

LightSensor.stop()

ProximitySensor 接近传感器

检测是否有物体接近设备屏幕(通常用于检测手机是否贴耳).

监听接近变化

  • 函数
@ProximitySensor.on()
def callback(event):
pass
  • 回调参数 event
属性类型备注
valuefloat距离(cm). 通常 0 = 有物体接近, 5 = 远离
  • 示例
from ascript.android.sensor import ProximitySensor
import time

@ProximitySensor.on()
def on_proximity(event):
if event.value == 0:
print("有物体接近屏幕")
else:
print("物体远离屏幕")

time.sleep(30)
ProximitySensor.stop()

停止监听

ProximitySensor.stop()

GpsSensor GPS定位

监听GPS位置变化,获取经纬度、海拔、速度等信息.

需提前开启权限

AS程序: 开发者 -> 定位 -> 权限申请

小程序: 关于 -> 定位 -> 权限申请

提示

如果您之前使用 ascript.android.location 模块,可以继续使用,两者不冲突. GpsSensor 提供了与其他传感器一致的装饰器风格 API.

监听GPS位置变化

  • 函数
@GpsSensor.on(min_time=5000, min_distance=0)
def callback(event):
pass
  • 参数
参数类型必须备注
min_timeint最小更新时间间隔,单位毫秒,默认5000
min_distanceint最小更新距离,单位米,默认0
  • 回调参数 event
属性类型备注
latitudefloat纬度
longitudefloat经度
altitudefloat海拔 (米)
accuracyfloat精度 (米)
speedfloat速度 (m/s)
  • 示例
from ascript.android.sensor import GpsSensor
import time

@GpsSensor.on(min_time=3000)
def on_gps(event):
print(f"纬度:{event.latitude} 经度:{event.longitude}")
print(f"海拔:{event.altitude}m 精度:{event.accuracy}m 速度:{event.speed}m/s")

time.sleep(60)
GpsSensor.stop()

停止监听

GpsSensor.stop()

完整示例

from ascript.android.sensor import AccelerometerSensor, LightSensor, ProximitySensor
import time

# 加速度计 - 检测摇一摇
@AccelerometerSensor.on()
def on_accel(event):
import math
total = math.sqrt(event.x**2 + event.y**2 + event.z**2)
if total > 15:
print("摇一摇!")

# 光线传感器 - 检测环境光
@LightSensor.on()
def on_light(event):
print(f"光线: {event.value} lux")

# 接近传感器 - 检测贴耳
@ProximitySensor.on()
def on_near(event):
if event.value == 0:
print("贴近屏幕")

# 保持脚本运行30秒
time.sleep(30)

# 停止所有传感器
AccelerometerSensor.stop()
LightSensor.stop()
ProximitySensor.stop()