Я пытаюсь определить местоположение на своих часах Gear S3 Frontier
. После включения службы определения местоположения я не могу получить никакого ответа.
Некоторый соответствующий код:
location_manager_h location_manager;
location_service_state_e location_service_state = LOCATIONS_SERVICE_DISABLED;
void setup_location_manager()
{
if (location_manager_create(LOCATIONS_METHOD_GPS, &location_manager) != LOCATIONS_ERROR_NONE)
{
dlog_print(DLOG_DEBUG, LOG_TAG, "setup_location_manager: Failed to setup the Location Manager.");
service_app_exit();
}
if(location_manager_set_service_state_changed_cb(location_manager, location_state_changed_callback, NULL) != LOCATIONS_ERROR_NONE)
{
dlog_print(DLOG_DEBUG, LOG_TAG, "setup_location_manager: Failed to register service_state_changed callback for the Location Manager.");
service_app_exit();
}
if(location_manager_set_position_updated_cb(location_manager, location_data_updated_callback, 1, NULL) != LOCATIONS_ERROR_NONE)
{
dlog_print(DLOG_DEBUG, LOG_TAG, "setup_location_manager: Failed to register location_updated callback for the Location Manager.");
service_app_exit();
}
//THE LOGGER SHOWS THIS ON THE SCREEN
dlog_print(DLOG_DEBUG, LOG_TAG, "setup_location_manager: Location Manager has been initialized successfully.");
}
void start_location_manager()
{
handle_start_location_result(location_manager_start(location_manager));
}
void handle_start_location_result(int start_location_result)
{
switch(start_location_result)
{
//Location Settings for the device are OFF
case LOCATIONS_ERROR_GPS_SETTING_OFF:
dlog_print(DLOG_DEBUG, LOG_TAG, "handle_location_manager_start_result: Please turn on the GPS Settings.");
//service_app_exit();
break;
//Location Service is unavailable
case LOCATIONS_ERROR_SERVICE_NOT_AVAILABLE:
dlog_print(DLOG_DEBUG, LOG_TAG, "handle_location_manager_start_result: Location Service is currently unavailable. Please try again later.");
//service_app_exit();
break;
//Location Service not supported
case LOCATIONS_ERROR_NOT_SUPPORTED:
dlog_print(DLOG_DEBUG, LOG_TAG, "handle_location_manager_start_result: Location Service is not supported on the current device.");
//service_app_exit();
break;
//Location Manager is started successfully
case LOCATIONS_ERROR_NONE:
//THE LOGGER SHOWS THIS LINE
dlog_print(DLOG_DEBUG, LOG_TAG, "handle_location_manager_start_result: Location Manager has been started working.");
break;
}
}
//LOGGER DOES NOT SHOW ANYTHING FROM HERE ONWARDS
void location_state_changed_callback(location_service_state_e state, void *user_data)
{
dlog_print(DLOG_DEBUG, LOG_TAG, "location_state_changed_callback: Location Service State: %s", state);
location_service_state = state;
if (state == LOCATIONS_SERVICE_ENABLED)
{
dlog_print(DLOG_DEBUG, LOG_TAG, "location_state_changed_callback: Location Service is enabled now.");
get_location_information();
}
}
Файл журнала показывает следующие строки, относящиеся к местоположению:
setup_location_manager: Диспетчер местоположения успешно инициализирован.
handle_location_manager_start_result: Менеджер местоположений начал работать.
После этого я не получаю никаких обновлений от location_state_changed_callback
. Повторная проверка источника кода тоже не помогло.