struct _runtimeinfo_view
{
common_view* view;
+ location_manager_h manager;
Evas_Object *info_label;
};
static void _location_state_changed_cb(runtime_info_key_e key, void *user_data);
static void _wifi_state_changed_cb(runtime_info_key_e key, void *user_data);
+static void _position_updated_cb(double latitude, double longitude, double altitude, time_t timestamp, void *data);
+static void _gps_state_changed_gps_cb(location_service_state_e state, void *data);
+
/**
* @function get_runtime_info_error
* @since_tizen 2.3
this->info_label = ui_utils_label_add(this->view->layout, "GPS: ");
elm_label_line_wrap_set(this->info_label, ELM_WRAP_WORD);
+ ret = location_manager_create(LOCATIONS_METHOD_GPS, &this->manager);
+ RETVM_IF(ret != LOCATIONS_ERROR_NONE, NULL, "location_manager_create fail > Error = %d", ret);
+
+ ret = location_manager_set_service_state_changed_cb(this->manager, _gps_state_changed_gps_cb, this);
+ if(ret != LOCATIONS_ERROR_NONE)
+ {
+ location_manager_destroy(this->manager);
+ ERR("location_manager_set_service_state_changed_cb fail > Error = %d", ret);
+ return NULL;
+ }
+
+ ret = location_manager_set_position_updated_cb(this->manager, _position_updated_cb, 1, this);
+ if(ret != LOCATIONS_ERROR_NONE)
+ {
+ location_manager_unset_service_state_changed_cb( this->manager);
+ location_manager_destroy(this->manager);
+ ERR("location_manager_set_position_updated_cb fail > Error = %d", ret);
+ return NULL;
+ }
+
+ ret = location_manager_start(this->manager);
+ if(ret != LOCATIONS_ERROR_NONE)
+ {
+ location_manager_unset_service_state_changed_cb( this->manager);
+ location_manager_unset_position_updated_cb( this->manager);
+ location_manager_destroy(this->manager);
+ ERR("location_manager_start fail > Error = %d", ret);
+ }
+
ret = runtime_info_set_changed_cb(RUNTIME_INFO_KEY_GPS_STATUS , _gps_state_changed_cb, this);
RETVM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED, NULL, "runtime_info_set_changed_cb failed : %s", get_runtime_info_error(ret));
view->view->tbt_info->result = TBT_INFO_RESULT_NOT_SUPPORTED;
elm_genlist_item_update(view->view->item);
}
+ if (view->view->tbt_info->apptype == TBT_APP_GPS_STATUS)
+ {
+ int err = location_manager_unset_service_state_changed_cb(view->manager);
+ if(err != LOCATIONS_ERROR_NONE)
+ {
+ DBG( "location_manager_unset_service_state_changed_cb fail > Error = %d", err);
+ }
+
+ location_manager_unset_position_updated_cb(view->manager);
+ if(err != LOCATIONS_ERROR_NONE)
+ {
+ DBG( "location_manager_unset_position_updated_cb fail > Error = %d", err);
+ }
+
+ err = location_manager_stop(view->manager);
+ if(err != LOCATIONS_ERROR_NONE)
+ {
+ DBG( "location_manager_stop fail > Error = %d", err);
+ }
+
+ err= location_manager_destroy(view->manager);
+ if(err != LOCATIONS_ERROR_NONE)
+ {
+ DBG( "location_manager_destroy fail > Error = %d", err);
+ }
+ }
SAFE_DELETE(view->view);
SAFE_DELETE(view);
}
+static void _position_updated_cb(double latitude, double longitude, double altitude, time_t timestamp, void *data){
+
+ runtimeinfo_view *this = NULL;
+ this = (runtimeinfo_view*) data;
+
+ char buf[MAX_LENGTH] = {'\0'};
+ snprintf(buf, MAX_LENGTH, "Latitude: %f", latitude);
+ snprintf(buf, MAX_LENGTH, "Longitude: %f", longitude);
+}
+
+
+/**
+ * @function _gps_state_changed_gps_cb
+ * @since_tizen 2.3
+ * @description Gps State Changed Cb
+ * @parameter location_service_state_e: Location Service State E, void*: Void Pointer
+ * @return static void
+ */
+static void _gps_state_changed_gps_cb(location_service_state_e state, void *data)
+{
+
+ runtimeinfo_view *this = NULL;
+ this = (runtimeinfo_view*) data;
+
+ int err;
+ double dbLatitute, dbAltitute,dbLongitude,dbDirection,dbSpeed,dbClimb,dbHorizontal,dbVertical;
+ time_t timestamp;
+ location_accuracy_level_e level;
+ err = location_manager_get_location(this->manager,&dbAltitute,&dbLatitute,&dbLongitude,&dbClimb,&dbDirection,&dbSpeed,&level,&dbHorizontal,&dbVertical,×tamp);
+ RETM_IF(err != LOCATIONS_ERROR_NONE, "location_manager_get_location fail > Error = %d", err);
+
+ char buf[MAX_LENGTH] = {'\0'};
+ snprintf(buf, MAX_LENGTH, "Latitude: %f", dbLatitute);
+ snprintf(buf, MAX_LENGTH, "Longitude: %f", dbLongitude);
+}
+
#endif
+