Как сделать сервис похожим на Системные сервисы Android?

Я работаю над тем, что Android называет программными датчиками. По логике вещей, я не могу поместить свои алгоритмы непосредственно в MotionManager Android. Эти алгоритмы можно использовать для разных приложений. Некоторые конкретные параметры могут быть установлены любым приложением и влиять на поведение всех остальных. Результатом работы алгоритмов является что-то вроде float[4] при 100 Гц.

Я ищу хороший шаблон дизайна, но не уверен, возможно ли это с Android, потому что:

  • Я не могу напрямую добавить свой код в MotionManager Android (очевидно)

  • Базовая библиотека, импортированная во все приложения, не предназначена для этой цели.

  • "Связывающая" сторона Bind Services интересна, но я думаю, что они не предназначен для работы с несколькими приложениями. Более того, код для привязки не проще, чем: [_2 _] (https://developer.android.com/reference/android/hardware/SensorManager.html#registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int)) для разработчика.

  • AIDL может обрабатывать сторону службы с несколькими приложениями, но я не Мне кажется, что это способ сделать это по той же причине, что и служба привязки (передача ссылок).


person Thibaud Michel    schedule 30.01.2017    source источник
comment
если вам нужен IPC, естественным способом является AIDL или android.os.Messenger, в качестве альтернативы вы можете создать канал и передать его другому приложению для чтения / записи   -  person pskink    schedule 30.01.2017
comment
У вас есть следующие варианты: 1) в соответствии с комментариями @pskink или 2) настройка AOSP.   -  person Onik    schedule 30.01.2017


Ответы (1)


Вы смотрели http://processors.wiki.ti.com/index.php/Android-Adding_SystemService?

Написание небольшой библиотеки для скрытия заглушек и обработки исключений может позволить вам совместно использовать службу между приложениями с помощью простого API.

person Thomas Calmant    schedule 30.01.2017
comment
Решение по предоставленной ссылке требует создания пользовательского ПЗУ. - person Onik; 30.01.2017
comment
Действительно, но я не думаю, что можно добавить новую системную службу без создания пользовательского ПЗУ. - person Thomas Calmant; 31.01.2017