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

首先我们要有次jar包

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

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包请私密

作者水平有限。不喜勿喷

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

Android 蓝牙开发的更多相关文章

  1. Android 蓝牙开发(整理大全)

    Android蓝牙开发 鉴于国内Android蓝牙开发的例子很少,以及蓝牙开发也比较少用到,所以找的资料不是很全. (一): 由于Android蓝牙的通信都需要用到UUID,如果由手机发起搜索,当搜索 ...

  2. Android蓝牙开发

    Android蓝牙开发 近期做蓝牙小车,须要Android端来控制小车的运动.以此文记录开发过程. 使用HC-06无线蓝牙串口透传模块.对于其它的蓝牙设备本文相同适用. 蓝牙开发的流程: 获取本地蓝牙 ...

  3. Android蓝牙开发教程(三)——蓝牙设备相互通讯

    在上一篇中已经介绍如何连接我们搜索到的蓝牙设备,如果你还没阅读过,建议先看看上一篇文章Android蓝牙开发教程(二)——连接蓝牙设备 在上一篇文章中,无论是自动连接还是被动连接,连接成功后,都是将获 ...

  4. Android 蓝牙开发(3)——蓝牙的详细介绍

    前面的两篇文章,主要是在 Android 官网关于蓝牙介绍的基础上加上自己的理解完成的.主要针对的是 Android 开发中的一些 API 的使用. 第一篇文章 Android 蓝牙开发(1) 主要是 ...

  5. Qt on Android 蓝牙开发

    版权声明:本文为MULTIBEANS ORG研发跟随文章,未经MLT ORG允许不得转载. 最近做项目,需要开发安卓应用,实现串口的收发,目测CH340G在安卓手机上非常麻烦,而且驱动都是Java版本 ...

  6. 【转】android蓝牙开发---与蓝牙模块进行通信--不错

    原文网址:http://www.cnblogs.com/wenjiang/p/3200138.html 近半个月来一直在搞android蓝牙这方面,主要是项目需要与蓝牙模块进行通信.开头的进展很顺利, ...

  7. android蓝牙开发---与蓝牙模块进行通信

    近半个月来一直在搞android蓝牙这方面,主要是项目需要与蓝牙模块进行通信.开头的进展很顺利,但因为蓝牙模块不在我这里,所以只能用手机测试.一开头就发现手机的蓝牙不能用,为了证明这点,我刷了四次不同 ...

  8. Android 蓝牙开发之搜索、配对、连接、通信大全

            蓝牙( Bluetooth®):是一种无线技术标准,可实现固定设备.移动设备和楼宇个人域网之间的短距离数据 交换(使用2.4-2.485GHz的ISM波段的UHF无线电波).蓝牙设备最 ...

  9. Android蓝牙开发浅谈(转)

    http://www.eoeandroid.com/thread-18993-1-1.html 对于一般的软件开发人员来说,蓝牙是很少用到的,尤其是Android的蓝牙开发,国内的例子很少     A ...

随机推荐

  1. VS项目启动后 提示ID为*******的进程当前未运行

    就是VS2015中的这种问题,启动调试时,右下角根本没有IISPress图标出现.我的工程是因为突然停电,就再也调试不了了! 解决办法: 用文本编辑器打开Web项目下的{X}.csproj文件,然后查 ...

  2. 安卓开发中SpannableString之富文本显示效果

    SpannableString其实和String一样,都是一种字符串类型,SpannableString可以直接作为TextView的显示文本,不同的是SpannableString可以通过使用其方法 ...

  3. Java中菜单的实现以及画实线与画虚线之间的自由转化

    1.Java画线 1 import java.awt.Color; import java.awt.Container; import java.awt.Graphics; import java.a ...

  4. antd + node.js + mongoose小总结

    最近开发太忙,都没时间更新博客,想通过这篇博客总结一下相关经验,以备后续能用到: 一.antd 1.onChange of undefined问题:可能是页面中表单取了相同的名称,也可能是在遍历时表单 ...

  5. HTML使用的几个小知识点

    本文主要分享几个网页前端的几个基础知识点,用于零碎的html知识学习,同时也是在实践中的一些心得.最后给出了几个小例子. 1. 网页编程初识 掌握基本的html标签以及CSS语法 学会查看网页的源代码 ...

  6. 开源评测系统hustoj-代码解读

    非常感谢zhblue贡献了这么美丽的代码 为了开发适合自己学校的oj,努力研读代码中,不断的百度,调试,测试 对ubutun,linux的各种文件系统,进程系统,c编程都学习了不少 给大家分享下,希望 ...

  7. 解放F5——React开启模块热更新

    解放F5--React开启模块热更新 在一个正在开发的应用中,刷新页面将会降低你的生产效率:你必须得等待页面加载完毕. 一个大的应用可能会花很多秒钟才能刷新完页面.使用 HMR(模块热替换) 可以避免 ...

  8. 考前停课集训 Day4 雷

    Day 4 今天Rating掉了两百多 为什么呢 因为是真实力打的 倒数第三 没什么好说的了 这才是我的真实水平 强的人一如既往强 作弊的人一落千丈. 只有我.是的,只有我. 被老师嘲讽了,哎,您真的 ...

  9. PAT Basic 1002

    1002 写出这个数 (20 分) 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 1 ...

  10. hnctf安恒--蜘蛛侠呀

    这题不会做,赛场被吊打,事后才明白 首先解压看到是流量包,放在wireshark,过滤http很明显看到no_flag.zip,当时想这是个关键点,然后把时间都浪费在这上了,赛后发现并没有传输数据的包 ...