package
com.example.gps0719;
import
java.io.IOException;
import
java.util.List;
import
android.location.Address;
import
android.location.Criteria;
import
android.location.Geocoder;
import
android.location.Location;
import
android.location.LocationListener;
import
android.location.LocationManager;
import
android.os.Bundle;
import
android.app.Activity;
import
android.content.Context;
import
android.view.Menu;
import
android.widget.Toast;
public
class
MainActivity
extends
Activity {
LocationManager locationManager;
Location location;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
checkMyLocation();
getAddress();
}
@Override
public
boolean
onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return
true
;
}
public
void
checkMyLocation(){
locationManager = (LocationManager)
this
.getSystemService(Context.LOCATION_SERVICE);
Criteria criteria =
new
Criteria();
String provider = locationManager.getBestProvider(criteria,
true
);
locationManager.requestLocationUpdates(provider,
10000
,
100
,
new
MyLocationListener());
if
(provider ==
null
){
Toast.makeText(getBaseContext(),
"no GPS Provider"
, Toast.LENGTH_SHORT).show();
provider = LocationManager.NETWORK_PROVIDER;
location = locationManager.getLastKnownLocation(provider);
}
location = locationManager.getLastKnownLocation(provider);
if
(location ==
null
){
try
{
Thread.sleep(
10000
);
}
catch
(InterruptedException e){
e.printStackTrace();
}
location = locationManager.getLastKnownLocation(provider);
}
}
private
class
MyLocationListener
implements
LocationListener{
@Override
public
void
onLocationChanged(Location location) {
}
@Override
public
void
onProviderDisabled(String provider) {
}
@Override
public
void
onProviderEnabled(String provider) {
}
@Override
public
void
onStatusChanged(String provider,
int
status, Bundle extras) {
}
}
public
void
getAddress() {
Geocoder geoCoder =
new
Geocoder(
this
);
double
lat = location.getLatitude();
double
lng = location.getLongitude();
List<Address> addresses =
null
;
try
{
addresses = geoCoder.getFromLocation(lat, lng,
5
);
}
catch
(IOException e) {
e.printStackTrace();
}
if
(addresses.size()>
0
){
Address mAddress = addresses.get(
0
);
String mAddressStr =
"Phone is near this address - "
+mAddress.getCountryName()+
" "
+mAddress.getPostalCode()+
" "
+mAddress.getLocality()+
" "
+mAddress.getThoroughfare()+
" "
+mAddress.getFeatureName();
Toast.makeText(getBaseContext(), mAddressStr, Toast.LENGTH_SHORT).show();
}
}
}