Из того, что я понял о безопасности Android, все приложения разделены разными учетными записями пользователей и разными местоположениями файловой системы.
НО: После того, как GPS-тест зафиксировал мое местоположение в первый раз после включения питания, все остальные приложения зафиксируют его очень быстро. Мой вывод: это должно быть что-то не в пользовательском пространстве Android.
Так как же это работает?
Если бы каждое приложение должно было само интерпретировать необработанные данные GPS, это было бы очень глупо. Различные приложения будут дублировать одни и те же усилия по декодированию и интерпретации входных данных GPS для вычисления местоположения. Разные приложения в конечном итоге будут использовать разные библиотеки для этого, поэтому каждое приложение может иметь разное представление о вашем местоположении.
Вместо этого процесс интерпретации данных GPS для вычисления местоположения выполняется централизованно в самом Android. Система Android предлагает интерфейс, с помощью которого приложения могут запрашивать местоположение, не беспокоясь о деталях, получено ли оно от GPS, вышек сотовой связи или сетей Wi-Fi.
Таким образом, только система Android должна вычислять местоположение, используя любые возможные источники, она может предоставить это местоположение многим приложениям без дублирования усилий, и (как вы заметили) каждому приложению не нужно начинать вычисление с нуля. Местоположение. В более поздних версиях Android также используются хитрые трюки, такие как предоставление менее точного местоположения приложениям, которые имеют разрешение «приблизительное (сетевое) местоположение», но не разрешение «точное (GPS) местоположение», независимо от того, какие методы фактически использовались для определения. Местоположение.
Внутри это работает с так называемой связанной системной службой: механизмом IPC, позволяющим различным процессам получать данные от службы, которая фактически вычисляет местоположение. Служба работает в пространстве пользователя, а не внутри ядра, и, как и любое другое приложение для Android, работает внутри собственного процесса. (В ядре работают только самые низкие уровни драйвера GPS-приемника.) Детали этого выходят далеко за рамки этого сайта, но если вам интересно, вы можете узнать больше, прочитав страницу «Стратегии определения местоположения» на официальном сайте. Руководство для разработчиков Android .
Нильс
т0мм13б
Нильс
т0мм13б
Дэн Халм