Nano Hash - криптовалюты, майнинг, программирование

SensorManager.registerListener(.., Handler handler), пример пожалуйста?

Я не понимаю, как использовать этот метод,

SensorManager.registerListener (прослушиватель SensorEventListener, сенсорный датчик, внутренняя скорость, обработчик Handler);

(Документация здесь)

1) Если он использует SensorEventListener, то какова цель обработчика?

2) Приведите пример обработчика, на который я мог бы перейти?

Спасибо!

20.05.2011

Ответы:


1

Если он использует SensorEventListener, то какова цель обработчика?

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

20.05.2011
  • Вы можете объявить несколько датчиков здесь? 09.06.2017
  • Могу ли я использовать несколько аргументов SENSOR? 09.06.2017

  • 2

    Вот вам пример:

    SensorManager mSensorMgr = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
    
    HandlerThread mHandlerThread = new HandlerThread("sensorThread");
    
    mHandlerThread.start();
    
    Handler handler = new Handler(mHandlerThread.getLooper());
    
    mSensorMgr.registerListener(this, mSensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                        SensorManager.SENSOR_DELAY_FASTEST, handler);
    

    Из исходного кода класса android SensorManager вы можете видеть, что registerListener() извлекает Looper вашего обработчика, чтобы создать новый обработчик с этим looper, где он вызывает метод onSensorChanged.

    Если вы не передадите свой обработчик, SensorManager будет использовать основной поток приложения.

    20.07.2011
  • Спасибо за этот ответ, ясно и кратко. ИМХО, это надо добавить в официальные документы :) 27.08.2014

  • 3

    1) Если он использует SensorEventListener, то какова цель обработчика? если вы запускаете его в основном потоке и выполняете тяжелые вычисления, вы замедляете основной пользовательский интерфейс, чтобы он не отвечал. Всегда записывайте свои длительные задачи в отдельный поток, чтобы избежать ANR.

    Вот пример http://stacktips.com/tutorials/android/android-service-example

    14.11.2016
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..