Gingerbread中 GPS jni 接口分析

1. class_init_native
it is used to initialize callback functions.
it is called by GpsLocationProviderThread class with static method.

2. native_is_supported
check if lower layer support GPS feature by using below method.
(sGpsInterface != NULL || get_gps_interface() != NULL);
it is called by  isSupported() in GpsLocationProvider.java.

3. native_init 
it is called while GPS is enabled.

4. native_cleanup
call cleanup in GpsInterface.
it is called while GPS is disabled.

5. native_set_position_mode
call set_position_mode in GpsInterface.
it is called while starting navigation and setMinTime() function.

6. native_start
call start in GpsInterface.
it is called while starting navigation.

7. native_stop
call stop in GpsInterface.
it is called while stopping navigation.

8. native_delete_aiding_data
call delete_aiding_data in GpsInterface.
it is only be called by Application send command with sendExtraCommand() API and command - delete_aiding_data.

9. native_read_sv_status
used to transfer sv status to java layer
it is triggered by native layer callback function - reportSvStatus().

10. native_read_nmea
used to transfer nmea data to java layer
it is triggered by native layer callback function - reportNmea().

11. native_inject_time
call inject_time in GpsInterface.
this interface can be called by two channels.
the first is:
it is be called by Application send command with sendExtraCommand() API and command - force_time_injection.
the second is:
while Network becomes available, it will be called automatically.

12. native_inject_location
call inject_location in GpsInterface.
it is called in framework layer to notify other providers of the new location.

13. native_supports_xtra
call init in GpsXtraInterface.
it is called when GPS is enabled to get capability of lower layer - whether it supports xtra funcation.

14. native_inject_xtra_data
call inject_xtra_data in GpsInterface.
this interface can be called by two channels.
the first is:
it is be called by Application send command with sendExtraCommand() API and command - force_xtra_injection.
the second is:
while Network becomes available, it will be called automatically.

15. native_agps_data_conn_open
call data_conn_open in AGpsInterface.
it is triggered by native layer callback function - reportAGpsStatus().
there are two possiblibilty: APN_ALREADY_ACTIVE / APN_REQUEST_STARTED.

16. native_agps_data_conn_closed
call data_conn_closed in AGpsInterface.
it is triggered by native layer callback function - reportAGpsStatus().

17. native_agps_data_conn_failed
call data_conn_failed in AGpsInterface.
it is triggered by native layer callback function - reportAGpsStatus().
there are three possiblibilty: APN_ALREADY_ACTIVE / APN_REQUEST_STARTED / other status.

18. native_agps_set_id
call set_set_id in AGpsInterface.
it is triggered by native layer callback function - requestSetID().

19. native_agps_set_ref_location_cellid
call set_ref_location in AGpsRilInterface.
it is triggered by native layer callback function - requestRefLocation().

20. native_set_agps_server
call set_server in AGpsInterface.
it is called while GPS is enabled.

21. native_send_ni_response
call respond in GpsNiInterface.
it can be called by two channels.
the first is:
it is called after user responses NI pop-up UI.
handleNiNotification() in GpsLocationProvider.java -> openNiDialog() -> onClick() in NetInitiatedActivity.java -> sendUserResponse() -> locationManager.sendNiResponse()
-> mService.sendNiResponse() -> mNetInitiatedListener.sendNiResponse()
-> native_send_ni_response() in GpsLocationProvider.java.
the second is:
for NI ACCEPT cases, this function will be called in handleNiNotification() in GpsNetInitiatedHandler.java.
handleNiNotification() in GpsLocationProvider.java -> mLocationManager.sendNiResponse() ->... -> native_send_ni_response().
in fact, all these two cases are triggered by reportNiNotification() callback function from native layer.

23. native_agps_ni_message
call ni_message in AGpsRilInterface.
it is called by checkSmsSuplInit() and checkWapSuplInit() in GpsLocationProvider.java.

24. native_get_internal_state
call get_internal_state in GpsDebugInterface.
it is called by dump() in LocationManagerService.java.

25. native_update_network_state
call update_network_state in AGpsRilInterface.
it is called by handleUpdateNetworkState() in GpsLocationProvider.java.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值