今天给大家带来蓝牙开发的基础,主要展示的是程序搜到蓝牙会通过list展示出来,并实时排序,远近与信号强弱


首先我们要有次jar包



我们先判断手机能否支持蓝牙功能


if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) { Toast.makeText(this, "蓝牙不支持", Toast.LENGTH_SHORT).show();}
 


然后我们看看蓝牙是否打开


if (!ylwlmanager.isBluetoothEnabled()) {   Toast.makeText(this, "蓝牙没有打开", Toast.LENGTH_SHORT).show();}

把list 适配器全初始化一下


private void UIinit() {
final YlwlManager ylwlmanager = YlwlManager.getInstance(mcontext);
newDevicesListView = (ListView) findViewById(R.id.new_devices); deviceAdapter = new DeviceAdapter(this, deviceList); newDevicesListView.setAdapter(deviceAdapter);
 //把蓝牙接收打开  这里可以用个button控制  作者直接就打开了
   ylwlmanager.scanLeDevice(true);   ylwlmanager.setYlwlManagerListener(lis);
}

蓝牙监听

YlwlManagerListener lis = new YlwlManagerListener() {   @Override   public void onUpdateBeacon(final ArrayList<BluetoothDeviceAndRssi> beacons) {      /**  * 传多个beacon过来 已经做好了排序 , 距离 连接状态(BluetoothDeviceAndRssi isConn方法)  * 也随时改变  */  runOnUiThread(new Runnable() {         @Override         public void run() {            deviceList = beacons;            Collections.sort(deviceList);// 距离排序            deviceAdapter = new DeviceAdapter(DeviceListActivity.this, deviceList);            newDevicesListView.setAdapter(deviceAdapter);         }      });   }   @Override   public void onNewBeacon(BluetoothDeviceAndRssi beacon) {      /**  * 传单个beacon过来  */  }   @Override   public void onNewBeaconDataChang(BluetoothDeviceAndRssi beacon) {      /**  * 传单个beacon过来 而且是mac地址不变 距离变 连接状态变  */  }};


下面是适配器代码


public class DeviceAdapter   extends BaseAdapter {      Context context;      List<BluetoothDeviceAndRssi> devices;      LayoutInflater inflater;      public DeviceAdapter(Context context,            List<BluetoothDeviceAndRssi> devices) {         this.context = context;         inflater = LayoutInflater.from(context);         this.devices = devices;      }      @Override      public int getCount() {         return devices.size();      }      @Override      public Object getItem(int position) {         return devices.get(position);      }      @Override      public long getItemId(int position) {         return position;      }      @Override      public View getView(int position, View convertView, ViewGroup parent) {         ViewGroup vg = null;         if (convertView != null) {            vg = (ViewGroup) convertView;         } else {            vg = (ViewGroup) inflater                  .inflate(R.layout.device_item, null);         }         BluetoothDeviceAndRssi bluetoothdeviceandrssi = devices               .get(position);         TextView tvadd = ((TextView) vg.findViewById(R.id.address));         TextView tvname = ((TextView) vg.findViewById(R.id.name));         ImageView image_rssi = (ImageView) vg.findViewById(R.id.image_rssi);         byte rssival = (byte) bluetoothdeviceandrssi.getRssi();         if (rssival > (-60)) {            image_rssi.setImageResource(R.drawable.icon_rssi6);         } else if (rssival > (-75)) {            image_rssi.setImageResource(R.drawable.icon_rssi5);         } else if (rssival > (-90)) {            image_rssi.setImageResource(R.drawable.icon_rssi4);         } else if (rssival > (-100)) {            image_rssi.setImageResource(R.drawable.icon_rssi3);         } else if (rssival > (-110)) {            image_rssi.setImageResource(R.drawable.icon_rssi2);         } else {            image_rssi.setImageResource(R.drawable.icon_rssi1);         }         if (bluetoothdeviceandrssi.getBluetoothdevice().getName() == null) {            tvname.setText("Unknow Name");         } else {            tvname.setText(bluetoothdeviceandrssi.getBluetoothdevice()                  .getName());         }         tvadd.setText("mac地址"+ bluetoothdeviceandrssi.getBluetoothdevice().getAddress());         return vg;      }   }


图片是这个样子




最后重要的是
AndroidManifest.xml


我们先判断手机能否支持蓝牙功能


<service    android:name="com.yunliwuli.beacon.kit.service.UartService"    android:enabled="true" />


权限


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

over

需要jar包请私密

作者水平有限,不喜勿喷




我们先判断手机能否支持蓝牙功能

更多相关文章

  1. IE 和android浏览器上页面图片加载判断
  2. Android实现中文按拼音排序方法
  3. Android(安卓)blueZ HCI(一):hciconfig实现及常用方法
  4. Android(安卓)蓝牙开发(三)蓝牙Hid 开发
  5. Android(安卓)SdkVersion区别及获取版本信息
  6. Android中判断手机是否联网实例
  7. Android(安卓)-- 经验分享
  8. 在js和java中判断手机访问的是ios系统还是android系统
  9. Android(安卓)webview 监听是否滚动到底部

随机推荐

  1. Android之TabHost的几种使用方法
  2. Android(安卓)控件的显示隐藏上下左右移
  3. Android(安卓)6.0运行时权限小结
  4. Android“时区”的那些事儿(1)
  5. Android(安卓)学习资料。
  6. android 仿花椒直播中星星从底部往上移动
  7. android 正则表达式
  8. 【Android】创建Popwindow弹出菜单的两种
  9. 最新最全的js判断移动设备及操作系统
  10. android eclipse 创建虚拟机时界面的OK键