Android手机定位完整代码

public class LocationClient extends Activity implements LocationListener {
    private static final String TAG = LocationClient.class.getSimpleName();
    private static final String[] S = { "Out of Service",
            "Temporarily Unavailable", "Available" };

    private TextView output;
    private LocationManager locationManager;
    private String bestProvider;
    private Geocoder geocoder;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);      
        
        // Get the output UI
        output = (TextView) findViewById(R.id.output);
        
        // Get the location manager
        locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        
        geocoder = new Geocoder(this);

        // List all providers:
        List<String> providers = locationManager.getAllProviders();
        for (String provider : providers) {
            printProvider(provider);
        }
        
        System.out.print("The providers: " + providers);
        
        Criteria criteria = new Criteria();
        bestProvider = locationManager.getBestProvider(criteria, false);
        output.append("\n\nBEST Provider:\n");

        printProvider(bestProvider);

        output.append("\n\nLocations (starting with last known):");
        Location location = locationManager.getLastKnownLocation(bestProvider);
        printLocation(location);

    }
    
    /** Register for the updates when Activity is in foreground */
    @Override
    protected void onResume() {
        super.onResume();
        locationManager.requestLocationUpdates(bestProvider, 2000, 1, this);
    }

    /** Stop the updates when Activity is paused */
    @Override
    protected void onPause() {
        super.onPause();
        locationManager.removeUpdates(this);
    }

    public void onLocationChanged(Location location) {
        printLocation(location);
    }

    public void onProviderDisabled(String provider) {
        // let okProvider be bestProvider
        // re-register for updates
        output.append("\n\nProvider Disabled: " + provider);
    }

    public void onProviderEnabled(String provider) {
        // is provider better than bestProvider?
        // is yes, bestProvider = provider
        output.append("\n\nProvider Enabled: " + provider);
    }

    public void onStatusChanged(String provider, int status, Bundle extras) {
        output.append("\n\nProvider Status Changed: " + provider + ", Status="
                + S[status] + ", Extras=" + extras);
    }

    private void printProvider(String provider) {
        LocationProvider info = locationManager.getProvider(provider);
        
        Log.d(TAG, "Name:" + info.getName());
        Log.d(TAG, "Accuracy:" + info.getAccuracy());
        Log.d(TAG, "Require Cell?  " + info.requiresCell());
        Log.d(TAG, "Require Network?  " + info.requiresNetwork());
        Log.d(TAG, "Require Satellite?  " + info.requiresSatellite());
        Log.d(TAG, "Supports Altitude? " + info.supportsAltitude());
        Log.d(TAG, "Supports Bearing? " + info.supportsBearing());
        Log.d(TAG, "Supports Speed? " + info.supportsSpeed());
        Log.d(TAG, "Power requirement?" + info.getPowerRequirement());
        Log.d(TAG, "Might steal my money?"+ info.hasMonetaryCost());
        
        output.append(info.toString() + "\n\n");
    }
    
    private void printLocation(Location location){


        if (location == null)
            output.append("\nLocation[unknown]\n\n");
        else
        {        
            String text = String.format("Latitude:\t %f \nLongitude:\t %f\n Altitude:\t %f\n Bearing:\t %f\n",
                    location.getLatitude(), location.getLongitude(), location.getAltitude(), location.getBearing());
            Log.d(TAG, text);
            output.append("\n\n"+text);
        }
        
        try{
            List<Address> addresses = geocoder.getFromLocation(location.getLatitude(),
                    location.getLongitude(), 10);
            for(Address address: addresses)
            {
                output.append("\n"+ address.getAddressLine(0));
            }
            
            
        }catch(Exception e)
        {
            Log.e("WhereAmI", "Couldn't get Geocoder data", e);
        }
    }
    
}
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值