AltBeacon 应用程序在 Android 选项卡上崩溃
AltBeacon application crashes on Android tab
我一直在尝试使用 AltBeacon 监控示例代码来监控我的 Kontakt.io 信标,如 http://altbeacon.github.io/android-beacon-library/samples.html 此处所述。我可以在我的android工作室(1.0.2)中导入库(android-beacon-library-2.1.3.aar)并且监控代码没有错误。但是当我想在我的选项卡上 运行 它时(LG Tab 7 API 19)它停止工作并在屏幕上显示一条消息。
当我在 MainActivity.java 中使用 import.
时,我可以确定 Altbeacon 库已成功导入,因为它出现在列表中。我没有以任何方式更改代码。
Logcat 表示如下:
11988-11988/xxx.altbeeklibtest1 W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41747e48)
11988-11988/xxxx.altbeeklibtest1 E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: xxxx.altbeeklibtest1, PID: 11988
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{xxxx.altbeeklibtest1/xxxx.altbeeklibtest1.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2252)
at android.app.ActivityThread.access0(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1200)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.content.ContextWrapper.getPackageManager(ContextWrapper.java:94)
at org.altbeacon.beacon.BeaconManager.verifyServiceDeclaration(BeaconManager.java:707)
at org.altbeacon.beacon.BeaconManager.<init>(BeaconManager.java:233)
at org.altbeacon.beacon.BeaconManager.getInstanceForApplication(BeaconManager.java:211)
at com.example.shaffat.altbeeklibtest1.MainActivity.<init>(MainActivity.java:18)
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1208)
at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2119)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2252)
at android.app.ActivityThread.access0(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1200)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)
at dalvik.system.NativeStart.main(Native Method)
我做错了什么?非常感谢帮助
我需要查看调用 BeaconManager.getInstanceForApplication(context)
的代码才能确定,但堆栈跟踪表明此代码正在接收空上下文。传递的上下文必须是 Activity、应用程序或服务的非空有效实例。
示例以这种方式初始化 beaconManager:
private BeaconManager beaconManager = beaconManager.getInstanceForApplication(this);
您应该在 Activity.
的 onCreate() 方法中执行此操作
public class MainActivity extends Activity implements BeaconConsumer{
protected static final String TAG = "RangingActivity";
private BeaconManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=0216,i:4-19,i:20-21,i:22-23,p:24-24"));
// set the duration of the scan to be 1.1 seconds
beaconManager.setBackgroundScanPeriod(1100l);
// set the time between each scan to be 1 hour (3600 seconds)
beaconManager.setBackgroundBetweenScanPeriod(1000);
beaconManager.bind(this);
}
我一直在尝试使用 AltBeacon 监控示例代码来监控我的 Kontakt.io 信标,如 http://altbeacon.github.io/android-beacon-library/samples.html 此处所述。我可以在我的android工作室(1.0.2)中导入库(android-beacon-library-2.1.3.aar)并且监控代码没有错误。但是当我想在我的选项卡上 运行 它时(LG Tab 7 API 19)它停止工作并在屏幕上显示一条消息。
当我在 MainActivity.java 中使用 import.
时,我可以确定 Altbeacon 库已成功导入,因为它出现在列表中。我没有以任何方式更改代码。
Logcat 表示如下:
11988-11988/xxx.altbeeklibtest1 W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41747e48)
11988-11988/xxxx.altbeeklibtest1 E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: xxxx.altbeeklibtest1, PID: 11988
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{xxxx.altbeeklibtest1/xxxx.altbeeklibtest1.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2252)
at android.app.ActivityThread.access0(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1200)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.content.ContextWrapper.getPackageManager(ContextWrapper.java:94)
at org.altbeacon.beacon.BeaconManager.verifyServiceDeclaration(BeaconManager.java:707)
at org.altbeacon.beacon.BeaconManager.<init>(BeaconManager.java:233)
at org.altbeacon.beacon.BeaconManager.getInstanceForApplication(BeaconManager.java:211)
at com.example.shaffat.altbeeklibtest1.MainActivity.<init>(MainActivity.java:18)
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1208)
at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2119)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2252)
at android.app.ActivityThread.access0(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1200)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)
at dalvik.system.NativeStart.main(Native Method)
我做错了什么?非常感谢帮助
我需要查看调用 BeaconManager.getInstanceForApplication(context)
的代码才能确定,但堆栈跟踪表明此代码正在接收空上下文。传递的上下文必须是 Activity、应用程序或服务的非空有效实例。
示例以这种方式初始化 beaconManager:
private BeaconManager beaconManager = beaconManager.getInstanceForApplication(this);
您应该在 Activity.
的 onCreate() 方法中执行此操作public class MainActivity extends Activity implements BeaconConsumer{
protected static final String TAG = "RangingActivity";
private BeaconManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=0216,i:4-19,i:20-21,i:22-23,p:24-24"));
// set the duration of the scan to be 1.1 seconds
beaconManager.setBackgroundScanPeriod(1100l);
// set the time between each scan to be 1 hour (3600 seconds)
beaconManager.setBackgroundBetweenScanPeriod(1000);
beaconManager.bind(this);
}