Java onLocationChanged未在Indooralas位置管理器中调用

Java onLocationChanged未在Indooralas位置管理器中调用,java,android,geolocation,on-location-changed,Java,Android,Geolocation,On Location Changed,测试时,我能够从IALocationListener中的onStatusChanged接收更新,但不会调用onLocationChanged。你知道为什么会这样吗 我已经按照IndoorAtlas()的说明以及YouTube()的视频进行了操作,但仍然无法获得位置 我是否必须在我绘制的区域内,或者无论我在哪里,它都应该读取位置 package com.bignerdranch.android.indoormapping; import android.Manifest; import andr

测试时,我能够从IALocationListener中的onStatusChanged接收更新,但不会调用onLocationChanged。你知道为什么会这样吗

我已经按照IndoorAtlas()的说明以及YouTube()的视频进行了操作,但仍然无法获得位置

我是否必须在我绘制的区域内,或者无论我在哪里,它都应该读取位置

package com.bignerdranch.android.indoormapping;

import android.Manifest;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.os.Bundle;
import android.util.Log;

import com.indooratlas.android.sdk.IALocation;
import com.indooratlas.android.sdk.IALocationListener;
import com.indooratlas.android.sdk.IALocationManager;
import com.indooratlas.android.sdk.IALocationRequest;

public class MappingActivity extends FragmentActivity {

    private final int CODE_PERMISSIONS = 0;
    private IALocationManager mIALocationManager;
    private static final String TAG = "LocateActivity";

    private IALocationListener mIALocationListener = new IALocationListener() {
        @Override
        public void onLocationChanged(IALocation iaLocation) {
            Log.d(TAG, "Latitude: " + iaLocation.getLatitude());
        }

        @Override
        public void onStatusChanged(String s, int i, Bundle bundle) {

        }
    };

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

        mIALocationManager = IALocationManager.create(this);



        // request permissions for coarse location and Wifi
        String[] neededPermissions = {
                Manifest.permission.CHANGE_WIFI_STATE,
                Manifest.permission.ACCESS_WIFI_STATE,
                Manifest.permission.ACCESS_COARSE_LOCATION
        };
        ActivityCompat.requestPermissions( this, neededPermissions, CODE_PERMISSIONS );

        FragmentManager fm = getSupportFragmentManager();
        Fragment fragment = fm.findFragmentById(R.id.fragment_cont);

        if(fragment == null) {
            fragment = new MappingFragment();
            fm.beginTransaction()
                    .add(R.id.fragment_cont, fragment)
                    .commit();
        }
    }

    // handle any permissions that are denied
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }

    @Override
    public void onResume() {
        super.onResume();
        mIALocationManager.requestLocationUpdates(IALocationRequest.create(), mIALocationListener);
    }

    @Override
    public void onPause() {
        super.onPause();
        mIALocationManager.removeLocationUpdates(mIALocationListener);
    }
}
Indoratalas给出了一些SDK的代码示例。您应该能够找到问题。

“我必须在我已绘制的区域内,还是无论我在哪里,它都应该读取位置?”我(模糊)对IndoorAtlas技术的理解是,它只适用于已绘制的区域。它不可能在“任何地方”都能工作,因为它是基于建筑物的“磁指纹”,需要先获取。