当使用指定区域的信标时,我正在使用Android 4.4并在监控回调中收到警告消息。
我用于监控的代码是
@Override
public void onIBeaconServiceConnect() {
iBeaconManager.setMonitorNotifier(new MonitorNotifier() {
@Override
public void didEnterRegion(Region region) {
Log.e("didEnterRegion","I just saw an iBeacon for the first time!");
}
@Override
public void didExitRegion(Region region) {
Log.e("didExitRegion","I no longer see an iBeacon");
}
@Override
public void didDetermineStateForRegion(int state, Region region) {
Log.e("didDetermineStateForRegion","I have just switched from seeing/not seeing iBeacons: "+state);
if(state == MonitorNotifier.INSIDE){
try {
//Start Ranging in the Region.
iBeaconManager.startRangingBeaconsInRegion(region);
} catch (RemoteException e) {
System.out.println(e);
}
}
else if(state == MonitorNotifier.OUTSIDE){
try {
//Stop Ranging in the Region.
iBeaconManager.stopRangingBeaconsInRegion(region);
} catch (RemoteException e) {
System.out.println(e);
}
}
}
});
try {
//Start Monitoring in the Region.
iBeaconManager.startMonitoringBeaconsInRegion(region);
} catch (RemoteException e) {
System.out.println(e);
}
我在logcat中找到的警告信息是
04-19 14:32:08.156: D/BluetoothAdapter(10564): startLeScan(): null
04-19 14:32:08.166: D/BluetoothAdapter(10564): onClientRegistered() - status=0 clientIf=5
04-19 14:32:08.176: D/IBeaconService(10564): Scan started
04-19 14:32:08.186: D/IBeaconManager(10564): Got a ranging callback
04-19 14:32:08.186: D/IBeaconManager(10564): Got a ranging callback with 0 iBeacons
04-19 14:32:08.186: D/IBeaconManager(10564): Calling ranging notifier on :com.example.ranging.BackgroundRanging$4@4226f1e8
04-19 14:32:08.787: D/BluetoothAdapter(10564): onScanResult() - Device=4A:92:06:A9:FA:87 RSSI=-52
04-19 14:32:08.787: D/IBeaconService(10564): got record
04-19 14:32:08.797: D/IBeacon(10564): calculating accuracy based on rssi of -52.0
04-19 14:32:08.797: D/IBeaconService(10564): iBeacon detected :128f4e13-01ef-4618-bffa-50fed67f24aa 1001 3003 accuracy: 0.47659904336004005 proximity: 1
04-19 14:32:08.797: D/Callback(10564): attempting callback via intent: com.example.service.DID_MONITORING
04-19 14:32:08.807: W/ContextImpl(10564): Implicit intents with startService are not safe: Intent { act=com.example.service.DID_MONITORING (has extras) } android.content.ContextWrapper.startService:494 com.radiusnetworks.ibeacon.service.Callback.call:85 com.radiusnetworks.ibeacon.service.IBeaconService.processIBeaconFromScan:438
04-19 14:32:08.817: D/IBeaconService(10564): looking for ranging region matches for this ibeacon
04-19 14:32:08.817: D/IBeaconService(10564): matches ranging region: proximityUuid: 128f4e13-01ef-4618-bffa-50fed67f24aa major: null minor:null
04-19 14:32:09.257: D/IBeaconService(10564): Done with scan cycle
04-19 14:32:09.257: D/IBeaconService(10564): Calling ranging callback with 1 iBeacons
04-19 14:32:09.257: D/Callback(10564): attempting callback via messenger
04-19 14:32:09.257: D/IBeaconService(10564): Restarting scan. Unique beacons seen last cycle: 1
04-19 14:32:09.257: D/BluetoothAdapter(10564): stopLeScan()
答案 0 :(得分:0)
此警告显示的是Android iBeacon Library的过期版本,0.7或更早版本。最新版本是0.7.6,不会有此警告。简单的解决方案是简单地升级到可用库的最新版本here.
警告与iBeacon数据在图书馆的后台服务和您的应用之间传递的方式有关。早期版本的库使用了"隐含意图"传递这些信息,理论上如果同时使用该库的两个应用程序在电话上,则理论上会导致iBeacon数据到错误的应用程序。出于开发目的,它并不重要,但如果在生产应用程序中使用它,则应使用最新的库版本。