String context = Context.LOCATION_SERVICE;
  locationManager = (LocationManager)getSystemService(context);
        //GPS 환경설정
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE);       // 정확도
        criteria.setPowerRequirement(Criteria.POWER_LOW);   // 전원 소비량
        criteria.setAltitudeRequired(false);                // 고도, 높이 값을 얻어 올지를 결정
        criteria.setBearingRequired(false);                 // provider 기본 정보
        criteria.setSpeedRequired(false);                   //속도
        criteria.setCostAllowed(true);                      //위치 정보를 얻어 오는데 들어가는 금전적 비용

 


//  String provider = locationManager.getBestProvider(criteria,true);
  Log.d("taekwon", "AAAA");
 //       if(provider==null){//GPS 장치가 없는 휴대폰이거나 설정이 꺼져있는 경우 바로 alert 처리하거나 GPS 설정으로 이동        
        if(!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){//GPS 장치가 없는 휴대폰이거나 설정이 꺼져있는 경우 바로 alert 처리하거나 GPS 설정으로 이동
            result1 = chkGpsService();
      Log.d("taekwon", "XXXXXX");           
            if(result1){
             WhereAmI();
            }
             
        }else{
         provider = locationManager.getBestProvider(criteria, true);
         Location location2 = locationManager.getLastKnownLocation(provider);
         Log.d("taekwon", provider);
         if(location2 == null){
          Log.d("taekwon", "EEEEEEEEEEEEEEEEEEEE1111111111");
          location2 = locationManager.getLastKnownLocation(provider);
          if(location2 == null){
           Log.d("taekwon", "EEEEEEEEEEEEEEEEEEEE2222222222222");
          }
         }else{  
          locationManager.requestLocationUpdates(provider, 1000, 2, loclistener);
          Log.d("taekwon", "44444444444444444");
          
          double lat = location2.getLatitude();
          Log.d("taekwon", "000000000000000000");  
          double lng = location2.getLongitude();
          temp = "위도"+lat+"경도"+lng;
          Log.d("JJU", temp);
          xxxxx = Double.valueOf(location2.getLatitude()*1E6).intValue();
          yyyyy = Double.valueOf(location2.getLongitude()*1E6).intValue();
          Log.d("taekwon", "5555555555555555");
          KEViewMap(xxxxx, yyyyy, "내위치");
         }

 

해당 소스는 이렇습니다.

그런데...

         provider = locationManager.getBestProvider(criteria, true);
         Location location2 = locationManager.getLastKnownLocation(provider);
         Log.d("taekwon", provider);

이부분에서 provider는 GPS가 찍히는데.

GPS도 켜져있구요.

왜 location2가 null일 까요... ㅠㅠ

 

getLastKnownLocation가 원래 gps에 저장된 마지막 값을 가지고 온다는 것을 알았는데요(전원이 리셋되면 사라짐)

전원을 리셋한후

이때 아무리 실행 시켜도 최초gps 값이 없어서 계속 null을 반환하는데요.

그럼 gps가 켜진 상태에서 최초의 값을 가지고 오는거는 어떻게 해야 하는건가요.