2017-04-07 2 views
0

Beim Testen kann ich Updates vom onStatusChanged innerhalb des IALocationListener erhalten, aber der onLocationChanged wird nicht aufgerufen. Irgendwelche Ideen, warum das so ist?onLocationChanged nicht innerhalb des IndoorAtlas Location Managers aufgerufen

Ich habe die Anweisungen von IndoorAtlas (http://docs.indooratlas.com/android/dev-guide/getting-user-location.html) sowie ein Video von YouTube (https://www.youtube.com/watch?v=2EXkV4xL5rg) gefolgt, aber immer noch nicht in der Lage, den Ort zu bekommen.

Muss ich in dem Gebiet sein, das ich kartografiert habe oder sollte es den Ort lesen, egal wo ich bin?

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

_ "Muss ich in dem Gebiet sein, das ich kartografiert habe oder sollte es den Standort lesen, egal wo ich bin?" _ Mein (vages) Verständnis der Technologie von IndoorAtlas ist, dass es nur in Bereichen funktioniert, die bereits vorhanden sind kartiert. Es kann unmöglich "überall" funktionieren, da es auf dem "magnetischen Fingerabdruck" des Gebäudes basiert und das zuerst erworben werden muss. –

Antwort

0

Here IndoorAtlas hat einige Codebeispiele für ihr SDK angegeben. Sie sollten das Problem finden können.

Verwandte Themen