franzhong 2012-11-13 10:33 采纳率: 100%
浏览 3876
已采纳

Android GPS定位,得到径纬度

为什么location一直为NULL呢?由与是空
double lat = loc.getLatitude(); //径纬度也就得不到了
double lng = loc.getLongitude();

    LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);  
    String provider = LocationManager.GPS_PROVIDER;  
    Location location = locationManager.getLastKnownLocation(provider); //为null!!!

以下是取得卫星数,可以正常工作

public void onGpsStatusChanged(int event) { // GPS状态变化时的回调,如卫星数  
                LocationManager locationManager = (LocationManager) GpsActivity.this.getSystemService(Context.LOCATION_SERVICE);  
                GpsStatus status = locationManager.getGpsStatus(null); //取当前状态  
                String satelliteInfo = updateGpsStatus(event, status);
                myTextView.setText(satelliteInfo);//正常,显示:搜索到卫星个数:16
    }
    };
        private String updateGpsStatus(int event, GpsStatus status) {  
            StringBuilder sb2 = new StringBuilder("");  
            if (status == null) {  
                sb2.append("搜索到卫星个数:" +0);  
            } else if (event == GpsStatus.GPS_EVENT_SATELLITE_STATUS) {  
                int maxSatellites = status.getMaxSatellites();  
                Iterator<GpsSatellite> it = status.getSatellites().iterator();  
                numSatelliteList.clear();  
                int count = 0;  
                while (it.hasNext() && count <= maxSatellites) {  
                    GpsSatellite s = it.next();  
                    numSatelliteList.add(s);  
                    count++;  
                }  
                sb2.append("搜索到卫星个数:" + numSatelliteList.size());  
            }
            return sb2.toString();  
        }

在AVD上,这也许是好的~因为可以直接send latitiude...
谁有真机能定位的demo,室内能测最好,只需输出当前径纬度既可,感激不尽~

  • 写回答

4条回答 默认 最新

  • MrsSeven7 2012-11-14 02:15
    关注

    getLastKnownLocation()只能返回最近的GPS方位,你需要实现一个LocationListener,使用 LocationManager#requestLocationUpdates()获得新位置

    基本实现:

    public class Example extends Activity implements LocationListener {
        LocationManager mLocationManager;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    
            Location location = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
            if(location != null) {
                // 对最近的位置方位进行操作
                //  或者等待更新
            }
            else {
                mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
            }
        }
    
        @Override
        public void onLocationChanged(Location location) {
            if (location != null) {
                Log.v("Location Changed", location.getLatitude() + " and " + location.getLongitude());
            }
        }
        // ……
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退