Geocoding.java
import java.io.IOException;
import java.util.List;
import java.util.Locale;
import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
public class Geocoding {
private Context context;
public Geocoding(Context context){
this.context = context;
}
public String requestGPS2Address(RequestLocation requstl) {
//input is RequestLocation, output is address string
String response = "";
if (requstl.getLocation() != null) {
List<Address> addresses;
Geocoder goc = new Geocoder(context, Locale.ENGLISH);
response = "Location : \n";
response += "Latitude " + requstl.getLatitude() + "\n";
response += "Longitude " + requstl.getLongitude() + "\n\n";
try {
addresses = goc.getFromLocation(
requstl.getLatitude(),
requstl.getLongitude(),
1
);
if (addresses != null) {
Address currentAddr = addresses.get(0);
for (int i = 0; i < currentAddr.getMaxAddressLineIndex(); i++) {
response += currentAddr.getAddressLine(i) + "\n";
}
}
} catch (IOException e) {
response = e.getMessage() + " (please check your internet provider)";
}
} else {
response = "No "+requstl.getProvider()+" Signal";
}
return response;
}
}
RequestLocation.java
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
public class RequestLocation implements LocationListener {
private Location location;
private String provider;
private int TIME_FOR_UPDATE_NEW_LOCATION;
private int DISTANCE_FOR_UPDATE_NEW_LOCATION;
private LocationManager locationmanager;
public RequestLocation(LocationManager lm){
TIME_FOR_UPDATE_NEW_LOCATION = 1000; //millisecond
DISTANCE_FOR_UPDATE_NEW_LOCATION = 1; //meter
locationmanager = lm;
setAutoProvider();
setRequestLocationUpdate();
}
/* ==================== User Create Method ========================= */
public void setRequestLocationUpdate(){
locationmanager.requestLocationUpdates(
provider,
TIME_FOR_UPDATE_NEW_LOCATION,
DISTANCE_FOR_UPDATE_NEW_LOCATION,
this // this class
);
}
public void setGPSProvider(){
provider = LocationManager.GPS_PROVIDER;
location = locationmanager.getLastKnownLocation(provider);
}
public void setNetworkProvider(){
provider = LocationManager.NETWORK_PROVIDER;
location = locationmanager.getLastKnownLocation(provider);
}
public void setAutoProvider(){
if(locationmanager.isProviderEnabled(LocationManager.GPS_PROVIDER) == true){
provider = LocationManager.GPS_PROVIDER;
}else {
provider = LocationManager.NETWORK_PROVIDER;
}
location = locationmanager.getLastKnownLocation(provider);
}
public String getProvider(){
return provider;
}
public boolean isGPSTurnOn(){
return locationmanager.isProviderEnabled(provider);
}
public void setTimeForUpdateLocation(int time_is_millisecond){
TIME_FOR_UPDATE_NEW_LOCATION = time_is_millisecond;
}
public void setDistanceForUpdateLoation(int distance_is_meter){
DISTANCE_FOR_UPDATE_NEW_LOCATION = distance_is_meter;
}
public void setDistanceTimeForUpdateLocation(int distance_is_meter, int time_is_millisecond){
DISTANCE_FOR_UPDATE_NEW_LOCATION = distance_is_meter;
TIME_FOR_UPDATE_NEW_LOCATION = time_is_millisecond;
}
public Location getLocation(){
return location;
}
public double getLatitude(){
return location.getLatitude();
}
public double getLongitude(){
return location.getLongitude();
}
/* ======================= Override Method ===================== */
@Override
public void onLocationChanged(Location loc) {
if(loc!=null){
location = loc;
}
}
@Override
public void onProviderDisabled(String provider) { /* Not use */ }
@Override
public void onProviderEnabled(String provider) { /* Not use */ }
@Override
public void onStatusChanged(
String provider,
int status,
Bundle extras
) { /* Not use */ }
}
WhereisActivity.java
import android.app.Activity;
import android.content.Context;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
public class WhereisActivity extends Activity {
private RequestLocation requestl;
private Geocoding geocoding;
private TextView result_area;
private ImageButton request_button;
@Override
public void onCreate(Bundle sevedInstanceState) {
super.onCreate(sevedInstanceState);
setContentView(R.layout.whereis_activity);
result_area = (TextView) findViewById(R.id.textviewAreaResultGPS2Address);
request_button = (ImageButton) findViewById(R.id.imageButtonRequestGPS2Address);
requestl = new RequestLocation((LocationManager) getSystemService(Context.LOCATION_SERVICE));
geocoding = new Geocoding(WhereisActivity.this);
request_button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(requestl.isGPSTurnOn() == true) {
updateResult(geocoding.requestGPS2Address(requestl));
} else {
showOutputScreen("Please eneble " + requestl.getProvider() + " provider");
}
}
});
}
public void updateResult(String r) {
result_area.setText(r);
}
private void showOutputScreen(String s) {
Toast.makeText(getBaseContext(), s, Toast.LENGTH_SHORT).show();
}
}


ไม่มีความคิดเห็น:
แสดงความคิดเห็น