GVKun编程网logo

谷歌上线新条款:这些热门Android设备福音(谷歌安卓新规)

20

最近很多小伙伴都在问谷歌上线新条款:这些热门Android设备福音和谷歌安卓新规这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展AndroidBeaconLibrary在一台And

最近很多小伙伴都在问谷歌上线新条款:这些热门Android设备福音谷歌安卓新规这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展Android Beacon Library在一台Android 4.4设备上运行良好,但在另一台Android设备上运行良好、Android Manifest使用权限与Android设备规格、android – 如何使用默认浏览器在谷歌上搜索字符串、Android 在俄罗斯被认定垄断 谷歌上诉遭驳回等相关知识,下面开始了哦!

本文目录一览:

谷歌上线新条款:这些热门Android设备福音(谷歌安卓新规)

谷歌上线新条款:这些热门Android设备福音(谷歌安卓新规)

  谷歌更新安卓的速度还是比较快的,据悉,其团队个月会发布一组新Android系统更新,但运营商和手机厂商却未必能够及时安装。

  虽然这个问题很复杂,但美国科技媒体The Verge获得的机密合同显示,很多厂商现在已经肩负明确的义务——必须及时更新他们的Android手机。

  该合同要求Android设备厂商必须在至少2年的时间内为热门手机和平板电脑定期安装更新。谷歌与Android合作伙伴签订的协议也规定他们必须在手机发布一年时间内提供“至少4次安全更新”。第二年的安全更新也要强制执行,但并没有明确的最低要求。

  谷歌Android安全主管大卫·克雷德马切(David Kleidermacher)今年早些时候曾经在I/O开发者大会上提到这些条款。他当时表示,谷歌在跟合作伙伴签订的协议中增加了“定期”提供安全更新的条款。但当时并未披露具体适用对象以及更新频率。

  这些条款覆盖2018年1月31日之后发布的任何激活量超过10万用户的设备。从7月31日开始,这项要求将适用于75%“安全强制机型”。从2019年1月31日开始,谷歌还会要求所有安全强制设备收取这些更新

  厂商需要在特定时间内修复谷歌确认的漏洞。在每个月末,符合条件的设备必须修补所有已经确认超过90天的漏洞。也就是说,即便没有最低更新要求,这些更新窗口也会对设备的更新频率设定限制。

  如果厂商未能及时更新设备,谷歌就将不会批准未来的手机授权,导致其无法发布。

  上述条款出现在谷歌针对欧盟制定的全新Android手机和平板电脑授权协议中。虽然无法确认这些条款是否也会出现在全球授权条款中,但谷歌的公开评论显示,这可能会是一项普遍适用的要求。

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

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

更新:我尝试了一种更直接的方法(参见下面的编辑3),这使得手表上的信标缺乏有趣的数据.

有关非工作设备的详细信息.
智能手表(通用)列为蓝牙4.0功能
MTK6572芯片组
型号EC720(似乎有很多变种)
Android 4.4.2
内核:3.4.67 chendalin-Z87-HD3#1 2014年12月27日
内部版本号:H82D.SMARTWATCH.OC4.0.20141447
自定义版本:1419655453

我正在使用相同的Radius Networks标签信标测试相同的应用程序.在这个测试中,我在我的设备的近距离内有相同的4个信标.

设备1是Nexus 7(2013),我还没有更新到Android L,它运行4.4.4

Device 2是一款通用的智能手表,在MTK6572上运行android 4.4.2.规格列出有蓝牙4.0

当我使用Android Beacon Library运行我的测试应用程序时,Nexus报告信标,但智能手表没有.它似乎检测到它们,但我看到logcat中的条目如:D / BluetoothAdapter:onScanResult() – Device = E5:E0:20:CF:63:32 RSSI = -60.当BeaconParser未设置为读取正确类型的信标时,通常会显示这些消息,但在我的情况下,我很确定这不是问题,因为nexus看到的信标具有完全相同的代码.

对于2个设备看起来非常不同的日志输出,我开始怀疑手表的android构建是否因为BLE支持被禁用或者具有不完整的堆栈.我已经仔细检查了蓝牙是否打开,并且还想注意该手表具有应用程序权限管理,我为应用程序请求的所有权限设置为“始终允许”.

这里来自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,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,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

这是我的代码:

@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));
    } catch(remoteexception e) {
        e.printstacktrace();
    }
    beaconManager.bind(this);
}

编辑1:

添加更多特定日志条目以尝试显示信标检测中的差异:我删除了除一个信标之外的所有信息,我注意到工作设备正在通过UUID识别信标,而非工作设备则不是.但我在工作设备的日志中找不到对Device = E5:E0:20:CF:63:32的任何引用.

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(不工作):

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

我注意到的另一件事是,在非工作设备中,对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}

而在工作设备中,大多数信标的记录似乎来自该类…

编辑 – 更新2:

回答David关于MAC地址的问题

以下代码:

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------------------------------------------------");
    }


    }
});

在工作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﹕ ------------------------------------------------

在智能手表上:

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

因此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

编辑3:

我决定退后一步,尝试使用Android蓝牙API直接查询信标.

基本上我只是想输出返回的字节,看看为什么没有识别信标.并且对于相同的信标,输出看起来完全不同,只有前两个字节具有智能手表所见的信标数据,而nexus 7具有30个字节的数据.

到目前为止,我尝试更改SCAN_TIME没有任何效果.手表收到的数据是否有迹象表明它无法读取数据包?

我使用了以下代码:

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,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 );
                        }
                    }
                });
            }
        };
    }

这是输出:

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(不工作):

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()

解决方法

由于您使用Nexus 7确认信标的Mac地址为E5:E0:20:CF:63:32,您会看到该手表的广告显示为:

0201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

虽然Nexus 7将其读作一个非常不同的字节序列:

02011a0bff4c0009060102c0a801130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

我必须得出结论,手表没有正确读取BLE制造商的广告 – 它在两个字节后截断它们.

问题可能是MTK6572 ROM,硬件或两者协同工作的方式.为了其他人,可能值得记录完整的手表配置.

Android Manifest使用权限与Android设备规格

Android Manifest使用权限与Android设备规格

有没有办法检查为什么 my Android application在某些设备上没有显示在Play商店中,如三星galaxy S Duos,Samsung Ace Plus和Micromax A110等?虽然我可以手动在这些设备上通过USB ADB(Eclipse)安装我的应用程序.以下是Manifest使用权限:

<uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="17" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <!-- Keeps the processor from sleeping when a message is received. -->
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <!-- for reading contacts -->
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <!--
     Creates a custom permission so only this app can receive its messages.

     NOTE: the permission *must* be called PACKAGE.permission.C2D_MESSAGE,where PACKAGE is the application''s package name.
    -->
    <permission
        android:name="com.s5.safetylink.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.s5.safetylink.permission.C2D_MESSAGE" />

    <!-- This application has permission to register and receive data message. -->
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

有人可以提供任何链接或文章,我可以记录权限和设备规格,以了解为什么我的Android应用程序与特定设备不兼容或为什么它没有在特定设备上的Play商店中显示?

任何帮助将受到高度赞赏.

解决方法

我建议你看看这个: http://developer.android.com/google/play/filters.html

一般情况下,如果你的应用需要一定的权限需要某些硬件(例如相机),那么即使你没有在该部分下声明它,谷歌播放也会将你的应用程序过滤掉那些不支持某些硬件的设备. .. 希望这可以帮助

android – 如何使用默认浏览器在谷歌上搜索字符串

android – 如何使用默认浏览器在谷歌上搜索字符串

我想实现一个搜索功能,打开默认浏览器并搜索传递的字符串
public void searchOnGoogle(String keywords){
---
}

有没有办法使用意图过滤器或我必须自己实现一切?

解决方法

String query = URLEncoder.encode(keywords,"utf-8");
String url = "http://www.google.com/search?q=" + query;
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);

Android 在俄罗斯被认定垄断 谷歌上诉遭驳回

Android 在俄罗斯被认定垄断 谷歌上诉遭驳回

据外媒报道,俄罗斯的国家反垄断监管机构(FAS)对Alphabet旗下谷歌公司罚款4.38亿卢布(675万美元),原因是此前FAS曾收到俄罗斯搜索引擎公司Yandex的投诉,称谷歌要求在搭载Android系统的手机和平板电脑上上预装搜索等应用。

由于双方未能达成庭外和解,谷歌随后对该裁决提起上诉。今日,法庭对谷歌的上诉举行听证会,最终驳回了谷歌的上诉。 按照相关规定,谷歌需要在60天内支付4.38亿卢布(675万美元) 的罚款。

此前,FAS曾于去年9月认定谷歌违反该国法律,要求谷歌在11月18日前改正这种不当行为。FAS官员也表态称谷歌因滥用在俄罗斯移动设备操作系统市场的统治地位,须支付2014年该公司在俄罗斯市场营收1%至15%的罚款。

稿源:网易科技

我们今天的关于谷歌上线新条款:这些热门Android设备福音谷歌安卓新规的分享已经告一段落,感谢您的关注,如果您想了解更多关于Android Beacon Library在一台Android 4.4设备上运行良好,但在另一台Android设备上运行良好、Android Manifest使用权限与Android设备规格、android – 如何使用默认浏览器在谷歌上搜索字符串、Android 在俄罗斯被认定垄断 谷歌上诉遭驳回的相关信息,请在本站查询。

本文标签: