2012-03-29 2 views
0

업데이트 2 : 나는 외부이고 GPS_PROVIDER의 신호를 얻었다 후 문제가 지금은 위치 수정을 얻기 위해 더 이상 문제가되지 가지고갤럭시 탭 - 네트워크 또는 수동 제공에 응용 GET의 어떤 GPS 위치

를 해결 NETWORK_PROVIDER ....

Google지도 앱이 수정되기 전에 수정 사항을 얻을 수 있었지만 내 앱이 아니란 이유는 아직 알지 못합니다. 은하계 탭) 나는 행복합니다.)


업데이트 : thread title chang 게시물의 하단에있는 수정을 참조하십시오.

난 그냥 은하 탭에서 GPS-위치를 얻기 위해이 튜토리얼 (http://www.firstdroid.com/2010/04/29/android-development-using-gps-to-get-current-location-2/)을 시도했지만 내가 어떤 위치를 얻을하지 않습니다는 ....

나는 이미 다른 공급자를 사용하려하지만이되지 않습니다 도와주세요 (GPS_PROVIDER, NETWORK_PROVIDER, PASSIVE_PROVIDER).

이상한 일은 공식 Google지도 앱으로 위치를 얻는 것입니다. : \

의 AndroidManifest.xml의 권한은 다음과 같이 설정됩니다

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

이 사람이 왜 내 응용 프로그램의 GET의 어떤 위치를 알고하지 않습니다?

편집 : 나는 외부 오전 때 나는 수정을 얻을 GPS 제공자와

. 하지만 왜 NETWORK_PROVIDER 또는 PASSIVE_PROVIDER가 없는지 이해할 수 없습니다.

GPS를 사용할 수없는 경우 어떤 제공 업체가 Google지도 앱을 사용하나요?

편집 2 :

코드 (이 약간 변경 위의 튜토리얼에서의) :

package Firstdroid.Tutorial.Gps; 

import android.app.Activity; 
import android.content.Context; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.widget.Toast; 

public class UseGps extends Activity { 

    /** Called when the activity is first created. */ 

    @Override 
    public void onCreate(Bundle savedInstanceState) 

    { 

     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main); 

     Toast.makeText(getApplicationContext(), "Application started", Toast.LENGTH_SHORT).show(); 

     /* Use the LocationManager class to obtain GPS locations */ 

     LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     LocationListener mlocListener = new MyLocationListener(); 

     // here I choose the location provider: 
     mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener); // <--- 

    } 

    /* Class My Location Listener */ 

    public class MyLocationListener implements LocationListener { 

     @Override 
     public void onLocationChanged(Location loc) { 

      loc.getLatitude(); 

      loc.getLongitude(); 

      String Text = "My current location is: " + 

      "Latitude = " + loc.getLatitude() + 

      "Longitude = " + loc.getLongitude() + " (PROVIDER: " + loc.getProvider() + ")"; 

      Toast.makeText(getApplicationContext(), Text, Toast.LENGTH_SHORT).show(); 

     } 

     @Override 
     public void onProviderDisabled(String provider) { 

      Toast.makeText(getApplicationContext(), "Gps Disabled", Toast.LENGTH_SHORT).show(); 

     } 

     @Override 
     public void onProviderEnabled(String provider) { 

      Toast.makeText(getApplicationContext(), 

      "Gps Enabled", Toast.LENGTH_SHORT).show(); 

     } 

     @Override 
     public void onStatusChanged(String provider, int status, Bundle extras) { 

     } 

    }/* End of Class MyLocationListener */ 

}/* End of UseGps Activity */ 
+0

locationListener 등을 설정할 위치에 코드를 게시 할 수 있습니까? 또한, 귀하가 벌금을 요청하면 거칠게 요청할 필요가 없습니다. 네트워크 및 GPS 공급자 모두 훌륭하게 처리합니다. – Kevin

+0

안녕하세요, 저는 당신의 의견을 보았습니다. 그래서 GPS_PROVIDER는 작동하지만 NETWORK_PROVIDER 또는 PASSIVE_PROVIDER가 작동하지 않는다는 것을 이해하지 못합니다. 아, 첫 번째 게시물에 코드를 추가하겠습니다. – LittleJohn

답변

0

당신의 갤럭시 탭은 3G 라디오가 네트워크에 연결되어 있습니까? 그렇지 않으면 network_provider 위치를 얻지 못할 것입니다.

또한 두 개의 추가 loc.getLatitude 및 loc.getLongitude 호출이 필요 없지만 변수를 설정하고 출력 메시지에서 변수를 사용하는 것이 좋습니다. 이제 GPSData.getLatitude() 등을 호출하여 필요한 값을 얻을 수 있습니다.

public class GPSData { 
    private static double latitude; 
    /** 
    * @return the latitude 
    */ 
    public static double getLatitude() { 
     return latitude; 
    } 

    /** 
    * @param latitude the latitude to set 
    */ 
    public static void setLatitude(double l) { 
     latitude = l; 
    } 

    private static double longitude; 
    /** 
    * @return the longitude 
    */ 
    public static double getLongitude() { 
     return longitude; 
    } 

    /** 
    * @param d the longitude to set 
    */ 
    public static void setLongitude(double d) { 
     longitude = d; 
    } 

    private static float accuracy; 
    /** 
    * @return the accuracy 
    */ 
    public static float getAccuracy() { 
     return accuracy; 
    } 

    /** 
    * @param f the accuracy to set 
    */ 
    public static void setAccuracy(float f) { 
     accuracy = f; 
    } 

    //Altitude is in feet 
    private static double altitude; 

    public static void setAltitude (double a) { 
     altitude = a; 
    } 

    public static double getAltitude() { 
     return altitude; 
    } 


    /** 
    * New location listener to be instantiated for getting locational data 
    * 
    */ 
    public static class MyLocationListener implements LocationListener { 
     public void onLocationChanged(Location location) { 
      setAccuracy(location.getAccuracy()); 
      setLongitude(location.getLongitude()); 
      setLatitude(location.getLatitude()); 
      //Altitude is in feet 
      setAltitude(location.getAltitude()); 
     } 

     @Override 
     public void onProviderDisabled(String provider) { 

     } 

     @Override 
     public void onProviderEnabled(String provider) { 

     } 

     @Override 
     public void onStatusChanged(String provider, int status, Bundle extras) { 

     } 
    } 
} 
+0

오 시뮬레이션 카드가 전혀 없습니다. 위치가 결정될 수있는 유일한 것은 내가 생각하기에 연결된 무선 랜입니다. Google지도 앱이 위치 수정을 얻지 못한다면 이렇게 많이 놀라지 않을 것이라고 말한 것처럼 ... : \ – LittleJohn

+0

그런 이유가 있습니다. =) 가능한 경우 내 대답을 수락하십시오.이를 해결 된 것으로 표시하십시오. – Kevin

+0

안녕하세요, 저는 ENTER에서 accidendtly했습니다. 너무 일찍 내 게시물을 보냈습니다.) 일부 텍스트를 추가했습니다 ... 그래서 나는 해결 된 것으로서 태그를 붙였습니다. 그러나 Google에서 위치를 얻었 기 때문에 저에게 해결되지 않았습니다. 지도 그래서 내 애플 리케이션에 가능해야합니다 너무 또는 아닙니다? – LittleJohn