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

首頁 > 系統(tǒng) > Android > 正文

android獲取附近藍(lán)牙設(shè)備并計算距離的實(shí)例代碼

2019-10-22 18:16:37
字體:
供稿:網(wǎng)友

需要用到本地藍(lán)牙適配器

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

判斷是否支持藍(lán)牙,并確認(rèn)打開該功能。

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

獲取手機(jī)已經(jīng)配對的藍(lán)牙設(shè)備

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

注冊異步搜索藍(lán)牙設(shè)備的廣播

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

搜索藍(lán)牙的方法

 private void scanBluth() {// 設(shè)置進(jìn)度條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();  // 發(fā)現(xiàn)設(shè)備的廣播  if (BluetoothDevice.ACTION_FOUND.equals(action)) {   // 從intent中獲取設(shè)備   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); // 將藍(lán)牙信號強(qiáng)度換算為距離     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)) {   // 關(guān)閉進(jìn)度條   setProgressBarIndeterminateVisibility(true);   setTitle("搜索完成!");   mBLHandler.sendEmptyMessageDelayed(1, 1000);  } }};

代碼里我添加了循環(huán)掃描的Handler

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

項目里用到前期寫的一個權(quán)限管理器,具體去前邊看,

用到的權(quán)限為

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

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


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 扎鲁特旗| 上饶市| 龙州县| 鹿邑县| 西安市| 吴川市| 昆山市| 武胜县| 西乌| 温州市| 十堰市| 黑河市| 灵丘县| 阜康市| 平远县| 定结县| 高青县| 金塔县| 遂平县| 会理县| 苍南县| 饶平县| 津南区| 神农架林区| 尼勒克县| 许昌市| 礼泉县| 阿克苏市| 平谷区| 白玉县| 胶州市| 包头市| 扎赉特旗| 明水县| 辰溪县| 吉林省| 巴林右旗| 通化县| 顺义区| 嘉黎县| 永福县|