[英]Android Beacon Library works well on one Android 4.4 device, but not another
UPDATE: I have tried a more direct approach (see EDIT 3, below) which yields an interesting lack of data from the beacon on the watch. 更新:我尝试了一种更直接的方法(参见下面的编辑3),这使得手表上的信标缺乏有趣的数据。
Details on non-working device. 有关非工作设备的详细信息。 Smartwatch (Generic) listed as Bluetooth 4.0 capable MTK6572 chipset Model number EC720 (there seem to many variants) Android 4.4.2 Kernel: 3.4.67 chendalin-Z87-HD3 #1 Dec 27th 2014 Build Number: H82D.SMARTWATCH.OC4.0.20141447 Custom build version: 1419655453
Smartwatch(Generic)列为支持蓝牙4.0的MTK6572芯片组型号EC720(似乎有很多变种)Android 4.4.2内核:3.4.67 chendalin-Z87-HD3#1 2014年12月27日版本号:H82D.SMARTWATCH.OC4.0.20141447自定义版本:1419655453
I am testing the same application using the same Radius Networks Tag beacons. 我正在使用相同的Radius Networks标签信标测试相同的应用程序。 In this test I have the same 4 beacons within close range of my devices.
在这个测试中,我在我的设备的近距离内有相同的4个信标。
Device 1 is a Nexus 7 (2013) that i have not yet updated to Android L, it is running 4.4.4 设备1是Nexus 7(2013),我还没有更新到Android L,它运行4.4.4
Device 2 is a generic smart watch, running android 4.4.2 on a MTK6572. Device 2是一款通用的智能手表,在MTK6572上运行android 4.4.2。 Specs list it as having bluetooth 4.0
规格列出有蓝牙4.0
When I run my testing application using the Android Beacon Library the Nexus reports beacons but the smartwatch does not. 当我使用Android Beacon Library运行我的测试应用程序时,Nexus报告信标,但智能手表没有。 It seems to detect them however, I see entries in logcat such as: D/BluetoothAdapter﹕ onScanResult() - Device=E5:E0:20:CF:63:32 RSSI=-60.
它似乎检测到它们,但我看到logcat中的条目如:D / BluetoothAdapter:onScanResult() - Device = E5:E0:20:CF:63:32 RSSI = -60。 It seems these messages normally show up when the BeaconParser is not setup to read the correct type of beacons but in my case I am pretty sure this is not the issue because the nexus sees the beacons with the exact same code.
当BeaconParser未设置为读取正确类型的信标时,通常会显示这些消息,但在我的情况下,我很确定这不是问题,因为nexus看到的信标具有完全相同的代码。
The log output for the looks very different for the 2 devices, I am starting to wonder if the android build for the watch somehow as BLE support disabled or has an incomplete stack. 对于2个设备看起来非常不同的日志输出,我开始怀疑手表的android构建是否因为BLE支持被禁用或者具有不完整的堆栈。 I have double checked that bluetooth is on and also wanted to note that the watch has App Permission Management which i set to "Always Allow" for all permission requested by the Application.
我已经仔细检查了蓝牙是否打开,并且还想注意该手表具有应用程序权限管理,我为应用程序请求的所有权限设置为“始终允许”。
Here parts of logcat when from the smartwatch: 这里来自smartwatch的部分logcat:
02-03 19:40:40.393 2620-2620/com.mapcushion.android.mapcushionpingl D/BeaconManager﹕ This consumer is not bound. binding: com.mapcushion.android.mapcushionpingl.Scan@41c7d2c0
02-03 19:40:40.435 2620-2620/com.mapcushion.android.mapcushionpingl D/BeaconManager﹕ consumer count is now:1
...
02-03 19:40:40.617 2620-2620/com.mapcushion.android.mapcushionpingl I/BeaconService﹕ beaconService version 2.1 is starting up
02-03 19:40:40.638 2620-2620/com.mapcushion.android.mapcushionpingl I/CycledLeScanner﹕ This is not Android 5.0. We are using old scanning APIs
02-03 19:40:40.645 2620-2620/com.mapcushion.android.mapcushionpingl D/ModelSpecificDistanceCalculator﹕ Finding best distance calculator for 4.4.2,KOT49H,EC720,alps
02-03 19:40:40.645 2620-2620/com.mapcushion.android.mapcushionpingl D/AndroidModel﹕ Score is 0 for LGE;Nexus 4;KOT49H;4.4.2 compared to alps;EC720;KOT49H;4.4.2
02-03 19:40:40.645 2620-2620/com.mapcushion.android.mapcushionpingl D/AndroidModel﹕ Score is 0 for LGE;Nexus 5;LPV79;4.4.2 compared to alps;EC720;KOT49H;4.4.2
02-03 19:40:40.645 2620-2620/com.mapcushion.android.mapcushionpingl W/ModelSpecificDistanceCalculator﹕ Cannot find match for this device. Using default
02-03 19:40:40.645 2620-2620/com.mapcushion.android.mapcushionpingl D/ModelSpecificDistanceCalculator﹕ Finding best distance calculator for 4.4.2,KOT49H,EC720,alps
02-03 19:40:40.645 2620-2620/com.mapcushion.android.mapcushionpingl D/AndroidModel﹕ Score is 0 for LGE;Nexus 4;KOT49H;4.4.2 compared to alps;EC720;KOT49H;4.4.2
02-03 19:40:40.646 2620-2620/com.mapcushion.android.mapcushionpingl D/AndroidModel﹕ Score is 0 for LGE;Nexus 5;LPV79;4.4.2 compared to alps;EC720;KOT49H;4.4.2
02-03 19:40:40.646 2620-2620/com.mapcushion.android.mapcushionpingl W/ModelSpecificDistanceCalculator﹕ Cannot find match for this device. Using default
02-03 19:40:40.648 2620-2620/com.mapcushion.android.mapcushionpingl D/BeaconService﹕ No org.altbeacon.beacon.SimulatedScanData class exists.
02-03 19:40:40.649 2620-2620/com.mapcushion.android.mapcushionpingl D/ActivityThread﹕ SVC-CREATE_SERVICE handled : 0 / CreateServiceData{token=android.os.BinderProxy@41cbbec8 className=org.altbeacon.beacon.service.BeaconService packageName=com.mapcushion.android.mapcushionpingl intent=null}
02-03 19:40:40.650 2620-2620/com.mapcushion.android.mapcushionpingl I/BeaconService﹕ binding
02-03 19:40:40.656 2620-2620/com.mapcushion.android.mapcushionpingl D/ActivityThread﹕ SVC-BIND_SERVICE handled : 0 / BindServiceData{token=android.os.BinderProxy@41cbbec8 intent=Intent { cmp=com.mapcushion.android.mapcushionpingl/org.altbeacon.beacon.service.BeaconService }}
02-03 19:40:40.723 2620-2620/com.mapcushion.android.mapcushionpingl D/GraphicBuffer﹕ create handle(0x552ed2b8) (w:256, h:240, f:1)
02-03 19:40:40.725 2620-2620/com.mapcushion.android.mapcushionpingl I/MaliEGL﹕ [Mali]surface->num_buffers=4, surface->num_frames=3, win_min_undequeued=1
02-03 19:40:40.725 2620-2620/com.mapcushion.android.mapcushionpingl I/MaliEGL﹕ [Mali]max_allowed_dequeued_buffers=3
02-03 19:40:40.725 2620-2620/com.mapcushion.android.mapcushionpingl D/GraphicBuffer﹕ close handle(0x552ed2b8) (w:256 h:240 f:1)
02-03 19:40:40.733 2620-2620/com.mapcushion.android.mapcushionpingl D/GraphicBuffer﹕ create handle(0x553ec108) (w:256, h:240, f:1)
02-03 19:40:40.735 2620-2620/com.mapcushion.android.mapcushionpingl D/OpenGLRenderer﹕ Enabling debug mode 0
02-03 19:40:40.737 2620-2620/com.mapcushion.android.mapcushionpingl D/GraphicBuffer﹕ create handle(0x5542c8a8) (w:768, h:768, f:1)
02-03 19:40:40.741 2620-2620/com.mapcushion.android.mapcushionpingl W/MALI﹕ MTK_AUX_isMTKFormat:168: int MTK_AUX_isMTKFormat(ANativeWindowBuffer_t*): format=1
02-03 19:40:40.743 2620-2620/com.mapcushion.android.mapcushionpingl D/OpenGLRenderer﹕ setViewport 240x240 <0x553ec690>
02-03 19:40:40.745 2620-2620/com.mapcushion.android.mapcushionpingl D/BeaconManager﹕ we have a connection to the service now
02-03 19:40:40.747 2620-2620/com.mapcushion.android.mapcushionpingl D/BeaconManager﹕ callback packageName: com.mapcushion.android.mapcushionpingl
02-03 19:40:40.747 2620-2620/com.mapcushion.android.mapcushionpingl D/BeaconManager﹕ This consumer is already bound
...
02-03 19:40:40.814 2620-2620/com.mapcushion.android.mapcushionpingl I/BeaconService﹕ start ranging received
02-03 19:40:40.814 2620-2620/com.mapcushion.android.mapcushionpingl D/BeaconService﹕ Currently ranging 1 regions.
02-03 19:40:40.814 2620-2620/com.mapcushion.android.mapcushionpingl D/CycledLeScanner﹕ start called
02-03 19:40:40.828 2620-2620/com.mapcushion.android.mapcushionpingl D/CycledLeScanner﹕ starting a new scan cycle
02-03 19:40:40.829 2620-2620/com.mapcushion.android.mapcushionpingl D/BluetoothAdapter﹕ isEnabled
02-03 19:40:40.834 2620-2620/com.mapcushion.android.mapcushionpingl D/CycledLeScanner﹕ starting a new bluetooth le scan
02-03 19:40:40.835 2620-2620/com.mapcushion.android.mapcushionpingl D/BluetoothAdapter﹕ startLeScan(): null
02-03 19:40:40.874 2620-2633/com.mapcushion.android.mapcushionpingl D/BluetoothAdapter﹕ onClientRegistered() - status=0 clientIf=1
02-03 19:40:40.879 2620-2620/com.mapcushion.android.mapcushionpingl D/CycledLeScanner﹕ Waiting to stop scan cycle for another 1100 milliseconds
02-03 19:40:40.880 2620-2620/com.mapcushion.android.mapcushionpingl D/CycledLeScanner﹕ Scan started
02-03 19:40:40.880 2620-2620/com.mapcushion.android.mapcushionpingl D/CycledLeScanner﹕ Set scan periods called with 1100, 0 Background mode must have changed.
02-03 19:40:40.881 2620-2620/com.mapcushion.android.mapcushionpingl D/CycledLeScanner﹕ We are not in the background. Cancelling wakeup alarm
02-03 19:40:40.881 2620-2620/com.mapcushion.android.mapcushionpingl D/CycledLeScanner﹕ cancel wakeup alarm: null
02-03 19:40:41.084 2620-2634/com.mapcushion.android.mapcushionpingl D/BluetoothAdapter﹕ onScanResult() - Device=E5:E0:20:CF:63:32 RSSI=-45
02-03 19:40:41.084 2620-2634/com.mapcushion.android.mapcushionpingl D/CycledLeScannerForJellyBeanMr2﹕ got record
Here is my code: 这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scan);
mHandler = new android.os.Handler();
beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.setDebug(true);
beaconManager.getBeaconParsers().add(new BeaconParser().
setBeaconLayout(" m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
beaconManager.bind(this);
sendBeacons();
}
@Override
public void onBeaconServiceConnect() {
beaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
System.out.println("------- didRangeBeacons!!!!");
iBeacons = beacons;
System.out.println("------ num:: " + iBeacons.size());
/*
for(Beacon iBeacon : iBeacons) {
Log.i("Beacon", "found \nProxUUID: " + iBeacon.getId1()
+ "\ntx: " + Integer.toString(iBeacon.getTxPower())
+ "\nmanu: " + Integer.toString(iBeacon.getManufacturer())
+ "\ndistance: " + Double.toString(iBeacon.getDistance())
+ "\nRSSI:" + Integer.toString(iBeacon.getRssi())
+ "\nTxPow:" + Integer.toString(iBeacon.getTxPower())
+ "\nBeacon type code:" + Double.toString(iBeacon.getBeaconTypeCode())
+ "\n------------------------------------------------");
}
*/
}
});
try {
beaconManager.startRangingBeaconsInRegion(new Region("briansbeacons", null, null, null));
} catch(RemoteException e) {
e.printStackTrace();
}
beaconManager.bind(this);
}
EDIT 1: 编辑1:
Adding more specific log entries to try to show the differences in beacon detection: I removed all but one beacon, I noticed that the working device is identifying the beacon by UUID, the non-working is not. 添加更多特定日志条目以尝试显示信标检测中的差异:我删除了除一个信标之外的所有信息,我注意到工作设备正在通过UUID识别信标,而非工作设备则不是。 But i can not find any reference to the Device=E5:E0:20:CF:63:32 in the log of the working device.
但我在工作设备的日志中找不到对Device = E5:E0:20:CF:63:32的任何引用。
Nexus 7 (working): Nexus 7(工作):
02-02 23:48:14.795 10727-10751/com.mapcushion.android.mapcushionpingl D/BeaconService﹕ beacon detected multiple times in scan cycle :id1: 2f234454-cf6d-4a0f-adf2-f4911ba9ffa6 id2: 4 id3: 101
02-02 23:48:14.795 10727-10751/com.mapcushion.android.mapcushionpingl D/BeaconService﹕ beacon detected :id1: 2f234454-cf6d-4a0f-adf2-f4911ba9ffa6 id2: 4 id3: 101
02-02 23:48:14.795 10727-10751/com.mapcushion.android.mapcushionpingl D/BeaconService﹕ looking for ranging region matches for this beacon
02-02 23:48:14.795 10727-10751/com.mapcushion.android.mapcushionpingl D/BeaconService﹕ matches ranging region: id1: null id2: null id3: null
02-02 23:48:14.795 10727-10751/com.mapcushion.android.mapcushionpingl D/RangeState﹕ adding id1: 2f234454-cf6d-4a0f-adf2-f4911ba9ffa6 id2: 4 id3: 101 to existing range for: org.altbeacon.beacon.service.RangedBeacon@41eb5380
02-02 23:48:14.915 10727-10738/com.mapcushion.android.mapcushionpingl D/CycledLeScannerForJellyBeanMr2﹕ got record
02-02 23:48:14.915 10727-10759/com.mapcushion.android.mapcushionpingl D/BeaconParser﹕ This is not a matching Beacon advertisement. (Was expecting be ac. The bytes I see are: 02011a0bff4c0009060102c0a801130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
02-02 23:48:14.915 10727-10759/com.mapcushion.android.mapcushionpingl D/BeaconParser﹕ This is not a matching Beacon advertisement. (Was expecting 02 15. The bytes I see are: 02011a0bff4c0009060102c0a801130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
SmartWatch (not working): SmartWatch(不工作):
02-02 23:46:52.598 3351-3364/com.mapcushion.android.mapcushionpingl D/BluetoothAdapter﹕ onScanResult() - Device=E5:E0:20:CF:63:32 RSSI=-31
02-02 23:46:52.599 3351-3364/com.mapcushion.android.mapcushionpingl D/CycledLeScannerForJellyBeanMr2﹕ got record
02-02 23:46:52.600 3351-3364/com.mapcushion.android.mapcushionpingl D/BluetoothDevice﹕ mAddress: E5:E0:20:CF:63:32
02-02 23:46:52.603 3351-3383/com.mapcushion.android.mapcushionpingl D/BeaconParser﹕ This is not a matching Beacon advertisement. (Was expecting be ac. The bytes I see are: 0201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
02-02 23:46:52.603 3351-3383/com.mapcushion.android.mapcushionpingl D/BeaconParser﹕ This is not a matching Beacon advertisement. (Was expecting 02 15. The bytes I see are: 0201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
02-02 23:46:52.605 3351-3383/com.mapcushion.android.mapcushionpingl D/BeaconParser﹕ This is not a matching Beacon advertisement. (Was expecting 02 15. The bytes I see are: 0201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
02-02 23:46:53.432 3351-3351/com.mapcushion.android.mapcushionpingl D/CycledLeScanner﹕ Waiting to stop scan cycle for another 98 milliseconds
02-02 23:46:53.531 3351-3351/com.mapcushion.android.mapcushionpingl D/CycledLeScanner﹕ Done with scan cycle
02-02 23:46:53.531 3351-3351/com.mapcushion.android.mapcushionpingl D/BeaconService﹕ Calling ranging callback
Something else I noticed is that in the non-working device the only references to BeaconService are the following: 我注意到的另一件事是,在非工作设备中,对BeaconService的唯一引用如下:
02-02 23:46:52.364 3351-3351/com.mapcushion.android.mapcushionpingl D/BeaconService﹕ Calling ranging callback
02-02 23:46:52.364 3351-3351/com.mapcushion.android.mapcushionpingl D/Callback﹕ attempting callback via intent: ComponentInfo{com.mapcushion.android.mapcushionpingl/org.altbeacon.beacon.BeaconIntentProcessor}
Whereas in the working device most of the logging for the beacon seems to come from that class... 而在工作设备中,大多数信标的记录似乎来自该类...
EDIT - Update 2: 编辑 - 更新2:
In response to David in regards to the MAC address 回答David关于MAC地址的问题
The following code: 以下代码:
beaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
System.out.println("------- didRangeBeacons!!!!");
iBeacons = beacons;
System.out.println("------ num:: " + iBeacons.size());
for(Beacon iBeacon : iBeacons) {
Log.i("Beacon", "\n------------------------------------------------");
Log.d(TAG, "Mac address is: "+iBeacon.getBluetoothAddress());
Log.i("Beacon", "\n------------------------------------------------");
}
}
});
Produces on the working Nexus 7: 在工作Nexus 7上产生:
02-03 19:44:57.200 3192-3438/com.mapcushion.android.mapcushionpingl I/System.out﹕ ------- didRangeBeacons!!!!
02-03 19:44:57.200 3192-3438/com.mapcushion.android.mapcushionpingl I/System.out﹕ ------ num:: 1
02-03 19:44:57.200 3192-3438/com.mapcushion.android.mapcushionpingl I/Beacon﹕ ------------------------------------------------
02-03 19:44:57.200 3192-3438/com.mapcushion.android.mapcushionpingl D/RangingActivity﹕ Mac address is: E5:E0:20:CF:63:32
02-03 19:44:57.200 3192-3438/com.mapcushion.android.mapcushionpingl I/Beacon﹕ ------------------------------------------------
And on the smartwatch: 在智能手表上:
02-03 19:40:46.671 2620-2671/com.mapcushion.android.mapcushionpingl I/System.out﹕ ------- didRangeBeacons!!!!
02-03 19:40:46.671 2620-2671/com.mapcushion.android.mapcushionpingl I/System.out﹕ ------ num:: 0
So there are no ble devices being "seen" by the BeaconManager (or underlying android APIs) as beacons, but yet it does identify the beacon with same MAC address with this line: 因此BeaconManager(或底层的android API)没有将“设备”视为信标,但它确实用这条线识别具有相同MAC地址的信标:
02-03 19:40:46.486 2620-2633/com.mapcushion.android.mapcushionpingl D/BluetoothDevice﹕ mAddress: E5:E0:20:CF:63:32
EDIT 3: 编辑3:
I decided to step back and try using the android Bluetooth APIs to query the beacons directly. 我决定退后一步,尝试使用Android蓝牙API直接查询信标。
Basically I am just trying to output the bytes returned and see why the beacon is not being recognized. 基本上我只是想输出返回的字节,看看为什么没有识别信标。 And the output looks completely different for the same beacon, only the 1st two bytes have data for the beacon as seen by the smartwatch, while the nexus 7 has 30 bytes of data.
并且对于相同的信标,输出看起来完全不同,只有前两个字节具有智能手表所见的信标数据,而nexus 7具有30个字节的数据。
I tried changing the SCAN_TIME with no effect so far. 到目前为止,我尝试更改SCAN_TIME没有任何效果。 Is the lack of data received by the watch a sign that it cannot read ble packets?
手表收到的数据是否有迹象表明它无法读取数据包?
I used the following code: 我使用了以下代码:
private static final long SCAN_TIME = 5000;
boolean mScanning = false;
private void scanLeDevice(final boolean enable) {
Log.i(null, "Inside scanLeDevice");
Log.i(null, "scan time is: " + SCAN_TIME);
if (enable) {
// Stops scanning after a pre-defined scan period.
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mScanning = false;
Log.i(null, "Calling stopLeScan");
mBluetoothAdapter.stopLeScan(mLeScanCallback);
}
}, SCAN_TIME);
mScanning = true;
Log.i(null, "Calling startLeScan");
mBluetoothAdapter.startLeScan(mLeScanCallback);
} else {
mScanning = false;
mBluetoothAdapter.stopLeScan(mLeScanCallback);
}
}
private BluetoothAdapter.LeScanCallback mLeScanCallback =
new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, int rssi,
final byte[] scanRecord) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.i(null, "INSIDE ONLESCAN");
//DO MY WORK
Log.i(null, "scanned record: " + scanRecord.length);
int startByte = 2;
boolean patternFound = false;
for(int i=0; i<scanRecord.length; i++) {
Log.i(null, "byte " + i + ": " + scanRecord[i]);
}
while (startByte <= 5) {
Log.i(null, "scanned record: " + scanRecord.length);
Log.i(null, "Identifier check: " + ((int) scanRecord[startByte + 2] & 0xff) + " == " + 0x02);
Log.i(null, "Length of data : " + ((int) scanRecord[startByte + 3] & 0xff) + "==" + (0x15));
//Log.i(null, " iBeacon Identifier: " + (scanRecord[startByte + 2] & 0xff));
if (((int) scanRecord[startByte + 2] & 0xff) == 0x02 && //Identifies an iBeacon
((int) scanRecord[startByte + 3] & 0xff) == 0x15) { //Identifies correct data length
patternFound = true;
break;
}
startByte++;
}
if (patternFound) {
//Convert to hex String
byte[] uuidBytes = new byte[16];
System.arraycopy(scanRecord, startByte+4, uuidBytes, 0, 16);
String hexString = bytesToHex(uuidBytes);
//Here is your UUID
String uuid = hexString.substring(0,8) + "-" +
hexString.substring(8,12) + "-" +
hexString.substring(12,16) + "-" +
hexString.substring(16,20) + "-" +
hexString.substring(20,32);
//Here is your Major value
int major = (scanRecord[startByte+20] & 0xff) * 0x100 + (scanRecord[startByte+21] & 0xff);
//Here is your Minor value
int minor = (scanRecord[startByte+22] & 0xff) * 0x100 + (scanRecord[startByte+23] & 0xff);
System.out.println("-------------output------ : " + uuid + " maj: " + major + " min: " + minor );
}
}
});
}
};
}
Here is the output: 这是输出:
nexus 7 (working): nexus 7(工作):
02-03 22:50:43.811 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ INSIDE ONLESCAN
02-03 22:50:43.811 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ scanned record: 62
02-03 22:50:43.811 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 0: 2
02-03 22:50:43.811 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 1: 1
02-03 22:50:43.811 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 2: 6
02-03 22:50:43.811 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 3: 26
02-03 22:50:43.811 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 4: -1
02-03 22:50:43.811 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 5: 76
02-03 22:50:43.811 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 6: 0
02-03 22:50:43.821 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 7: 2
02-03 22:50:43.821 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 8: 21
02-03 22:50:43.831 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 9: 47
02-03 22:50:43.831 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 10: 35
02-03 22:50:43.831 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 11: 68
02-03 22:50:43.831 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 12: 84
02-03 22:50:43.831 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 13: -49
02-03 22:50:43.831 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 14: 109
02-03 22:50:43.831 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 15: 74
02-03 22:50:43.831 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 16: 15
02-03 22:50:43.841 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 17: -83
02-03 22:50:43.841 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 18: -14
02-03 22:50:43.841 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 19: -12
02-03 22:50:43.841 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 20: -111
02-03 22:50:43.841 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 21: 27
02-03 22:50:43.841 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 22: -87
02-03 22:50:43.841 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 23: -1
02-03 22:50:43.851 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 24: -90
02-03 22:50:43.851 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 25: 0
02-03 22:50:43.851 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 26: 4
02-03 22:50:43.851 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 27: 0
02-03 22:50:43.851 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 28: 101
02-03 22:50:43.851 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 29: -76
02-03 22:50:43.851 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 30: 0
... (all 0's)
02-03 22:50:43.882 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ byte 61: 0
02-03 22:50:43.882 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ scanned record: 62
02-03 22:50:43.882 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ Identifier check: 255 == 2
02-03 22:50:43.882 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ Length of data : 76==21
02-03 22:50:43.882 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ scanned record: 62
02-03 22:50:43.882 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ Identifier check: 76 == 2
02-03 22:50:43.882 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ Length of data : 0==21
02-03 22:50:43.882 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ scanned record: 62
02-03 22:50:43.882 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ Identifier check: 0 == 2
02-03 22:50:43.882 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ Length of data : 2==21
02-03 22:50:43.882 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ scanned record: 62
02-03 22:50:43.882 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ Identifier check: 2 == 2
02-03 22:50:43.882 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ Length of data : 21==21
02-03 22:50:43.882 7303-7303/com.mapcushion.android.mapcushionpingl I/System.out﹕ -------------output------ : 2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6 maj: 4 min: 101
02-03 22:50:43.912 7303-7303/com.mapcushion.android.mapcushionpingl I/﹕ Calling stopLeScan
smartwatch (not working) : smartwatch(不工作):
2-03 22:53:37.374 6177-6189/com.mapcushion.android.mapcushionpingl D/BluetoothAdapter﹕ onScanResult() - Device=E5:E0:20:CF:63:32 RSSI=-46
02-03 22:53:37.376 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ INSIDE ONLESCAN
02-03 22:53:37.376 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ scanned record: 62
02-03 22:53:37.376 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ byte 0: 2
02-03 22:53:37.376 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ byte 1: 1
02-03 22:53:37.376 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ byte 2: 0
02-03 22:53:37.376 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ byte 3: 0
02-03 22:53:37.376 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ byte 4: 0
02-03 22:53:37.376 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ byte 5: 0
02-03 22:53:37.376 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ byte 6: 0
... (all 0's)
02-03 22:53:37.378 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ byte 61: 0
02-03 22:53:37.378 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ scanned record: 62
02-03 22:53:37.378 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ Identifier check: 0 == 2
02-03 22:53:37.378 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ Length of data : 0==21
02-03 22:53:37.378 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ scanned record: 62
02-03 22:53:37.378 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ Identifier check: 0 == 2
02-03 22:53:37.378 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ Length of data : 0==21
02-03 22:53:37.378 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ scanned record: 62
02-03 22:53:37.378 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ Identifier check: 0 == 2
02-03 22:53:37.378 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ Length of data : 0==21
02-03 22:53:37.378 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ scanned record: 62
02-03 22:53:37.378 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ Identifier check: 0 == 2
02-03 22:53:37.378 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ Length of data : 0==21
02-03 22:53:37.643 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ Calling stopLeScan
02-03 22:53:37.643 6177-6177/com.mapcushion.android.mapcushionpingl D/BluetoothAdapter﹕ stopLeScan()
02-03 22:53:37.743 6177-6177/com.mapcushion.android.mapcushionpingl I/﹕ Calling stopLeScan
02-03 22:53:37.743 6177-6177/com.mapcushion.android.mapcushionpingl D/BluetoothAdapter﹕ stopLeScan()
Since you confirmed with the Nexus 7 that the beacon has a Mac address of E5:E0:20:CF:63:32, and you see that the watch reads its advertisement as: 由于您使用Nexus 7确认信标的Mac地址为E5:E0:20:CF:63:32,您会看到该手表的广告显示为:
0201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
While the Nexus 7 reads it as a very different byte sequence of: 虽然Nexus 7将其读作一个非常不同的字节序列:
02011a0bff4c0009060102c0a801130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
I have to conclude that the watch does not read BLE manufacturer advertisements properly -- it truncates them after two bytes. 我必须得出结论,手表没有正确读取BLE制造商的广告 - 它在两个字节后截断它们。
The issue may be the MTK6572 ROM, the hardware, or the way the two work together. 问题可能是MTK6572 ROM,硬件或两者协同工作的方式。 It is probably worth documenting the full watch configuration for the sake of others.
为了其他人,可能值得记录完整的手表配置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.