. Как работает Android GPS? - PullRequest
1 голос
/ 18 июля 2011

Я хотел бы немного лучше понять, как работает GPS в Android, и я хотел бы добавить несколько трасс для его отслеживания и изменения его поведения. В GpsLocationProvider.java я нашел методы:

 private native boolean native_init();
private native void native_disable();
private native void native_cleanup();
private native boolean native_start(int positionMode, boolean singleFix, int fixInterval);
private native boolean native_stop();
private native void native_set_fix_frequency(int fixFrequency);
private native void native_delete_aiding_data(int flags);
private native void native_wait_for_event();
// returns number of SVs
// mask[0] is ephemeris mask and mask[1] is almanac mask
private native int native_read_sv_status(int[] svs, float[] snrs,
        float[] elevations, float[] azimuths, int[] masks);
private native int native_read_nmea(int index, byte[] buffer, int bufferSize);
private native void native_inject_location(double latitude, double longitude, float accuracy);

// XTRA Support
private native void native_inject_time(long time, long timeReference, int uncertainty);
private native boolean native_supports_xtra();
private native boolean native_inject_xtra_data(byte[] data, int length);

// DEBUG Support
private native String native_get_internal_state();

// AGPS Support
private native void native_agps_data_conn_open(String apn);
private native void native_agps_data_conn_closed();
private native void native_agps_data_conn_failed();
private native void native_set_agps_server(int type, String hostname, int port);

// Network-initiated (NI) Support
private native void native_send_ni_response(int notificationId, int userResponse);

Однако я бы хотел посмотреть, что они делают в деталях. Где они реализованы? Я нашел драйверы qualcomm для GPS, но, полагаю, между ними отсутствует пропущенный слой, в котором устранены проблемы с оборудованием (уровень HAL?).

1 Ответ

1 голос
/ 01 декабря 2011

Я надеюсь, что вы знаете, что они должны быть сопоставлены на уровне JNI с соответствующими API-интерфейсами поставщиков GPS. Вы правы, когда говорите, что они реализованы как часть уровня HAL. Уровень HAL будет частью кода поставщика чипсета GPS.

Поскольку вы говорили о qualcomm, я могу вам сказать, что qualcomm наверняка имеет уровень HAL. Вы можете проверить их часть двигателя, если у вас есть их источник. Но он имеет авторские права и, следовательно, я не могу дать вам исходный код, который реализует нативные API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...