`
y150988451
  • 浏览: 194936 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

android GPS定位,定位城市称,经纬度

阅读更多
package com.test;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.location.Address;
import android.location.Criteria;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.provider.Settings;
import android.widget.TextView;
import android.widget.Toast;

import java.io.IOException;
import java.util.List;

public class Test2 extends Activity {

    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        openGPSSettings();
       
    }
    
    private void openGPSSettings() {
        LocationManager alm = (LocationManager) this
                .getSystemService(Context.LOCATION_SERVICE);
        if (alm
                .isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) {
            Toast.makeText(this, "GPS模块正常", Toast.LENGTH_SHORT)
                    .show();
            doWork();
            return;
        }

        Toast.makeText(this, "请开启GPS!", Toast.LENGTH_SHORT).show();
        Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS);
        startActivityForResult(intent,0); //此为设置完成后返回到获取界面

    }
    
    private void doWork() {
        String msg = "";
        TextView textView = (TextView) findViewById(R.id.tv1);

        LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        Criteria criteria = new Criteria();
        // 获得最好的定位效果
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(false);
        // 使用省电模式
        criteria.setPowerRequirement(Criteria.POWER_LOW);
        // 获得当前的位置提供者
        String provider = locationManager.getBestProvider(criteria, true);
        // 获得当前的位置
        Location location = locationManager.getLastKnownLocation(provider);
        
        
        Geocoder gc = new Geocoder(this); 
        List<Address> addresses = null;
        try {
            addresses = gc.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } if (addresses.size() > 0) { 
        msg += "AddressLine:" + addresses.get(0).getAddressLine(0)+ "\n"; 
        msg += "CountryName:" + addresses.get(0).getCountryName()+ "\n"; 
        msg += "Locality:" + addresses.get(0).getLocality() + "\n"; 
        msg += "FeatureName:" + addresses.get(0).getFeatureName(); 
        } 
        textView.setText(msg);
    }

}

 

Manifest 权限:

 

	<uses-permission android:name="android.permission.INTERNET" /> 
	<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
	<uses-permission android:name="android.permission.ACCESS_FIND_LOCATION" />
	<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
 
分享到:
评论
5 楼 sarah_susan 2012-04-23  
我想说的是: 真机测试的时候,addresses = gc.getFromLocation(location.getLatitude(), location.getLongitude(), 1);   这句话执行的结果为null。真心头疼,不知道怎么办,求解。
4 楼 wangjunjunwangjunjun 2012-03-16  
写出的代码不能运行,为什么啊?
3 楼 AndMacLinuXp 2011-12-04  
liang86liang 写道
Criteria criteria = new Criteria();  
        // 获得最好的定位效果  
        criteria.setAccuracy(Criteria.ACCURACY_FINE);  
        criteria.setAltitudeRequired(false);  
        criteria.setBearingRequired(false);  
        criteria.setCostAllowed(false);  
        // 使用省电模式  
        criteria.setPowerRequirement(Criteria.POWER_LOW);  
        // 获得当前的位置提供者  
        String provider = locationManager.getBestProvider(criteria, true);

为什么我的provider为null呢????????????



有的手机 criteria.setAccuracy(Criteria.ACCURACY_FINE);对于这个设置是不行的,比如nexus s。你试试 criteria.setAccuracy(Criteria.ACCURACY_COARSE);
2 楼 jmshx8 2011-09-13  
这种方法在2.2以上的版本就显示不出地址了
1 楼 liang86liang 2011-08-23  
Criteria criteria = new Criteria();  
        // 获得最好的定位效果  
        criteria.setAccuracy(Criteria.ACCURACY_FINE);  
        criteria.setAltitudeRequired(false);  
        criteria.setBearingRequired(false);  
        criteria.setCostAllowed(false);  
        // 使用省电模式  
        criteria.setPowerRequirement(Criteria.POWER_LOW);  
        // 获得当前的位置提供者  
        String provider = locationManager.getBestProvider(criteria, true);

为什么我的provider为null呢????????????

相关推荐

Global site tag (gtag.js) - Google Analytics