برنامه نویسی جی پی اس در اندروید

Android Location API

This tutorial describes the usage of the Android Location API. It is based on Eclipse 3.7, Java 1.6 and Android 4.0 (Ice Cream Sandwich).

این آموزش کاربرد توابع API موقعیت یابی در اندروید را توضیح می دهد. که بر مبنای اکلیپس 3.7، جاوا 1.6 و اندروید 4.0 می باشد.

1. Android Basics

The following assumes that you have already basic knowledge in Android development. Please check the Android development tutorial for the basics.

 1- پایه اندروید

در مطالب زیر فرض می شود که شما

2. Android Location API
2.1. Determine the current geolocation

Most Android devices allow to determine the current geolocation. This can be done via a GPS (Global Positioning System) module, via cell tower triangulation or via wifi networks.

Android contains the android.location package which provides the API to determine the current geo position.

2.2. LocationManager

The LocationManager class provides access to the Android location service. This services allows to access location providers, to register location update listeners and proximity alerts and more.

2.3. LocationProvider

The LocationProvider class is the superclass of the different location providers which deliver the information about the current location. This information is stored in the Location class.

The Android device might have several LocationProvider available and you can select which one you want to use. In most cases you have the followng LocationProvider available.

 

Table 1. LocationProvider

LocationProviderDescriptionnetwork Uses the mobile network or WI-Fi to determine the best location. Might have a higher precision in closed rooms then GPS. gps Use the GPS receiver in the Android device to determine the best location via satellites. Usually better precision than network. passive Allows to participate in location of updates of other components to save energy

 

2.4. Selecting LocationProvider via Criteria

For a flexible selection of the best location provider use a Criteria object, in which you can define how the provider should be selected.

You can register a LocationListener object with the LocationManager class to receive periodic updates about the geoposition.

2.5. Proximity Alert

You can also register an Intent which allows to define a proximity alert, this alert will be triggered if the device enters a area given by a longitude, latitude and radius (proximity alert).

2.6. Forward and reverse Geocoding

The Geocoder class allows to determine the geo-coordinates (longitude, laditude) for a given address and possible addresses for given geo-coordinates.

This process is known as forward and reverse geocoding. The Geocoder class uses an online Google service.

2.7. Security

If you want to access the GPS sensor, you need the ACCESS_FINE_LOCATION permission. Otherwise you need the ACCESS_COARSE_LOCATION permission.

2.8. Prompt the user to Enabled GPS

The user can decide if the GPS is enabled or not.

You can find out, if a LocationManager is enabled via the isProviderEnabled() method. If its not enabled you can send the user to the settings via an Intent with the Settings.ACTION_LOCATION_SOURCE_SETTINGS action for the android.provider.Settings class.

 

LocationManager service = (LocationManager) getSystemService(LOCATION_SERVICE); boolean enabled = service .isProviderEnabled(LocationManager.GPS_PROVIDER);

// Check if enabled and if not send user to the GSP settings // Better solution would be to display a dialog and suggesting to // go to the settings if (!enabled) { Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(intent); }

 

Typically you would open an AlarmDialog prompt the user and if he wants to enable GPS or if the application should be canceled.

You cannot enable the GPS directly in your code, the user has to do this.

/ 0 نظر / 33 بازدید