Java Android信标-绑定/取消绑定问题(此)
我正在尝试创建自己的BeaconManager,以便更轻松地制定不同的行动 因此,我创建了一个新类,并实现了BeaconConsumer及其函数:Java Android信标-绑定/取消绑定问题(此),java,android,ibeacon,ibeacon-android,beacon,Java,Android,Ibeacon,Ibeacon Android,Beacon,我正在尝试创建自己的BeaconManager,以便更轻松地制定不同的行动 因此,我创建了一个新类,并实现了BeaconConsumer及其函数: public class MybeaconManager implements BeaconConsumer{ private BeaconManager beaconManager; private final String TAG = "MybeaconManager"; private boolean mEnterArea = false;
public class MybeaconManager implements BeaconConsumer{
private BeaconManager beaconManager;
private final String TAG = "MybeaconManager";
private boolean mEnterArea = false;
private boolean mAlreadyArea = false;
public MybeaconManager(Context ctx){
beaconManager = BeaconManager.getInstanceForApplication(ctx);
beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"));
beaconManager.bind(this);
}
public void bindBeacon(BeaconConsumer consumer){
beaconManager.bind(consumer);
}
public void unBindBeacon(BeaconConsumer consumer){
beaconManager.unbind(consumer);
}
public boolean isEnterInArea() {
return mEnterArea;
}
public boolean isAlreadyInArea() {
return mAlreadyArea;
}
public void sendNotification(String Notif) {
}
@Override
public void onBeaconServiceConnect() {
beaconManager.addMonitorNotifier(new MonitorNotifier() {
@Override
public void didEnterRegion(Region region) {
mEnterArea = true;
}
@Override
public void didExitRegion(Region region) {
mEnterArea = false;
}
@Override
public void didDetermineStateForRegion(int i, Region region) {
}
});
}
除此之外,我还有我的主要活动:
public class MainActivity extends Activity {
MybeaconManager mybeaconManager;
BeaconManager beaconManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mybeaconManager = new MybeaconManager(this);
if (mybeaconManager.isEnterInArea()){
Log.i("BeaconTest", "I'm detecting a Beacon");
}
}
@Override
protected void onDestroy() {
super.onDestroy();
mybeaconManager.unBindBeacon((BeaconConsumer) this);
}
@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onStop() {
super.onStop();
}
}
如您所见,我正在尝试更轻松地使用函数didEnterRegion/didExitRegion,在MainActivity代码中只需在线使用
问题是,bind/unbindthis编译得不好,我认为这是因为我没有在main活动上实现beaconsumer,因为他无法正确地获得消费者
它告诉我:由以下原因引起:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.String android.content.Context.getPackageName”,并在绑定时返回我
那么,你有什么想法可以让我保持我的beaconManager来处理这个问题吗
先谢谢你。
PS:抱歉,如果我的英语不完美Beaconsumer接口是由活动或服务类实现的。如果您想在问题中所示的POJO中实现此接口,则需要链接下面所示的方法定义
@Override
public Context getApplicationContext() {
return getActivity().getApplicationContext();
}
@Override
public void unbindService(ServiceConnection serviceConnection) {
getActivity().unbindService(serviceConnection);
}
@Override
public boolean bindService(Intent intent, ServiceConnection serviceConnection, int i) {
return getActivity().bindService(intent, serviceConnection, i);
}
我怀疑您的代码已经有这些方法的空实现,否则您的代码将无法编译。确保您提供了如上所示的完整实现