亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android基于ibeacon實現藍牙考勤功能

2019-10-21 21:36:26
字體:
來源:轉載
供稿:網友

說明:

ibeacon設備會主動發射藍牙信號,當手機打開藍牙靠近ibeacon設備時,就會收到設備發送的藍牙信號,這時只需要根據ibeacon設備的uuid、major、minor、mac這四個值,就可以確認是哪一臺ibeacon設備,然后調用服務端考勤接口(ibeacon設備只為了確認手機在考勤機邊上,不需要發送考勤數據到ibeacon設備上),即可實現藍牙考勤。

一、添加靜態權限(在AndroidManifest.xml文件中添加,需要藍牙和定位權限)

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /><uses-permission android:name="android.permission.BLUETOOTH" />

二、檢測與開啟藍牙、GPS

1.是否支持藍牙:

 if (!context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {      ToastUtils.show("本機不支持藍牙功能, 無法藍牙打卡");      ((Activity) context).finish();      return false;    }    final BluetoothManager bm = (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE);    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {      mBleAdapter = bm.getAdapter(); //mBleAdapter為全局變量,為BluetoothAdapter對象    }    if (bleAdapter == null) {      ToastUtils.show("本機不支持低功耗藍牙功能, 無法藍牙打卡");      ((Activity) context).finish();      return false;    }    return true;

2.是否開啟GPS:

LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);boolean gps = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);boolean network = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);if (gps || network) {   return true;}return false;

3.開啟GPS:

Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);context.startActivityForResult(intent, ActivityCode.ACTIVITY_CODE_GPS);

4.開啟藍牙:

Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);((Activity) mContext).startActivityForResult(enableBtIntent, ActivityCode.ACTIVITY_CODE_OPEN_BLE);

三、動態申請藍牙權限

private boolean check(Context context, String permission) {    return ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED;   }   /**   * 權限申請   */  private void searchBle(){    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {      if (!check(mContext, Manifest.permission.ACCESS_FINE_LOCATION) || !check(mContext, Manifest.permission.ACCESS_COARSE_LOCATION)) {        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, ACCESS_LOCATION);      } else {        //執行藍牙搜索      }    } else {      //執行藍牙搜索    }  }   @Override  public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {    switch (requestCode) {      case ACCESS_LOCATION:        if (hasAllPermissionsGranted(grantResults)) {          //執行藍牙搜索        } else {          ToastUtils.show("請開啟權限");        }        break;    }  }

四.搜索藍牙

 /** * 搜索藍牙*/  public void searchBle() {    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {      mBleAdapter.startLeScan(mLeScanCallback);    }  }   /**   * 搜索結果回調   */  private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() {     @Override    public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {      //fromScanData方法將ibeacon數據轉換為實體對象,內部包括了uuid、major、minor、mac、distance等信息      final BleUtil.DeviceInfo info = BleUtil.fromScanData(device, rssi, scanRecord);      if (info == null || TextUtils.isEmpty(info.uuid) || info.major <= 0 || info.minor <= 0 || TextUtils.isEmpty(info.mac)) {        return;      }      if (mUuids == null || mUuids.isEmpty()) {        //此處關閉藍牙搜索        mBleAdapter.stopLeScan(mLeScanCallback);        return;      }      for (MachineInfo machineInfo : mUuids) {        if (info.uuid.equalsIgnoreCase(machineInfo.uuid) &&            (!TextUtils.isEmpty(machineInfo.major) && info.major == Integer.parseInt(machineInfo.major)) &&            (!TextUtils.isEmpty(machineInfo.minor) && info.minor == Integer.parseInt(machineInfo.minor)) &&            info.mac.equalsIgnoreCase(machineInfo.mac) && info.distance <= MAX_DISTANCE) {          mConnected = true;          //回調通知外部,界面更新可考勤狀態          if (mListener != null) {            mListener.onConnected();          }          //此處是延時調用stopLeScan關閉藍牙搜索          beginTimer();          break;        }      }    }  };

五、考勤

此步調用服務端提供的API增加考勤記錄

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美在线视频播放| 91精品国产高清自在线| 黑人欧美xxxx| 国产精品草莓在线免费观看| 日韩高清中文字幕| 成人黄在线观看| 亚洲伊人第一页| 成人精品久久久| 国产不卡精品视男人的天堂| 成人性生交大片免费看视频直播| 国产精品久久久999| 欧美一区视频在线| 欧美日韩另类视频| 日韩最新在线视频| 在线看片第一页欧美| 亚洲成人网在线观看| 欧美色欧美亚洲高清在线视频| 久久精品国产久精国产一老狼| 国产一区二区丝袜高跟鞋图片| 91牛牛免费视频| 成人福利网站在线观看| 久久久影视精品| 国内免费久久久久久久久久久| 91精品视频在线| 992tv成人免费视频| 国内成人精品视频| 国产精品影院在线观看| 亚洲美女精品成人在线视频| 欧美噜噜久久久xxx| 成人免费看吃奶视频网站| 在线观看精品国产视频| 欧美中文在线字幕| 黑人巨大精品欧美一区二区免费| 欧美理论电影在线播放| 成人有码在线播放| 亚洲一区二区免费在线| 欧美性xxxxx极品| 欧美激情亚洲国产| 精品国产乱码久久久久久天美| 亚洲天堂免费在线| 91精品国产91久久久久久不卡| 日韩欧美中文免费| 中文字幕精品www乱入免费视频| 久久精品视频免费播放| 亚洲国产女人aaa毛片在线| 日韩欧美成人网| 青青久久aⅴ北条麻妃| 精品高清一区二区三区| 日本国产一区二区三区| 欧美日韩视频在线| 最新日韩中文字幕| 欧美国产一区二区三区| 91在线精品视频| 欧美成人在线免费| 97视频在线观看免费高清完整版在线观看| 久久国产精品99国产精| 日本sm极度另类视频| 51色欧美片视频在线观看| 久久久久五月天| 欧美疯狂xxxx大交乱88av| 日韩欧美高清在线视频| 超碰91人人草人人干| 国产精品扒开腿做爽爽爽的视频| 国产亚洲欧洲黄色| 亚洲高清免费观看高清完整版| 国产视频福利一区| 亚洲第一色在线| 国产成人精品综合久久久| 亚洲免费视频在线观看| 最近更新的2019中文字幕| 国产91亚洲精品| 国产精品扒开腿爽爽爽视频| 亚洲女人初尝黑人巨大| 午夜精品三级视频福利| 色婷婷综合成人av| 欧美最猛性xxxxx(亚洲精品)| xxx成人少妇69| 日韩女优在线播放| 亚洲缚视频在线观看| 国产成人精品免费久久久久| 成人在线精品视频| 国产成人自拍视频在线观看| 成人在线一区二区| 亚洲成人中文字幕| 亚洲成色777777女色窝| 久久精品国产99国产精品澳门| 亚洲色图激情小说| 一本色道久久88综合日韩精品| 91精品久久久久久久久久| 九色精品美女在线| 亚洲欧美国产制服动漫| 在线观看中文字幕亚洲| 亚洲午夜国产成人av电影男同| 欧美—级a级欧美特级ar全黄| 97精品久久久| 亚洲国产一区二区三区四区| 国产一区二区黑人欧美xxxx| 亚洲国产中文字幕久久网| 国产日韩综合一区二区性色av| 91情侣偷在线精品国产| 精品久久久久久久久久久久久| 欧美午夜精品在线| 日本亚洲欧洲色α| 欧美成人h版在线观看| 精品中文字幕在线观看| 国产在线视频欧美| 欧美激情视频一区二区三区不卡| 日韩国产欧美精品在线| 亚洲天堂日韩电影| 欧美一级淫片播放口| 91免费人成网站在线观看18| 中文字幕日韩综合av| 日韩精品在线观看网站| 国产精品美女久久| 久久久久久这里只有精品| 欧美激情日韩图片| 中文字幕久热精品在线视频| 中文字幕亚洲一区在线观看| 欧美高清视频在线播放| 5566日本婷婷色中文字幕97| 欧美日韩加勒比精品一区| 免费不卡在线观看av| 亚洲老头同性xxxxx| 欧美日本国产在线| 欧亚精品中文字幕| 91免费国产视频| 91麻豆国产精品| 欧美视频中文在线看| 亚洲成avwww人| 国内精品国产三级国产在线专| 中国日韩欧美久久久久久久久| 日韩中文字幕久久| 国产欧美一区二区三区视频| 尤物99国产成人精品视频| 国产91在线高潮白浆在线观看| 国产精品永久在线| 欧美制服第一页| 国产色综合天天综合网| 98精品国产自产在线观看| 国产精品三级在线| 国产精品中文字幕久久久| 欧美噜噜久久久xxx| 中文一区二区视频| 在线观看国产精品日韩av| 日韩在线播放av| 国产精品久久久久久久久久尿| 欧美激情一级欧美精品| 国产成人黄色av| 国内免费久久久久久久久久久| 欧美夫妻性生活视频| 亚洲人成伊人成综合网久久久| 国产精品久久久久999| 国产精品91视频| 国产精自产拍久久久久久蜜| 国产美女扒开尿口久久久| 亚洲欧美综合图区| 成人在线中文字幕| 国产日韩综合一区二区性色av| 亚洲美女又黄又爽在线观看| 欧美日韩视频免费播放| 国内精品久久久久久影视8| 日韩精品视频中文在线观看| 九色成人免费视频| 久久精品国产久精国产一老狼|