In this article, we will create an Android application which displays
latitude and longitude of the current location using GPS and Android’s
LocationManager API.
An extension to this application is available in the article titled “Showing current location in Google Maps with GPS and LocationManager in Android“, where current location is displayed in Google Map.
This application is developed in Eclipse ( 4.2.0 ) with ADT plugin ( 20.0.3 ) and Android SDK ( R20.0.3 )
Delete Android’s backward compatibility support library from the project, if exists
By default Eclipse ( 4.2.0) adds Android Support Library to Android application project. For this application, we don’t need to use this support library. So the library file libs/android-support-v4.jar may be removed manually via ProjectExplorer by simply right click on the file and then clicking the menu item “delete”.
Set Longitude and Latitude of the location in Eclipse -> DDMS ( Perspective ) to run this application in the emulator
Screenshot of the application
Download Source Code
Reference
http://developer.android.com/guide/index.html
An extension to this application is available in the article titled “Showing current location in Google Maps with GPS and LocationManager in Android“, where current location is displayed in Google Map.
This application is developed in Eclipse ( 4.2.0 ) with ADT plugin ( 20.0.3 ) and Android SDK ( R20.0.3 )
Delete Android’s backward compatibility support library from the project, if exists
By default Eclipse ( 4.2.0) adds Android Support Library to Android application project. For this application, we don’t need to use this support library. So the library file libs/android-support-v4.jar may be removed manually via ProjectExplorer by simply right click on the file and then clicking the menu item “delete”.
<
resources
>
<
string
name
=
"app_name"
>LocationFromGPS</
string
>
<
string
name
=
"hello_world"
>Hello world!</
string
>
<
string
name
=
"menu_settings"
>Settings</
string
>
<
string
name
=
"title_activity_main"
>Location From GPS</
string
>
<
string
name
=
"str_tv_location"
>Current Location</
string
>
</
resources
>
Update the file res/layout/activity_main.xml
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
>
<
TextView
android:id
=
"@+id/tv_location"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_centerHorizontal
=
"true"
android:text
=
"@string/str_tv_location"
android:textStyle
=
"bold"
/>
<
TextView
android:id
=
"@+id/tv_longitude"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_below
=
"@id/tv_location"
android:layout_centerHorizontal
=
"true"
/>
<
TextView
android:id
=
"@+id/tv_latitude"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_below
=
"@id/tv_longitude"
android:layout_centerHorizontal
=
"true"
/>
</
RelativeLayout
>
Update the file res/values/styles.xml
<
resources
>
<
style
name
=
"AppTheme"
parent
=
"android:Theme"
/>
</
resources
>
Update the file res/values-v11/styles.xml
<
resources
>
<
style
name
=
"AppTheme"
parent
=
"android:Theme.Holo"
/>
</
resources
>
Update the file res/values-v14/styles.xml
<
resources
>
<
style
name
=
"AppTheme"
parent
=
"android:Theme.Holo"
/>
</
resources
>
Update the class MainActivity in the file src/in/wptrafficanalyzer/locationfromgps/MainActivitiy.java
package
in.wptrafficanalyzer.locationfromgps;
import
android.app.Activity;
import
android.content.Context;
import
android.location.Criteria;
import
android.location.Location;
import
android.location.LocationListener;
import
android.location.LocationManager;
import
android.os.Bundle;
import
android.view.Menu;
import
android.widget.TextView;
import
android.widget.Toast;
public
class
MainActivity
extends
Activity
implements
LocationListener{
LocationManager locationManager ;
String provider;
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Getting LocationManager object
locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
// Creating an empty criteria object
Criteria criteria =
new
Criteria();
// Getting the name of the provider that meets the criteria
provider = locationManager.getBestProvider(criteria,
false
);
if
(provider!=
null
&& !provider.equals(
""
)){
// Get the location from the given provider
Location location = locationManager.getLastKnownLocation(provider);
locationManager.requestLocationUpdates(provider,
20000
,
1
,
this
);
if
(location!=
null
)
onLocationChanged(location);
else
Toast.makeText(getBaseContext(),
"Location can't be retrieved"
, Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(getBaseContext(),
"No Provider Found"
, Toast.LENGTH_SHORT).show();
}
}
@Override
public
boolean
onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return
true
;
}
@Override
public
void
onLocationChanged(Location location) {
// Getting reference to TextView tv_longitude
TextView tvLongitude = (TextView)findViewById(R.id.tv_longitude);
// Getting reference to TextView tv_latitude
TextView tvLatitude = (TextView)findViewById(R.id.tv_latitude);
// Setting Current Longitude
tvLongitude.setText(
"Longitude:"
+ location.getLongitude());
// Setting Current Latitude
tvLatitude.setText(
"Latitude:"
+ location.getLatitude() );
}
@Override
public
void
onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public
void
onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public
void
onStatusChanged(String provider,
int
status, Bundle extras) {
// TODO Auto-generated method stub
}
}
Update the file AndroidManifest.xml
package
=
"in.wptrafficanalyzer.locationfromgps"
android:versionCode
=
"1"
android:versionName
=
"1.0"
>
<
uses-sdk
android:minSdkVersion
=
"4"
android:targetSdkVersion
=
"15"
/>
<
uses-permission
android:name
=
"android.permission.ACCESS_FINE_LOCATION"
/>
<
uses-permission
android:name
=
"android.permission.INTERNET"
/>
<
application
android:icon
=
"@drawable/ic_launcher"
android:label
=
"@string/app_name"
android:theme
=
"@style/AppTheme"
>
<
activity
android:name
=
".MainActivity"
android:label
=
"@string/title_activity_main"
>
<
intent-filter
>
<
action
android:name
=
"android.intent.action.MAIN"
/>
<
category
android:name
=
"android.intent.category.LAUNCHER"
/>
</
intent-filter
>
</
activity
>
</
application
>
</
manifest
>
Enable GPS in the emulator or device from Settings
Set Longitude and Latitude of the location in Eclipse -> DDMS ( Perspective ) to run this application in the emulator
Screenshot of the application
Download Source Code
Reference
http://developer.android.com/guide/index.html
No comments:
Post a Comment