2014-03-27 83 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方法中。 因此,不是檢查每個提供者,而是選擇providers.get(1),它始終是字符串NETWORK。將它提供給你的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

你可以給我們提供一個線路,你從活動中調用這個服務,因爲它說它沒有空的構造函數,我的應用程序崩潰了。謝謝。 –