Вопрос по android, android-emulator – Компонент Винтаж термометр + SensorSimulator на эмуляторе Android

1

После того как я нашелэтот хороший пользовательский компонент что аналогично (это правильное слово?) отображается температура, считанная с датчика температуры устройства Android, я хотел проверить его с помощью эмулятора, чтобы увидеть, как он работает, поэтому я нашелэтот датчик симулятор и изменил источник компонента для работы с ним.

Мне удалось, чтобы он работал на эмулируемом устройстве, однако я сделал несколько удачных предположений и хотел бы знать, что именно я сделал :-)

Вот изменения в коде термометра, которые я должен был сделать, чтобы заставить его работать вместе с имитатором температурного датчика:

После импорта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;

Я должен был удалить

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;

Изменено

private SensorManager getSensorManager()

в

private SensorManagerSimulator getSensorManager()

Тогда возникла первая проблема. В соответствии сHow to use the SensorSimulator in your application Я изменил строку:

return (SensorManager) getContext().getSystemService(Context.SENSOR_SERVICE);

в

return SensorManagerSimulator.getSystemService(this, SENSOR_SERVICE);

и это было ошибкой. Инстад изthis Я должен был использоватьgetContext()Я не уверен, почему это так - может быть, потому чтоthermometer класс расширяетсяView следовательно, это не деятельность? И вместоSENSOR_SERVICE Я должен был поставитьContext.SENSOR_SERVICE.

После этого следующее изменение было:

private void attachToSensor() {
    SensorManagerSimulator sensorManager = getSensorManager();
    sensorManager.connectSimulator();

Так как кажетсяsensorsimulator не реализуетgetSensorList Я должен был заменить

List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_TEMPERATURE);

с

Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE);

и удалить

if (sensors.size() > 0) {
        Sensor sensor = sensors.get(0);

Затем, конечно, я также удалилelse Таким образом, ситуация, когда датчик температуры отсутствует, теперь, вероятно, выдает исключение при попытке зарегистрировать слушателя.

В конце было еще одно изменение, которое я должен был сделать, чтобы избавиться от ошибок компиляции, по некоторым причинам реализацияregisterListener вSensor Simulator принимает меньше аргументов, чем метод Android, поэтому мне пришлось удалитьhandler параметр из

sensorManager.registerListener(this, sensor, SensorManagerSimulator.SENSOR_DELAY_FASTEST, handler);

Здесь я хотел бы знать, почему на этот раз мне не пришлось использоватьgetContext() вместоthis!?

Это все, что мне нужно было изменить, последнее, что нужно было удалить неиспользуемые переменные (обработчик), неиспользуемый импорт (java.util.List) и удалитьhandler = new Handler();.

Я нахожу этот пример компонента пользовательского интерфейса очень интересным и надеюсь, что кто-то собирается прояснить и, возможно, усовершенствовать код.

также поместите полный код вместо того, что вы сделали, если изменений больше, чем несколько, и насколько getContext () против этого, любой объект, внутри которого вы вызывали registerListener, является дочерним для ContextWrapper. L7ColWinters
я просто должен был сказать, что он на самом деле цифровой, потому что пользовательский интерфейс обновляется с определенной скоростью, аналоговый означает непрерывный или в режиме реального времени. L7ColWinters
@ L7ColWinters: я не уверен, еслиanalogly было правильное слово, я хотел сказать этоlooks like аналоговый датчик. Насчет полного кода - код довольно большой, и я не уверен, что будет нормально копировать / вставлять чужой код, поэтому я дал ссылку на источник. Кроме того, как я вижу, Vintage Thermometer хорошо известен здесь по stackoverflow, упомянутому во многих статьях. Chupo_cro

Ваш Ответ

0   ответов

Похожие вопросы