如何在仿真器上测试接近传感器?

时间:2015-07-15 18:13:16

标签: android emulation

这是获取proximity传感器的代码。在传感器更改时,我会显示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。但它不起作用。我做错了什么?

3 个答案:

答案 0 :(得分:1)

不,您不能在仿真器上使用接近传感器,但您可以在真实设备上测试它们,因为它们包含您想要测试的那种传感器,如加速度计,陀螺仪,磁力计。但是,您可以使用DDMS在模拟器中尝试gps之类的应用程序。您可以在免费版本上使用功能有限的Genymotion,但真正的设备是有利的。

答案 1 :(得分:1)

这可以通过以下步骤实现:

  1. 打开AS,运行模拟器
  2. 点击Extended controls
  3. 选择Virtual sensors
  4. 在上方标签栏中选择Additional sensors
  5. 你有它,随心所欲地玩耍
  6. enter image description here

答案 2 :(得分:0)

一种解决方案是使用像Genymotion一样的第三方虚拟化机器。

应用程序有简洁的控件来更改位置数据和传感器数据,它甚至内置了java库来实现测试用例