android 百度map如何获取不到GPS定位

android 百度地图怎么获取不到GPS定位LocationManager locationManager22 String serviceName Context.

android 百度地图怎么获取不到GPS定位
   LocationManager locationManager22 ;
        String serviceName = Context.LOCATION_SERVICE;
        locationManager22 = (LocationManager) BaiduActivity.this.getSystemService(serviceName);// 查找到服务信息
 
        String provider=LocationManager.GPS_PROVIDER;
        Location location1 = locationManager22.getLastKnownLocation(provider); // 通过GPS获取位置
        
        try{
        String ss=location1.toString();
        Toast.makeText(this, ss, Toast.LENGTH_SHORT).show();}
        catch(Exception es)
        {
        Toast.makeText(this, "获取不到", Toast.LENGTH_SHORT).show();
        }


每次运行都显示获取不到,请问是什么原因啊 !请大神指导! Android GPS 百度地图
[解决办法]
前提:如果你的GPS开了的话  那么可能是如下原因
因为getLastKnownLocation方法获取的是上一次已知的位置
  但是你的apk运行的时候 从来没有获取位置数据 所以每次运行都获取不到数据 每次location都是为Null

解决办法:使用new LocationListener()接口
locationManager.requestLocationUpdates(locationprovider, 2000, 2, listener); //注册监听位置改变
然后再 location=locationManager.getLastKnownLocation(locationprovider);
就可以获取数据了
[解决办法]
你的设备有没有GPS模块
[解决办法]

引用:
   LocationManager locationManager22 ;
        String serviceName = Context.LOCATION_SERVICE;
        locationManager22 = (LocationManager) BaiduActivity.this.getSystemService(serviceName);// 查找到服务信息
 
        String provider=LocationManager.GPS_PROVIDER;
        Location location1 = locationManager22.getLastKnownLocation(provider); // 通过GPS获取位置
        
        try{
        String ss=location1.toString();
        Toast.makeText(this, ss, Toast.LENGTH_SHORT).show();}
        catch(Exception es)
        {
        Toast.makeText(this, "获取不到", Toast.LENGTH_SHORT).show();
        }


每次运行都显示获取不到,请问是什么原因啊 !请大神指导!



模拟器么?
------解决方案--------------------


引用:
   private void getLocation(){ // 获取位置管理服务
   
    LocationManager locationManager22 ;
        String serviceName = BaiduActivity.LOCATION_SERVICE;
        locationManager22 = (LocationManager)BaiduActivity.this.getSystemService(serviceName);      // 查找到服务信息
        
          String provider=LocationManager.GPS_PROVIDER;    //指定用GPS查询服务        
          //设置监听器,自动更新的最小时间为间隔2秒或最小位移变化超过2米
          locationManager22.requestLocationUpdates(provider, 2000, 2, ll);
   
       try{
      
       Location location1 = locationManager22.getLastKnownLocation(provider); // 通过GPS获取位置       
       int lng = (int) (location1.getLongitude() * 1E6);
        Toast.makeText(this, lng, Toast.LENGTH_SHORT).show();
//           center = new GeoPoint(lat, lng);
       }
       catch(Exception es)
       {
       Toast.makeText(this, "出现未知错误,获取当前位置不到", Toast.LENGTH_SHORT).show();
       }
   
    }
  
    
    //创建位置监听器
   // LocationListener 
    private LocationListener ll = new LocationListener(){
        //位置发生改变时调用       
        public void onLocationChanged(Location location) {  
            center = new GeoPoint((int) (location.getLatitude() * 1e6),
                    (int) (location.getLongitude() * 1e6));            
        }

        //provider失效时调用         
        public void onProviderDisabled(String provider) {
            Log.d("Location", "onProviderDisabled");
            System.out.print("wwwww");
        }

        //provider启用时调用       
        public void onProviderEnabled(String provider) {
            Log.d("Location", "onProviderEnabled");
            System.out.print("eeeee");


        }
       
        //状态改变时调用           
        public void onStatusChanged(String provider, int status, Bundle extras) {
            Log.d("Location", "onStatusChanged");
            System.out.print("rrrr");
        }
    };

是这样吗?可是还是没用?是什么原因,我是刚接触的所以很笨。麻烦指点一下。 




你要注意了 你的位置在改变之后  
但是你的Location location1 = locationManager22.getLastKnownLocation(provider); // 通过GPS获取位置   
只运行了一次 就是说 即使 public void onLocationChanged(Location location) {  
            center = new GeoPoint((int) (location.getLatitude() * 1e6),
                    (int) (location.getLongitude() * 1e6));            
        }
执行了之后 但是你的location1 还是为空的 所以获取不到数据
你可以在public void onLocationChanged(Location location) {  
           location1=location;
           //然后再来显示你的位置
        }
[解决办法]
我按照百度给的demo写的一模一样,结果我这里报错,是一个jar出的问题,但是那个jar是百度自己提供的,并且在他们提供的demo里没问题,就是不知道为啥到我这里不行。
[解决办法]
百度API的首页有那个定位的SDK,并且头DEMO示例的程序!
[解决办法]
还有,如果是地图服务是要申请密匙的,如果只是定位SDK则不需要!
[解决办法]
先自己随便赋值一个location初始化一下,后续定到位了,再更新显示,试试。
[解决办法]
怎么我记得,最新版的定位不是这样的,??定位,只要你定位功能逻辑开了,,然后GPS硬件开了的话,它会自动去识别的
[解决办法]
可以用百度定位 lib库定位。