如何在模拟器上测试接近传感器?
How to test Proximity sensor on emulator ?
这是获取 proximity
sensor.On 传感器更改的代码,我显示一条 Toast
消息。
public class MainActivity extends Activity implements SensorEventListener {
private SensorManager mSensorManager;
private Sensor mSensor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
mSensorManager.registerListener(this, mSensor,
SensorManager.SENSOR_DELAY_NORMAL);
}
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mSensor,
SensorManager.SENSOR_DELAY_NORMAL);
}
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
@Override
public void onSensorChanged(SensorEvent event) {
Toast.makeText(this, "Sensor Changed", Toast.LENGTH_LONG).show();
if (event.values[0] == 0) {
Toast.makeText(this, "Screen off", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "Screen on", Toast.LENGTH_LONG).show();
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
}
为了测试这个应用程序,我像这样通过 telnet 连接到模拟器 telnet localhost 5554
。我像这样更改接近度 sensor set proximity 5
。但它不起作用。我做错了什么?
一个解决方案是使用第三方虚拟化 android 机器,例如 Genymotion。
该应用程序具有简洁的控件来更改位置数据和传感器数据,它甚至内置了 java 库来实现测试用例
不,您不能在模拟器上使用接近传感器,但您可以在真实设备上测试它们,因为它们包含您想要测试的那种传感器,如加速度计、陀螺仪、磁力计。但是是的,您可以使用 DDMS 在模拟器中尝试类似 gps 的应用程序。您可以在免费版本上使用功能有限的 Genymotion,但在真实设备上更有优势。
这可以通过以下步骤实现:
- 打开
AS
、运行模拟器
- 点击
Extended controls
- 选择
Virtual sensors
- 在上方的选项卡中选择
Additional sensors
- 就是这样,随心所欲地玩近距离
这是获取 proximity
sensor.On 传感器更改的代码,我显示一条 Toast
消息。
public class MainActivity extends Activity implements SensorEventListener {
private SensorManager mSensorManager;
private Sensor mSensor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
mSensorManager.registerListener(this, mSensor,
SensorManager.SENSOR_DELAY_NORMAL);
}
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mSensor,
SensorManager.SENSOR_DELAY_NORMAL);
}
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
@Override
public void onSensorChanged(SensorEvent event) {
Toast.makeText(this, "Sensor Changed", Toast.LENGTH_LONG).show();
if (event.values[0] == 0) {
Toast.makeText(this, "Screen off", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "Screen on", Toast.LENGTH_LONG).show();
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
}
为了测试这个应用程序,我像这样通过 telnet 连接到模拟器 telnet localhost 5554
。我像这样更改接近度 sensor set proximity 5
。但它不起作用。我做错了什么?
一个解决方案是使用第三方虚拟化 android 机器,例如 Genymotion。
该应用程序具有简洁的控件来更改位置数据和传感器数据,它甚至内置了 java 库来实现测试用例
不,您不能在模拟器上使用接近传感器,但您可以在真实设备上测试它们,因为它们包含您想要测试的那种传感器,如加速度计、陀螺仪、磁力计。但是是的,您可以使用 DDMS 在模拟器中尝试类似 gps 的应用程序。您可以在免费版本上使用功能有限的 Genymotion,但在真实设备上更有优势。
这可以通过以下步骤实现:
- 打开
AS
、运行模拟器 - 点击
Extended controls
- 选择
Virtual sensors
- 在上方的选项卡中选择
Additional sensors
- 就是这样,随心所欲地玩近距离