SensorSimulator(传感器模拟器)
传感器模拟器实时模拟传感器数据。
SensorSimulator 传感器模拟器
SensorSimulator 实时驱动你的 Android 应用程序。
下载地址:http://code.google.com/p/openintents/downloads/list?q=sensorsimulator
关于 SensorSimulator
OpenIntends 的 SensorSimulator 使你能够利用鼠标实时模拟传感器数据。而且,利用一个远
程登录连接,你也可以模拟你的电池电压和你的 GPS 位置。
新!现在你可以记录一系列来自真实设备的状态。你也可以用特性如编辑、保存、加载、运
行方案。目前支持加速度计、指南针、方位、温度、光照、距离、压力、重力、线加速度、
旋转矢量、陀螺仪等传感器,它们的行为可以通过各种设置来自定义。新特性的描述见网址:
http://openintents.org/en/node/885
SensorSimulator 与 Android 模拟器的连接
从下载列表中下载最新的 sensorsimulator-x.x.x.zip 并解压(如果你还没有)。
开始 bin/sensorsimulator-x.x.x.jar(java 单独的应用程序)。
在你的 Android 模拟器上安装 bin/SensorSimulatorSettings-x.x.x.apk。
在模拟器上启动 SensorSimulator。
在 SensorSimulator 显示的界面中输入 IP 地址和端口号(如下图)。
转到 java 模拟器的 Sensors 选项卡,选择你需要的传感器。
点击模拟器上的 Connect(设置活动中的第二个选项卡)。
现在你应该看见传感器数据(如下所示)。在一小段延时后,你就与 SensorSimulator 数
字同步了。
试着在 SensorSimulator 电话周围移动鼠标:SensorSimulator 和 Android 电话上的数字将
会改变。
注意 1:在 SensorSimulator 和 Android 电话间值传递了这些数字。这些数字和你从你应用程
序中读取出的一致。
注意 2:改变使能的传感器,你必须从 setting activit 中断开连接并重新连接
SensorSimulator 中记录真实 Android 设备
从下载列表中下载最新的 sensorsimulator-x.x.x.zip 并解压(如果你还没有)
转到 java 模拟器的 Scenario Simulator 选项卡
安照步骤,在你的设备上安装并启动 SensorRecordFromDevice.apk
你可以看见一个新设备的状态如何添加到 java 独立应用程序的方案中
注意:确保 Android 设备和 java 应用程序在同一个网络中(一个无线局部网将生效)。你也
可以在 Android Activity 文本框中为 java 应用程序填入一个正确的 IP
快速设置选项卡
在这里可以快速设置 sensor 允许的配置
传感器参数选项卡
在这里你可以找到关于传感器的高级细节/设置。通过点击问号,你可以看见感兴趣的传感
器信息。
远程登录传感器
远程登录传感器允许你控制模拟 GPS 的位置和电池的电压。
点击从菜单中选择 telnet 按钮
在文本框中写入模拟器启动的端口(你可以在模拟器窗口的标题栏中找到)
点击 Connect
附加设置
1.“Update sensors”设置内部更新间的持续时间
2.“Refresh after”确定模拟器出现多少个查询后,下方显示的更新率被计算和平均
3.“Save”设置两个主状态间的时间间隔(来自方案)
4.“Play”设置中间状态间的时间间隔(运行时生成)
从菜单中点击 settings 按钮
如 果 你 想 要 改 变 一 些 设 置 , 放 心 去 做
如何在你的应用程序中使用传感器模拟器
将 external JAR lib/sensorsimulator-lib-x.x.x.jar 添加到你的工程中
导入 sensorsimulator 类
import org.openintents.sensorsimulator.hardware.Sensor;
import org.openintents.sensorsimulator.hardware.SensorEvent;
import org.openintents.sensorsimulator.hardware.SensorEventListener;
import org.openintents.sensorsimulator.hardware.SensorManagerSimulator;
替换 onCreate()中的代码:
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
用如下代码
mSensorManager = SensorManagerSimulator.getSystemService(this,
SENSOR_SERVICE);
用 SensorSimulatorSettings 中预设的配置连接传感器模拟器
mSensorManager.connectSimulator();
其他代码不受影响,你可以在 APIdemos/OS/Sensors.java 中找到传感器如果实现的参考
代码
通常需要用 onResume()注册一个传感器,用 onStop()注销一个传感
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_FASTEST);
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
SensorManager.SENSOR_DELAY_FASTEST);
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_FASTEST);
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE),
SensorManager.SENSOR_DELAY_FASTEST);
}
@Override
protected void onStop() {
mSensorManager.unregisterListener(this);
super.onStop();
}
最后实现 SensorEventListener
class MySensorActivity extends Activity implements SensorEventListener{
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
int sensor = event.type;
float[] values = event.values;
// do something with the sensor data
}
}
注意 1:OpenIntents 类中的 SensorManagerSimulator 派生于 Android 类中的 SensorManager,
并 正 确 实 现 了 相 同 的 功 能 ( 见 Android SensorManager )。 为 了 回 调 , 实 现 了 新 的
SensorEventListener,它类似于标准 Android SensorEventListener。
注意 2:在任何不连接模拟器的情况下,你将会得到真实设备的传感器数据:在这种情况下,
org.openintents.hardware.SensorManagerSimulator 类通过系统返回,透明调用 SensorManager。
注意 3:在你按照之前的描述修改你的源代码后,你可以用 sensors application from API Demos
测试模拟器
传感器数据定义
坐标系由 XYZ 标识,对它的定义的描述在 Android SensorEvent 的参考中
(http://developer.android.com/reference/android/hardware/SensorEvent.html)
加速计 accelerometer
加速计的值的定义在加速计参考中
http://developer.android.com/reference/android/hardware/SensorManager.html#SENSOR_ACCE
LEROMETER
“传感器的值是 X,Y,Z 轴上的加速度,X 轴正向指向设备右边,Y 轴正向指向设备顶端,Z
轴正向指向设备前端。重力的方向由 X,Y,Z 轴心标识。典型的例子是,在 Z 轴上设备相对于
地球表面平行的地方视为-STANDARD_GRAVITY,X 和 Z 的值接近 0。加速计的值以 SI 为
单位(m/s^2)”
Magnetic field(compass)磁力计(指南针)
磁力计传感器的值定义在磁力计参考中
http://developer.android.com/reference/android/hardware/SensorManager.html#MAGNETIC_FIE