android - 如何在没有 gps 或 wifi 的情况下获取用户位置?

标签 android google-maps geolocation

如何在没有gps的情况下获取用户位置?我的意思是使用数据服务或网络。是否可以?任何人都可以提供任何示例代码来查看吗?

最佳答案

这是我现在使用的精简定位服务。 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());
    }
}

关于android - 如何在没有 gps 或 wifi 的情况下获取用户位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22690184/

相关文章:

javascript - 窗口对象中的position.coords.latitude在哪里?

android - 项目点击监听器android上的背景

android - 多次调用 setOnClickListener() 会导致意外行为

javascript - 谷歌地图 - 使 infoWindows 出现(angularjs)

android - 使用 Google Places api 获取administrative_area_level_1 ISO 代码

javascript - 自动检测位置(城市和州),并将该信息分别放入输入和选择字段中

java - 在 Intent 中添加 2 个额外内容

android - 缺少 LocationManager 所需的权限

android - Android map 的奇怪行为

javascript - jQuery 地理定位 : Cannot read property 'coords' of undefined