Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用谷歌Play服务和Wifi/数据网络的Android GPS定位_Java_Android_Gps_Google Play Services - Fatal编程技术网

Java 使用谷歌Play服务和Wifi/数据网络的Android GPS定位

Java 使用谷歌Play服务和Wifi/数据网络的Android GPS定位,java,android,gps,google-play-services,Java,Android,Gps,Google Play Services,我们实际上正在开发一个应用程序,我们需要在其中确定我们当前的移动位置 阅读文档后,Google Play服务似乎是处理此问题的更好方法,而不是使用旧的LocationManager 问题 即使我们在清单中指定了不同的访问权限,我们也不可能通过WIFI或网络数据获取位置。事实上,最后一个已知的位置总是空的 另一方面,如果我们激活GPS,最后一个位置就是好位置 代码 清单包含: 活动: 我们是否在这段代码中遗漏了从各个方面管理当前职位的内容 感谢您的帮助检查设置->位置->开/关我们是否遗漏了什么?

我们实际上正在开发一个应用程序,我们需要在其中确定我们当前的移动位置

阅读文档后,Google Play服务似乎是处理此问题的更好方法,而不是使用旧的LocationManager

问题

即使我们在清单中指定了不同的访问权限,我们也不可能通过WIFI或网络数据获取位置。事实上,最后一个已知的位置总是空的

另一方面,如果我们激活GPS,最后一个位置就是好位置

代码

清单包含:

活动:

我们是否在这段代码中遗漏了从各个方面管理当前职位的内容


感谢您的帮助

检查设置->位置->开/关我们是否遗漏了什么?是的,FusedLocationApi.getLastLocation的文档部分提到它可以返回null。。。事实上,它很少*返回null。当GPS激活时,它不会返回空值。它只返回空值,每次使用Wifi或移动数据时,您是否有互联网?
<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.NFC" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CAMERA" />

    <uses-feature android:name="android.hardware.camera" />
    <!--
     The following two permissions are not required to use
     Google Maps Android API v2, but are recommended.
    -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
public class GoogleLocationService implements
        GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {

    private GoogleApiClient mGoogleApiClient;
    private Activity mActivity;
    private Location mLastLocation;
    private boolean mResolvingError;

    public GoogleLocationService(Activity mActivity) {
        this.mActivity = mActivity;
        this.mResolvingError = false;
    }

    public synchronized void buildGoogleApiClient() {
        mGoogleApiClient = new GoogleApiClient.Builder(mActivity)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(LocationServices.API)
                .build();
    }

    @Override
    public void onConnected(Bundle connectionHint) {
        mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
                mGoogleApiClient);
        Log.e("mLastLocation", mLastLocation + "");
        if (mLastLocation != null) {
            Log.e("lat/lng", mLastLocation.getLatitude() + " " + mLastLocation.getLongitude() + "");
        }
    }

    @Override
    public void onConnectionSuspended(int i) {

    }

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) {
        if (mResolvingError) {
            // Already attempting to resolve an error.
            return;
        } else if (connectionResult.hasResolution()) {
            try {
                mResolvingError = true;
                connectionResult.startResolutionForResult(mActivity, 1001);
            } catch (IntentSender.SendIntentException e) {
                // There was an error with the resolution intent. Try again.
                mGoogleApiClient.connect();
            }
        } else {
            // Show dialog using GooglePlayServicesUtil.getErrorDialog()
            Log.e("GoogleLocationService", connectionResult.getErrorCode() + "");
            mResolvingError = true;
        }
    }

    public boolean ismResolvingError() {
        return mResolvingError;
    }

    public void setmResolvingError(boolean mResolvingError) {
        this.mResolvingError = mResolvingError;
    }

    public GoogleApiClient getmGoogleApiClient() {
        return mGoogleApiClient;
    }

    public void setmGoogleApiClient(GoogleApiClient mGoogleApiClient) {
        this.mGoogleApiClient = mGoogleApiClient;
    }

    public Location getmLastLocation() {
        return mLastLocation;
    }

    public void setmLastLocation(Location mLastLocation) {
        this.mLastLocation = mLastLocation;
    }
}
 @Override
    protected void onStart() {
        super.onStart();
        if (!mServiceGoogle.ismResolvingError()) {  // more about this later
            mServiceGoogle.getmGoogleApiClient().connect();
        }
    }

    @Override
    protected void onStop() {
        mServiceGoogle.getmGoogleApiClient().disconnect();
        super.onStop();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_position);


        mServiceGoogle = new GoogleLocationService(this);
        mServiceGoogle.buildGoogleApiClient();

    }