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);
}
}
_ "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. –