2014-03-27 3 views
1

gps없이 사용자 위치를 얻는 방법은 무엇입니까? 데이터 서비스 나 네트워크를 사용한다는 의미입니다. 가능한가? 누구든지 그것에 어떤 샘플 코드를 주시겠습니까?gps 또는 wifi없이 사용자 위치를 얻는 방법?

+0

어떻게 https://developer.android.com/training/location/retrieve-current.html –

+0

에 대해 인터넷에 대한 예제가 많이 있습니다. Google에서 검색하십시오. – Sunny

+0

나는 거기에 갔다. 그러나 나는 나의 대답을 얻을 수 없었다. 도움을 청하는 것. –

답변

1

에서 더 많은 데이터를 보이는 읽을 수 있습니다. 이 맥락에서 GPS와 네트워크를 프로 바이더라고 부릅니다.

내 로직이 작동하는 방식을 변경했으며, 활성화 된 공급자를 확인한 다음 사용 가능한 최상의 (GPS가 네트워크보다 좋음) 문자열을이 행에 반환합니다. String providerToSend = providers.get (1) ;, GetProvider 메서드에서. 그래서 각 공급자를 검사하는 대신에이 방법은 항상. NETWORK 문자열 인 providers.get (1)을 선택합니다. 귀하의 locationManager.getLastKnownLocation (TheStringWithTheCorrectProviderGoesHere)에 피드를 보내면 귀하의 위치가 반환됩니다.

import android.app.Service; 
import android.content.Context; 
import android.content.Intent; 
import android.location.Criteria; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.os.IBinder; 
import android.util.Log; 

import java.util.List; 


public class LocationService extends Service implements LocationListener{ 

    protected LocationManager locationManager; 

    public String providerNow; 
    private List<String> providers; 

    public Location location; 
    private final Context mContext; 


    public LocationService(Context context) { 
     Log.i("TestMap", "LocationService"); 


     this.mContext = context; 

     locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE); 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,0,this); 
     locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,1000,0,this); 

     providerNow = (GetProvider()); 
    } 



    public Location getLocation() { 

     location = locationManager.getLastKnownLocation(providerNow); 
     return location; 
    } 


    public String GetProvider(){ 

     Criteria criteria = new Criteria(); 
     criteria.setAccuracy(2); 

     providers = locationManager.getProviders(true); 
     String providerToSend = providers.get(1); 

     return providerToSend; 

    } 

    public IBinder onBind(Intent intent) { 
     Log.i("TestMap", "onBind"); 
     //TODO for communication return IBinder implementation 
     return null; 
    } 


    public void onLocationChanged(Location location) { 

     Location locationNew = location; 
    } 

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

    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     providerNow = (GetProvider()); 
    } 

    @Override 
    public void onProviderDisabled(String provider) { 
     providerNow = (GetProvider()); 
    } 
} 
+0

고맙습니다. 알았다. –

+0

빈 생성자가없고 내 응용 프로그램이 작동하지 않는다는 이유로이 서비스를 활동에서 호출 한 행을 제공해 주실 수 있습니까? 고맙습니다. –

관련 문제