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

Android 如何在仿真器上测试接近传感器?,android,emulation,Android,Emulation,这是获取接近传感器的代码。在传感器更换时,我会显示一条消息 public class MainActivity extends Activity implements SensorEventListener { private SensorManager mSensorManager; private Sensor mSensor; @Override protected void onCreate(Bundle savedInstanceState) {

这是获取接近传感器的代码。在传感器更换时,我会显示一条消息

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
。i更改接近度,如下所示
传感器设置接近度5
。但它不起作用。我做错了什么?

一个解决方案是使用第三方虚拟化android机器,如Genymotion


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

一个解决方案是使用第三方虚拟化android机器,如Genymotion


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

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

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

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

  • 以的形式打开
    ,运行模拟器
  • 单击扩展控件
  • 选择虚拟传感器
  • 在上部选项卡中选择附加传感器
  • 就在这里,你想玩什么就玩什么

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

  • 的形式打开
    ,运行模拟器
  • 单击扩展控件
  • 选择虚拟传感器
  • 在上部选项卡中选择附加传感器
  • 就在这里,你想玩什么就玩什么

  • 实际上,该功能我不能使用,因为它在商业版本上可用。实际上,该功能我不能使用,因为它在商业版本上可用。但是,如果按照我上面提到的更改接近值。邻近值已更改,但应用程序不会触发事件。相信我,有时它们工作正常,有时不正常。我已经经历过这样一个阶段,我必须选择android设备而不是模拟器,所以可靠的媒介只是真正的android设备,如果你觉得这有帮助,请接受这一回答,这是难以置信的荒谬模拟器没有触发事件。它应该是相反的:真正的传感器不太可靠。但是如果像我上面提到的那样改变接近值。邻近值已更改,但应用程序不会触发事件。相信我,有时它们工作正常,有时不正常。我已经经历过这样一个阶段,我必须选择android设备而不是模拟器,所以可靠的媒介只是真正的android设备,如果你觉得这有帮助,请接受这一回答,这是难以置信的荒谬模拟器没有触发事件。本来应该是相反的:真正的传感器不太可靠。应用程序不能正确地响应这些设置。使用真实的设备一切都很好…看起来接近传感器一直在触发传感器更改,即使没有任何更改。此外,getMaximumRange返回的最大值为1.0,而模拟器虚拟传感器屏幕上显示的最大值为10。这实际上不可用于测试。应用程序无法正确响应这些设置。使用真实的设备一切都很好…看起来接近传感器一直在触发传感器更改,即使没有任何更改。此外,getMaximumRange返回的最大值为1.0,而模拟器虚拟传感器屏幕上显示的最大值为10。这对于测试来说是不可用的。