国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

android獲取附近藍牙設備并計算距離的實例代碼

2019-12-12 01:15:44
字體:
來源:轉載
供稿:網友

需要用到本地藍牙適配器

// 獲取本地藍牙適配器mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

判斷是否支持藍牙,并確認打開該功能。

// 判斷手機是否支持藍牙 if (mBluetoothAdapter == null) {  Toast.makeText(this, "設備不支持藍牙", Toast.LENGTH_SHORT).show();  finish(); } // 判斷是否打開藍牙 if (!mBluetoothAdapter.isEnabled()) {  // 彈出對話框提示用戶是后打開  Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);  startActivityForResult(intent, 1);  // 不做提示,強行打開  // mBluetoothAdapter.enable(); }else {  // 不做提示,強行打開   mBluetoothAdapter.enable(); }

獲取手機已經配對的藍牙設備

// 獲取已經配對的設備 Set<BluetoothDevice> pairedDevices = mBluetoothAdapter   .getBondedDevices(); // 判斷是否有配對過的設備 if (pairedDevices.size() > 0) {  for (BluetoothDevice device : pairedDevices) {   // 遍歷   mDevicesList.add(device.getAddress());   tvDevices.append(device.getName() + ":" + device.getAddress() + "/n");  } }

注冊異步搜索藍牙設備的廣播

// 找到設備的廣播IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);// 注冊廣播registerReceiver(receiver, filter);// 搜索完成的廣播filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);// 注冊廣播registerReceiver(receiver, filter);

搜索藍牙的方法

 private void scanBluth() {// 設置進度條setProgressBarIndeterminateVisibility(true);setTitle("正在搜索...");// 判斷是否在搜索,如果在搜索,就取消搜索if (mBluetoothAdapter.isDiscovering()) {mBluetoothAdapter.cancelDiscovery();}// 開始搜索mBluetoothAdapter.startDiscovery();}

廣播接收器

 private final BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) {  // 收到的廣播類型  String action = intent.getAction();  // 發現設備的廣播  if (BluetoothDevice.ACTION_FOUND.equals(action)) {   // 從intent中獲取設備   BluetoothDevice device = intent     .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);   String aa = tvDevices.getText().toString() + "";   if (aa.contains(device.getAddress())) {    return;   } else {    // 判斷是否配對過    if (device.getBondState() != BluetoothDevice.BOND_BONDED) {     // 添加到列表     short rssi = intent.getExtras().getShort(       BluetoothDevice.EXTRA_RSSI);     int iRssi = abs(rssi); // 將藍牙信號強度換算為距離     double power = (iRssi - 59) / 25.0;     String mm = new Formatter().format("%.2f", pow(10, power)).toString();     tvDevices.append(device.getName() + ":"       + device.getAddress() + " :" + mm + "m" + "/n");    }else {    }   }   // 搜索完成  } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED    .equals(action)) {   // 關閉進度條   setProgressBarIndeterminateVisibility(true);   setTitle("搜索完成!");   mBLHandler.sendEmptyMessageDelayed(1, 1000);  } }};

代碼里我添加了循環掃描的Handler

// 用于循環掃描藍牙的hangdlerHandler mBLHandler = new Handler() { @Override public void handleMessage(Message msg) {  super.handleMessage(msg);  switch (msg.what) {   case 1:    scanBluth();    break;   default:    break;  } }};

項目里用到前期寫的一個權限管理器,具體去前邊看,地址:

//m.survivalescaperooms.com/article/133350.htm

用到的權限為

//所有手機需要的權限,藍牙功能才能正常使用 <uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />//部分手機(如小米等)需要將下面兩個權限添加進去,藍牙功能才能正常使用<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

以上這篇android獲取附近藍牙設備并計算距離的實例代碼就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 深圳市| 东兰县| 襄樊市| 苍梧县| 时尚| 会昌县| 阜南县| 湖口县| 清水县| 张家川| 通河县| 福泉市| 长沙县| 虹口区| 祁门县| 平度市| 友谊县| 台南县| 札达县| 乐清市| 中宁县| 宝丰县| 大同市| 保靖县| 唐海县| 通许县| 巴塘县| 澄迈县| 沅陵县| 嘉鱼县| 崇仁县| 青浦区| 外汇| 弥勒县| 大英县| 宜阳县| 安龙县| 奉新县| 贡觉县| 榆社县| 深泽县|