Використання GPS в Processing

Більшість смартфонів мають чіп GPS Це дозволяє вам створювати додатки, повязані з місцем розташування У цьому прикладі ми розглянемо спосіб визначення місцезнаходження пристрою і відображення його на екрані

Приступимо

У цьому прикладі я використовував шрифт Junction – вільний шрифт від The ​​League of Moveable Type Ви можете завантажити його за адресою: http://wwwtheleagueofmoveabletypecom/ junction Щоб почати використовувати його, перетягніть його в скетч Processing

Як це робиться

Почнемо з імпорту основних пакетів андроїд і оголосимо кілька змінних, щоб вони у нас запрацювали:

import androidcontentContext import androidlocation* import androidosBundle

LocationManager manager GPSLocationListener gps

float latitude float longitude float accuracy String provider

PFont junction

Далі потрібно створити нову вкладку під імям GPSLocationListener pde У цій вкладці ми напишемо клас, який реалізує інтерфейс LocationListener

class GPSLocationListener implements LocationListener

{

void onLocationChanged( Location _loc )

{

latitude = (float) _locgetLatitude() longitude = (float) _locgetLongitude() accuracy = (float) _locgetAccuracy() provider = _locgetProvider()

}

void onProviderDisabled( String _provider )

{

provider = &quot"

}

void onProviderEnabled( String _provider )

{

provider = _provider

}

void onStatusChanged( String _provider, int status, Bundle xtras )

{

}

}

У функції setup () ми призначимо нашим змінним початкові значення і завантажимо шрифт для відображення інформації на екрані:

void setup()

{

orientation( PORTRAIT )

latitude = 0

longitude = 0

accuracy = 0 provider = &quot"

junction = createFont( &quotJunctionotf&quot, 32 ) textFont( junction, 32 )

}

У функції draw () ми створимо змінну типу String з змінними широти, довготи, точності і провайдера Ця інформація відобразиться в центрі екрана:

void draw()

{

background( 5, 10, 85 )

fill( 250, 255, 13 )

noStroke()

translate( width/2, height/2 )

String msg = &quotLatitude: &quot + latitude + &quot\n" msg += &quotLongitude: &quot + longitude + &quot\n"

msg += &quotAccuracy: &quot + accuracy + &quot\n" msg += &quotProvider: &quot + provider

textAlign( CENTER, CENTER )

text( msg, 0, 0 )

}

Також ми задіємо функції onResume () і onPause () для настройки GPS і читання величин:

void onResume()

{

superonResume()

gps = new GPSLocationListener()

manager = (LocationManager) getSystemService( ContextLOCATION_ SERVICE )

managerrequestLocationUpdates( LocationManagerNETWORK_PROVIDER, 0, 0, gps )

}

void onPause()

{

superonPause()

}

Останнє, що потрібно зробити перед запуском скетчу – переконатися, що ваш додаток під Android має дозвіл для доступу до GPS Відкрийте меню Android | Sketch Permissions і відзначте чекбокс ACCESS_FINE_LOCATION:

Коли ви запустите додаток, ви побачите щось схоже на цей скрішоти Значення широти і довготи будуть іншими, відповідно з вашим місцем розташування

Клас GPSLocationListener, який ми написали, реалізує Android інтерфейс LocationListener Інтерфейс в Java це абстрактний клас, який не може бути рлізован Інтерфейси повинні бути реалізовані в інших класах Коли ви реалізуєте інтерфейс, вам слід переконатися, що ви написали всі методи інтерфейсу, навіть якщо ви не будете застосовувати їх Інтерфейс LocationListener має чотири методи: onLocationChanged (), onProviderDisabled (), onProviderEnabled () і onStatusChanged () У нашій реалізації метод onStatusChanged () нічого не робить, але він потрібен нам, щоб скетч працював Метод onLocationChanged () з нашого класу встановлює величини змінних latitude, longitude, accuracy і provider з нашого скетчу Методи onProviderDisabled () і onProviderEnabled () всього лише змінюють значення змінної провайдера

У функції onResume () ми створимо обєкт GPSLocationListener, встановимо обєкт LocationManager і запитаємо місце розташування за допомогою наступного фрагмента коду:

manager = (LocationManager) getSystemService( ContextLOCATION_SERVICE

)

managerrequestLocationUpdates( LocationManagerNETWORK_PROVIDER, 0, 0, gps )

Додатково

Взагалі-то ми трохи схитрували з цим прикладом Ми використовували Android Network Location Provider, Який визначає місце розташування за допомогою базових станцій і сигналу Wi-Fi замість GPS Це не так точно, але це швидше, енергетично економічніше і теж працює в приміщенні Якщо ви хочете працювати з справжнім GPS, вам потрібно помяти LocationManagerNETWORK_ PROVIDER на LocationManagerGPS_Provider

Джерело: Ян Вантомм, Processing 2: креативне програмування, переклад з англійської Олександри Мішутіної, Published by Packt Publishing Ltd, 2012, BIRMINGHAM – MUMBAI

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*