Работа с GPS на Android

Создадим новый проект Android в Eclipse. Дадим ему название, например: GPSTest, а активности — GPSTestAction.
Откроем GPSTestAction.java и добавим строчки:

( Читать дальше )

Работа с GPS на Windows Mobile

Была задача, написать приложение, которое с определенным интервалом времени получает координаты GPS приемника телефона и отправляет их в удаленную базу данных, а за тем выводит на Яндекс-карту. Долго искал каким способом это лучше осуществить и нашел его у себя на компьютере.

1. Открываем проект gps.sln (путь: c:\program files\windows mobile 6 sdk\samples\pocket pc\cs\gps);
2. Строим решение, получаем dll;
3. Подключаем полученую dll как ссылку к своему проекту;
4. Добавляем
using Microsoft.WindowsMobile.Samples.Location;


Объявляю глобальные переменные, что бы в них всегда хранились актуальные данные координат

double Latitude = 0;
        double Longitude = 0;


5. Инициализируем и включаем gps (я это делал в
Form.Load
):

updateDataHandler = new EventHandler(UpdateData);
                gps.DeviceStateChanged += new DeviceStateChangedEventHandler(gps_DeviceStateChanged);
                gps.LocationChanged += new LocationChangedEventHandler(gps_LocationChanged);
                if (!gps.Opened)
                {
                    gps.Open();
                }

6. Добавим функции:

void UpdateData(object sender, System.EventArgs args)
            {
                //получаем обновленные данные с GPS
                if (gps.Opened)
                {
                    if (device != null)
                    {
                        WriteLog(DateTime.Now.ToUniversalTime() + " Can not turn on your GPS device!");  
                    }

                    if (position != null)
                    {

                        if (position.LatitudeValid)
                        {
                            //выводим широту
                            Latitude = position.Latitude;
                        }

                        if (position.LongitudeValid)
                        {
                            //выводим долготу
                            Longitude = position.Longitude;
                        }
                    }
                }
            }

            void gps_DeviceStateChanged(object sender, DeviceStateChangedEventArgs args)
            {
                device = args.DeviceState;
                Invoke(updateDataHandler);
            }

            protected void gps_LocationChanged(object sender, LocationChangedEventArgs args)
            {
                position = args.Position;
                Invoke(updateDataHandler);

            }

Когда мне надо получить координаты я делаю так:

//работает ли GPS
                                    if (!position.LatitudeValid) 
                                    {
                                       //не работает
                                    }
else
{
 double lat = latitude;
 double lon = longitude;
}

Кординаты представленны как тип double, но можно представить как градусы, минуты и секунды для этого надо

position.Latitude
заменить на
position.LatitudeInDegreesMinutesSeconds;


Все отлично работает!