2011-09-24 3 views
1

다음 작업을 수행 할 수있는 간단한 코드가 필요합니다. 다음 작업을 수행 할 수있는 함수가 필요합니다.안드로이드에서 GPS 위치에 도움이 필요합니다

  1. GPS가 활성화되어 있는지 확인하십시오. 활성화되지 않은 경우 활성화하십시오.
  2. 현재 위치 확인, 즉 경도 및 위도 확인
  3. GPS를 사용 중지합니다.

LocationListener와 같은 지속적인 위치 업데이트가 필요하지 않습니다. 15 분에 한 번만 괜찮습니다. 누구든지이 작업 코드 스 니펫을 제공 할 수 있습니까? 수 있도록 GPS를 들어

+1

AFAIK 프로그래밍 방식으로 GPS를 활성화 할 수 없습니다. LocationManager/Listener와 함께 가서 15 분으로 업데이트 간격을 설정해야합니다. – Gryphius

답변

3

:

private void turnGPSOn(){ 
     String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 

     if(!provider.contains("gps")){ //if gps is disabled 
      final Intent poke = new Intent(); 
      poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider"); 
      poke.addCategory(Intent.CATEGORY_ALTERNATIVE); 
      poke.setData(Uri.parse("3")); 
      sendBroadcast(poke); 
     } 
    } 

해제 GPS

를 들어
private void turnGPSOff(){ 
     String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 

     if(provider.contains("gps")){ //if gps is enabled 
      final Intent poke = new Intent(); 
      poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider"); 
      poke.addCategory(Intent.CATEGORY_ALTERNATIVE); 
      poke.setData(Uri.parse("3")); 
      sendBroadcast(poke); 
     } 
    } 

는 GPS가 켜져 여부를 확인하십시오.

if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
     buildAlertMessageNoGps(); 
    } 

현재 위치 확인.

public void getCurrentLocation() { 
     LocationManager locationManager; 
     String context = Context.LOCATION_SERVICE; 
     locationManager = (LocationManager) getSystemService(context); 
     Criteria crta = new Criteria(); 
     crta.setAccuracy(Criteria.ACCURACY_FINE); 
     crta.setAltitudeRequired(false); 
     crta.setBearingRequired(false); 
     crta.setCostAllowed(true); 
     crta.setPowerRequirement(Criteria.POWER_LOW); 
     String provider = locationManager.getBestProvider(crta, true); 

     locationManager.requestLocationUpdates(provider, 1000, 0, 
       new LocationListener() { 
        @Override 
        public void onStatusChanged(String provider, int status, 
          Bundle extras) { 
        } 

        @Override 
        public void onProviderEnabled(String provider) { 
        } 

        @Override 
        public void onProviderDisabled(String provider) { 
        } 

        @Override 
        public void onLocationChanged(Location location) { 
         if (location != null) { 
          double lat = location.getLatitude(); 
          double lng = location.getLongitude(); 
          if (lat != 0.0 && lng != 0.0) { 
           System.out.println("WE GOT THE LOCATION"); 
           System.out.println(lat); 
           System.out.println(lng); 
           getAddress();       
          } 
         } 

        } 

       }); 
    } 
+0

안녕 님, 고맙습니다. 세부 코드를 제공해 주셔서 대단히 감사합니다. 내가 자바에 익숙하지 않은만큼, 나는 그것이 활동, 서비스 또는 방송 수신기와 같은 다른 부모 클래스에서 확장하여 안드로이드에서 자바 클래스를 만드는 것이 가능하다는 것을 알고 싶다. 위의 모든 메서드가 포함될 간단한 Java 클래스가 필요하며 다른 활동이나 클래스의 메서드를 호출합니다. 위의 코드를 간단한 자바 클래스에 저장하고 "import android.provider.Settings"를 가져 왔지만 여전히 "getContentResolver()"에 대한 오류가 표시됩니다. 이걸 도와 줄래? –

관련 문제