简体   繁体   English

Android Beacon Library在一台Android 4.4设备上运行良好,但在另一台Android设备上运行良好

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM