Я выполнил эту инструкцию для отладки своего приложения на эмуляторе с помощью симулятора датчика: http://code.google.com/p/openintents/wiki/SensorSimulator#How_to_use_the_in_your_application
Я выполнил все шаги выше, но в моем случае все было не так просто, как описано в инструкции. Я получил исключение NetworkOnMainThreadException при попытке подключения, регистрации прослушивателя и т. д. Поэтому я создал асинхронную задачу для решения этой проблемы. Теперь у меня есть следующее:
подключение к симулятору:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
sensorManager = SensorManagerSimulator.getSystemService(this, SENSOR_SERVICE);
this.new ConnectToSimulator().execute();
}
Регистрация листнера onResume():
@Override
public void onResume() {
super.onResume();
this.new RegisterToSimulator().execute();
}
наконец, мои задачи:
class ConnectToSimulator extends AsyncTask<Object, Object, Object> {
@Override
protected Object doInBackground(Object... arg0) {
try{
sensorManager.connectSimulator();
}catch(Exception e)
{
Log.i("error", e.getMessage());
}
return null;
}
}
class RegisterToSimulator extends AsyncTask<Object, Object, Object> {
@Override
protected Object doInBackground(Object... arg0) {
try{
sensorManager.registerListener(Compass.this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_FASTEST);
sensorManager.registerListener(Compass.this, sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_FASTEST);
sensorManager.registerListener(Compass.this, sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_FASTEST);
}catch(Exception e)
{
Log.i("error", e.getMessage());
}
return null;
}
}
но даже после этого я все еще получаю сообщение об ошибке при попытке запустить приложение на эмуляторе:
Может кто-нибудь объяснить, почему у меня такая странная ошибка? кроме того, в инструкции симулятора нет информации о необходимости использования асинхронной задачи, возможно, я что-то не так делаю. Пожалуйста, помогите, заранее спасибо.
К сожалению, эту ошибку нельзя обойти, так как библиотека не реализована с "новыми" ограничениями SDK.