Open FabinMVarghese opened 6 years ago
I am getting the following errors.
02-03 16:12:32.540 2043-2043/com.sangamone.indoorlocation.indoordemo4 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.sangamone.indoorlocation.indoordemo4, PID: 2043 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sangamone.indoorlocation.indoordemo4/com.sangamone.indoorlocation.indoordemo4.MainActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'void com.estimote.indoorsdk_module.algorithm.ScanningIndoorLocationManager.startPositioning()' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2724) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2785) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1532) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:163) at android.app.ActivityThread.main(ActivityThread.java:6342) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:880) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770) Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void com.estimote.indoorsdk_module.algorithm.ScanningIndoorLocationManager.startPositioning()' on a null object reference at com.sangamone.indoorlocation.indoordemo4.MainActivity.onStart(MainActivity.java:78) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1249) at android.app.Activity.performStart(Activity.java:6873) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2687) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2785) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1532) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:163) at android.app.ActivityThread.main(ActivityThread.java:6342) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:880) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)
Following is my updated code,
package com.sangamone.indoorlocation.indoordemo4;
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log;
import com.estimote.indoorsdk.IndoorLocationManagerBuilder; import com.estimote.indoorsdk_module.algorithm.OnPositionUpdateListener; import com.estimote.indoorsdk_module.algorithm.ScanningIndoorLocationManager; import com.estimote.indoorsdk_module.cloud.CloudCallback; import com.estimote.indoorsdk_module.cloud.EstimoteCloudException; import com.estimote.indoorsdk_module.cloud.IndoorCloudManager; import com.estimote.indoorsdk_module.cloud.IndoorCloudManagerFactory; import com.estimote.indoorsdk_module.cloud.Location; import com.estimote.indoorsdk_module.cloud.LocationPosition; import com.estimote.indoorsdk_module.view.IndoorLocationView; import com.estimote.internal_plugins_api.cloud.CloudCredentials; import com.estimote.cloud_plugin.common.EstimoteCloudCredentials;
public class MainActivity extends AppCompatActivity {
IndoorLocationView indoorLocationView;
Location loc;
ScanningIndoorLocationManager indoorLocationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
indoorLocationView = (IndoorLocationView) findViewById(R.id.indoor_view);
//indoorLocationView.setLocation(location);
final CloudCredentials cloudCredentials = new EstimoteCloudCredentials("sangamoneindoor-jsm", "8c2be70b812ee53f08b6dd9a965cf010");
IndoorCloudManager cloudManager = new IndoorCloudManagerFactory().create(this, cloudCredentials);
cloudManager.getLocation("location2-9wk", new CloudCallback<Location>() {
@Override
public void success(Location location) {
// do something with your Location object here.
// You will need it to initialise IndoorLocationManager!
indoorLocationView = (IndoorLocationView) findViewById(R.id.indoor_view);
indoorLocationView.setLocation(location);
loc = location;
Log.d("locationlocation", "" + location);
indoorLocationManager =
new IndoorLocationManagerBuilder(getApplicationContext(), location, cloudCredentials)
.withDefaultScanner()
.build();
indoorLocationManager.setOnPositionUpdateListener(new OnPositionUpdateListener() {
@Override
public void onPositionUpdate(LocationPosition locationPosition) {
indoorLocationView.updatePosition(locationPosition);
}
@Override
public void onPositionOutsideLocation() {
indoorLocationView.hidePosition();
}
});
}
@Override
public void failure(EstimoteCloudException e) {
// oops!
}
});
}
@Override
protected void onStart() {
super.onStart();
indoorLocationManager.startPositioning();
}
@Override
protected void onStop() {
super.onStop();
}
}
Prerequisites
Basic information
Estimote SDK version: [indoorsdk:2.0.1]
Android devices affected: [Redmi Note $]
Android OS version affected: [Android OS version (Nougat 7.0.0)]
Beacon hardware version: [F3.3]
Description
[My Indoor Location app is crashing while running. I want to pass location Id and display the location according to the location id.]
Steps to reproduce:
Expected behavior: [ My current indoor location]
Actual behavior: [ App is crashing without loading anything]
(Optional) Additional information
I am copying my code below.
import android.support.v7.app.AppCompatActivity; import android.os.Bundle;
import com.estimote.cloud_plugin.common.EstimoteCloudCredentials; import com.estimote.indoorsdk.IndoorLocationManagerBuilder; import com.estimote.indoorsdk_module.algorithm.IndoorLocationManager; import com.estimote.indoorsdk_module.algorithm.OnPositionUpdateListener; import com.estimote.indoorsdk_module.algorithm.ScanningIndoorLocationManager; import com.estimote.indoorsdk_module.cloud.CloudCallback; import com.estimote.indoorsdk_module.cloud.EstimoteCloudException; import com.estimote.indoorsdk_module.cloud.IndoorCloudManager; import com.estimote.indoorsdk_module.cloud.IndoorCloudManagerFactory; import com.estimote.indoorsdk_module.cloud.Location; import com.estimote.indoorsdk_module.cloud.LocationPosition; import com.estimote.indoorsdk_module.view.IndoorLocationView;
public class MainActivity extends AppCompatActivity { public IndoorLocationManager indoorLocationManager; public Location location; IndoorLocationView indoorView;
}