socialgekon.com
  • Tärkein
  • Projektinhallinta
  • Trendit
  • Työkalut Ja Oppaat
  • Web-Käyttöliittymä
Matkapuhelin

Android-kehittäjän opas Google Location Services -sovellusliittymään

Käyttäjän sijainnin tunteminen on hyödyllistä monia sovelluksia kehitämme ja käytämme tänään. Siellä on paljon suosittuja sijaintiin perustuvia sovelluksia, jotka helpottavat elämäämme ja muuttavat tapaa, jolla käytämme näitä palveluja. Esimerkiksi on erittäin suosittu Foursquare -sovellus, jossa käyttäjät, jotka käyvät usein laitoksella ja 'kirjautuvat sisään', voittavat usein alennuksia. Uber, joka auttaa sinua saamaan matkan matkapuhelimestasi pienemmällä nopeudella kuin normaali taksi. Luettelo on suuri ja kasvaa edelleen.

sijaintipalvelujen sovellusliittymä

Tässä artikkelissa aiomme rakentaa yksinkertaisen Android-sovelluksen, jolla määritetään käyttäjän leveys- ja pituusaste Androidin Google Location Services -sovellusliittymän avulla. Kun kehittää Android-sovelluksia , on olemassa muutama tapa saada käyttäjän sijainti.



Paketti “android.location”

paketti “android.location” on ollut käytettävissä Androidin ensimmäisestä käyttöönotosta lähtien, ja se antaa meille pääsyn sijaintipalveluihin. Näiden palvelujen avulla sovellukset voivat saada säännöllisiä päivityksiä laitteen maantieteellisestä sijainnista.

Paketti tarjoaa kaksi tapaa hankkia sijaintitiedot:

  • LocationManager.GPS_PROVIDER: Määrittää sijainnin satelliittien avulla. Ehdoista riippuen tällä palveluntarjoajalla voi kestää jonkin aikaa palauttaa sijaintikorjaus.

  • LocationManager.NETWORK_PROVIDER: Määrittää sijainnin läheisten solutornien ja WiFi-tukiasemien saatavuuden perusteella. Tämä on nopeampi kuin GPS_PROVIDER.

Kun etsit käyttäjän sijaintia, sinun on pelattava näiden palveluntarjoajien kanssa ja niiden saatavuudesta. Ihannetapauksessa hankit ensimmäisen sijainnin käyttämällä NETWORK_PROVIDER -ohjelmaa, joka ei ehkä ole yhtä tarkka, mutta on paljon nopeampi. Sitten voit yrittää lisätä tarkkuutta kuuntelemalla parempaa sijainnin korjausta GPS_PROVIDER: n avulla.

Tämän paketin tarjoamat sovellusliittymät ovat melko matalatasoisia, ja ne vaativat sovelluksen kehittäjää käsittelemään tarkemmat yksityiskohdat sen määrittämiseksi, milloin sijaintitietoja pyydetään, ja ajastamaan puhelut API: lle optimoidulla tavalla. Parantaakseen kehittäjäkokemusta sijaintipohjaisista järjestelmäpalveluista ja helpottaakseen sijaintitietoisten sovellusten kehittämisprosessia Google esitteli uuden tavan pyytää käyttäjän sijaintia Google Play -palveluiden avulla. Se tarjoaa yksinkertaisemman API: n, jolla on parempi tarkkuus, pienitehoinen geofencing ja paljon muuta.

Google Location Services -sovellusliittymä

Google Location Services -sovellusliittymä, joka tunnetaan myös nimellä FusedLocationProviderApi, on Googlen suosittelema tapa saada käyttäjän sijainti. Se tarjoaa parhaan tarkkuuden tarpeisiimme perustuen. Joitakin tämän API: n käytön etuja edelliseen verrattuna ovat:

  • Yksinkertaisuus: Toisin kuin edellinen sovellusliittymä, sinun ei enää tarvitse olla tekemisissä useiden palveluntarjoajien kanssa. Sen sijaan määrität korkean tason tarpeet, kuten 'korkea tarkkuus' tai 'pieni teho', ja se käyttää sopivaa lähestymistapaa.

  • Saatavuus: Antaa sovelluksellesi välittömän pääsyn parhaaseen ja viimeisimpään tunnettuun sijaintiin. Yleensä nämä tiedot ovat helposti saatavilla, sinun tarvitsee vain pyytää niitä.

  • Tehokkuus: Minimoi sovelluksesi virrankulutuksen.

  • Monipuolisuus: Täyttää monenlaiset tarpeet etualan käytöstä - erittäin tarkan sijaintitiedon tarvitsemisesta taustakäyttöön - joka vaatii vain säännöllisiä sijaintipäivityksiä, joilla on vähäinen teho.

Rakennetaanpaikkapohjainen Android-sovellus tämän API: n avulla. Tätä varten käytämme Googlen ehdottamaa IDE: tä Android-sovelluskehitykseen - Android Studio . Android Studion käytön aloittaminen on melko suoraviivaista. Heidän verkkosivustossaan kuvataan yksityiskohtaisesti menettely, johon sisältyy Android Studion asennus ja määritys, mukaan lukien ensimmäisen Android-sovelluksen uudelleenkäynnistys kehitystä varten.

Android Studion pitäisi tehdä asioista meille erittäin helppoja. Meidän on kuitenkin aloitettava määrittämällä koontikomentosarja ja lisäämällä Google Play -palvelut tämän sovelluksen riippuvuudeksi. Tämä voidaan tehdä muokkaamalla “build.gradle” -tiedostoa seuraavasti:

dependencies { compile 'com.android.support:appcompat-v7:21.0.3' compile 'com.google.android.gms:play-services:6.5.87' // Add this line }

Kun kirjoitan tätä artikkelia, uusin käytettävissä oleva Google Play -palveluiden versio on 6.5.87. Varmista, että tarkistat aina uusimman saatavilla olevan version ennen aloittamista. Jos uudempia versioita ilmestyy myöhemmin tiellä ja päätät päivittää sen omille projekteillesi, testaa kaikki sijaintiin liittyvät ominaisuudet kaikissa tuetuissa Android-versioissa.

Tässä vaiheessa meidän pitäisi pystyä aloittamaan todellinen työ sovelluksellemme.

Pyydetään lupaa, määritetään AndroidManifest.xml

Androidilla on erityiset turvaominaisuudet, jotka estävät mielivaltaisia ​​sovelluksia pyytämästä tarkkaa käyttäjän sijaintia. Tämän ratkaisemiseksi meidän on muokattava tiedostoa AndroidManifest.xml ja lisättävä tarvitsemme luvan tälle sovellukselle:

private boolean checkGooglePlayServices(){ int checkGooglePlayServices = GooglePlayServicesUtil .isGooglePlayServicesAvailable(mContext); if (checkGooglePlayServices != ConnectionResult.SUCCESS) { /* * Google Play Services is missing or update is required * return code could be * SUCCESS, * SERVICE_MISSING, SERVICE_VERSION_UPDATE_REQUIRED, * SERVICE_DISABLED, SERVICE_INVALID. */ GooglePlayServicesUtil.getErrorDialog(checkGooglePlayServices, mContext, REQUEST_CODE_RECOVER_PLAY_SERVICES).show(); return false; } return true; }

Meidän on määriteltävä myös Google Play -palvelujen versio, jota käytämme tässä sovelluksessa:

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE_RECOVER_PLAY_SERVICES) { if (resultCode == RESULT_OK) { // Make sure the app is not already connected or attempting to connect if (!mGoogleApiClient.isConnecting() && !mGoogleApiClient.isConnected()) { mGoogleApiClient.connect(); } } else if (resultCode == RESULT_CANCELED) { Toast.makeText(mContext, 'Google Play Services must be installed.', Toast.LENGTH_SHORT).show(); finish(); } } }

Tarkistetaan Google Play -palveluiden saatavuutta

Ennen kuin pääset käyttämään Google Play -palvelujen tarjoamia ominaisuuksia, meidän on tarkistettava, onko laitteeseen asennettu Google Play -palvelut ja että versio on se, jota aiomme käyttää (6.5.87).

protected synchronized void buildGoogleApiClient() { mGoogleApiClient = new GoogleApiClient.Builder(this) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); }

Tämä menetelmä tarkistaa Google Play -palvelut, ja jos laitetta ei ole asennettu (se on harvinaista, mutta olen nähnyt sellaisia ​​tapauksia), se avaa vastaavan virheen sisältävän valintaikkunan ja kehottaa käyttäjää asentamaan / päivittämään Google Play -palvelut Google Play Kaupasta.

Google Play -palvelut

Kun käyttäjä on suorittanut GooglePlayServicesUtil.getErrorDialog () -palvelun tarjoaman tarkkuuden, takaisinsoittomenetelmä “onActivityResult ()” käynnistetään, joten meidän on käytettävä jonkin verran logiikkaa tämän puhelun käsittelemiseksi:

package com.bitwoo.userlocation; import android.content.Intent; import android.location.Location; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.location.LocationServices; public class MainActivity extends ActionBarActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { private static int REQUEST_CODE_RECOVER_PLAY_SERVICES = 200; private GoogleApiClient mGoogleApiClient; private Location mLastLocation; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (checkGooglePlayServices()) { buildGoogleApiClient(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } private boolean checkGooglePlayServices() { int checkGooglePlayServices = GooglePlayServicesUtil .isGooglePlayServicesAvailable(this); if (checkGooglePlayServices != ConnectionResult.SUCCESS) { /* * google play services is missing or update is required * return code could be * SUCCESS, * SERVICE_MISSING, SERVICE_VERSION_UPDATE_REQUIRED, * SERVICE_DISABLED, SERVICE_INVALID. */ GooglePlayServicesUtil.getErrorDialog(checkGooglePlayServices, this, REQUEST_CODE_RECOVER_PLAY_SERVICES).show(); return false; } return true; } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE_RECOVER_PLAY_SERVICES) { if (resultCode == RESULT_OK) { // Make sure the app is not already connected or attempting to connect if (!mGoogleApiClient.isConnecting() && !mGoogleApiClient.isConnected()) { mGoogleApiClient.connect(); } } else if (resultCode == RESULT_CANCELED) { Toast.makeText(this, 'Google Play Services must be installed.', Toast.LENGTH_SHORT).show(); finish(); } } } protected synchronized void buildGoogleApiClient() { mGoogleApiClient = new GoogleApiClient.Builder(this) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); } @Override public void onConnected(Bundle bundle) { } @Override public void onConnectionSuspended(int i) { } @Override public void onConnectionFailed(ConnectionResult connectionResult) { } }

Google-sovellusliittymien käyttö

Google-sovellusliittymien käyttämiseksi meidän on vain suoritettava vielä yksi vaihe: luotava GoogleApiClient-ilmentymä. Google-sovellusliittymäohjelma tarjoaa yhteisen lähtökohdan kaikkiin Google Play -palveluihin ja hallinnoi käyttäjän laitteen ja kunkin Google-palvelun välistä verkkoyhteyttä. Ensimmäinen askelemme on aloittaa yhteys. Kutsun tätä koodia yleensä toiminnan onCreate-menetelmästä:

@Override protected void onStart() { super.onStart(); if (mGoogleApiClient != null) { mGoogleApiClient.connect(); } }

Ketjuamalla sarja menetelmäpuheluja määrittelemme takaisinsoittorajapinnan toteutuksen ja Location Service API: n, jota haluamme käyttää. Käyttöliittymän toteutus, tässä tapauksessa 'tämä', saa vastauksen asynkroniseen 'connect ()' -menetelmään, kun yhteys Google Play -palveluihin onnistuu, epäonnistuu tai jäädytetään. Kun olet lisännyt tämän koodin, MainActivity-palvelumme pitäisi näyttää tältä:

@Override public void onConnected(Bundle bundle) { mLastLocation = LocationServices.FusedLocationApi.getLastLocation( mGoogleApiClient); if (mLastLocation != null) { Toast.makeText(this, 'Latitude:' + mLastLocation.getLatitude()+', Longitude:'+mLastLocation.getLongitude(),Toast.LENGTH_LONG).show(); } }

Sitten 'onStart' -menetelmässämme kutsutaan 'connect' -menetelmää ja odotamme, että 'onConnected' -soittomenetelmää kutsutaan:

protected void createLocationRequest() { mLocationRequest = new LocationRequest(); mLocationRequest.setInterval(20000); mLocationRequest.setFastestInterval(5000); mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); }

OnConnected-menetelmä näyttää tältä:

protected void startLocationUpdates() { LocationServices.FusedLocationApi.requestLocationUpdates( mGoogleApiClient, mLocationRequest, this); }

Tämä soittopyyntö käynnistyy, kun Google Play -palvelut on yhdistetty, mikä tarkoittaa, että siihen mennessä meillä pitäisi olla viimeinen tunnettu sijainti. Tämä sijainti voi kuitenkin olla tyhjä (se on harvinaista, mutta ei mahdotonta). Siinä tapauksessa suosittelen kuuntelemaan seuraavaksi käsiteltäviä sijaintipäivityksiä.

Kuuntelet sijaintipäivityksiä

Kun olet kutsunut “getLastLocation”, saatat haluta pyytää säännöllisiä päivityksiä Fused Location Providerilta. Hakemuksestasi riippuen tämä jakso voi olla lyhyt tai pitkä. Jos esimerkiksi rakennat sovellusta, joka seuraa käyttäjän sijaintia hänen ajaessaan, sinun on kuunneltava päivityksiä lyhyin väliajoin. Toisaalta, jos sovelluksessasi on kyse käyttäjän sijainnin jakamisesta hänen ystävänsä kanssa, joudut ehkä vain pyytämään sijaintia silloin tällöin.

Pyynnön luominen on melko helppoa - voit kutsua tätä menetelmää “onCreate” -menetelmän sisällä:

public class MainActivity extends ActionBarActivity implements ConnectionCallbacks, OnConnectionFailedListener, LocationListener { // ... @Override public void onLocationChanged(Location location) { mLastLocation = location; Toast.makeText(this, 'Latitude:' + mLastLocation.getLatitude()+', Longitude:'+mLastLocation.getLongitude(),Toast.LENGTH_LONG).show(); } }

Me välitämme uuden LocationRequest esine. Aseta aikaväliksi 20 sekuntia (20000 millisekuntia). Lisäksi asetimme kuristetun päivitysnopeuden 5 sekuntiin. Tämä käskee sovellusliittymää toimittamaan päivityksiä 20 sekunnin välein (mieluiten), mutta jos muutosta on saatavana 5 sekunnin kuluessa, myös sen tulisi antaa. Lopuksi asetamme prioriteetiksi PRIORITY_HIGH_ACCURACY ”, Muiden käytettävissä olevien prioriteettivaihtoehtojen joukossa: PRIORITY_BALANCED_POWER_ACCURACY , PRIORITY_LOW_POWER , PRIORITY_NO_POWER .

Kun olet rakentanut pyynnön, olet valmis aloittamaan sijaintipäivitysten kuuntelun, kun ”onConnected ()” -menetelmä on käynnistetty:

protected void stopLocationUpdates() { if (mGoogleApiClient != null) { LocationServices.FusedLocationApi.removeLocationUpdates( mGoogleApiClient, this); } }

Ainoa mitä on jäljellä, on toteuttaa takaisinsoittomenetelmä LocationListener käyttöliittymä:

@Override protected void onStop() { super.onStop(); if (mGoogleApiClient != null) { mGoogleApiClient.disconnect(); } }

lopeta päivitysten kuuntelu

Lopeta päivitysten kuuntelu

On tärkeää lopettaa nimenomaisesti päivitysten kuuntelu, kun et enää tarvitse niitä tai jos käyttäjä poistuu sovelluksestasi. Seuraava menetelmä tulisi kutsua onPause-soittopyynnön sisältä:

|_+_|

… Ja Google-sovellusliittymän irrottaminen:

Käärimistä

Kuten näette, sijaintitietoisten sovellusten käyttöönoton taustalla olevat perusajatukset Androidissa ovat hyvin yksinkertaisia. Lisäksi käytettävissä olevien sovellusliittymien avulla, jotka ovat sekä helppokäyttöisiä että helposti ymmärrettäviä, sijaintipohjaisten perussovellusten rakentaminen Androidille ei ole helppoa. Täällä rakentamamme pieni näytesovellus on tarkoitettu osoittamaan juuri sitä. Löydät täydellisen tämän lähdekoodi GitHubissa . Huomaa, että asioiden yksinkertaistamiseksi sovellus ei käsittele ”onConnectionFailed” -soittomenetelmää.

Toivottavasti tämä opetusohjelma auttaa sinua aloittamaan Google Location Services -sovellusliittymän käytön.

Sivunopeus 101: Säätiö mobiilikäyttöliittymäsuunnittelijoille

Mobiilisuunnittelu

Sivunopeus 101: Säätiö mobiilikäyttöliittymäsuunnittelijoille
Suunnittelu ihmisen käyttäytymiseen: Aineettoman määritteleminen

Suunnittelu ihmisen käyttäytymiseen: Aineettoman määritteleminen

Ux-Suunnittelu

Suosittu Viestiä
Onko Yhdysvaltain oman pääoman joukkorahoitusmarkkinat eläneet odotuksia?
Onko Yhdysvaltain oman pääoman joukkorahoitusmarkkinat eläneet odotuksia?
Fintech-teollisuuden tila (infografiikan kanssa)
Fintech-teollisuuden tila (infografiikan kanssa)
10 Yleisimmät verkkoturvan haavoittuvuudet
10 Yleisimmät verkkoturvan haavoittuvuudet
Kuka tiesi Adobe CC: n voivan kehystää?
Kuka tiesi Adobe CC: n voivan kehystää?
Opas UTF-8-koodaukseen PHP: ssä ja MySQL: ssä
Opas UTF-8-koodaukseen PHP: ssä ja MySQL: ssä
 
Fintech ja pankit: Kuinka pankkisektori voi reagoida häiriöiden uhkaan?
Fintech ja pankit: Kuinka pankkisektori voi reagoida häiriöiden uhkaan?
Shopify-suunnitteluvinkit ja UX: n parhaat käytännöt
Shopify-suunnitteluvinkit ja UX: n parhaat käytännöt
Suorita matematiikka: Mikropalvelusovellusten skaalaus orkesterin kanssa
Suorita matematiikka: Mikropalvelusovellusten skaalaus orkesterin kanssa
Aloittelijan opas vedenalaiseen valokuvaukseen iPhonella
Aloittelijan opas vedenalaiseen valokuvaukseen iPhonella
Motivaation säännöt: Tarina epäonnistuneiden myyntikannustinjärjestelmien korjaamisesta
Motivaation säännöt: Tarina epäonnistuneiden myyntikannustinjärjestelmien korjaamisesta
Luokat
Tuotemerkin SuunnitteluWeb-KäyttöliittymäVarastointiKetterä KykyLähettäminenIhmiset Ja JoukkueetSijoittajat Ja RahoitusTuotteen ElinkaariProsessi Ja TyökalutLiikevaihdon Kasvu

© 2023 | Kaikki Oikeudet Pidätetään

socialgekon.com