2017-04-07 64 views
0

内测试时,我能够从IALocationListener内onStatusChanged接收更新,但onLocationChanged不会被调用。任何想法,为什么这是?onLocationChanged不被称为IndoorAtlas位置管理

我遵照IndoorAtlas(http://docs.indooratlas.com/android/dev-guide/getting-user-location.html)的指示以及YouTube的视频(https://www.youtube.com/watch?v=2EXkV4xL5rg),但仍无法获取位置信息。

我必须在我已映射或应该不管我在哪里读的位置区域?

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); 
    } 
} 
+0

_“我必须在我已映射或应该不管我在哪里读的位置?区域” _我的(模糊)的IndoorAtlas'技术的理解是,它只能在那些已经区映射。它不可能工作的“无处不在”,因为它是根据建筑物的“磁指纹”,而且需要先收购。 –

回答

0

Here IndoorAtlas给出了他们SDK的一些代码示例。你应该能够找到问题。