今天给大家带来蓝牙开发的基础,主要展示的是程序搜到蓝牙会通过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. scrapy 日志一般配置

  2. logging 日志

    1. 四步: import logging #初始化 logger = logging.getLogger("log_name") #设置级别 logger.setLevel(lo ...

  3. HDU 4768 Flyer【二分】||【异或】

    <题目链接> <转载于  >>> > 题目链接: n个社团派发传单,有a,b,c三个参数,派发的规则是,派发给序号为a,a+c....a+k*c,序号要求是小 ...

  4. hdu1429 胜利大逃亡(续) 【BFS】+【状态压缩】

    题目链接:https://vjudge.net/contest/84620#problem/K 题目大意:一个人从起点走到终点,问他是否能够在规定的时间走到,在走向终点的路线上,可能会有一些障碍门,他 ...

  5. python 数据结构之二分查找的递归和普通实现

    二分查找就是待查找的列表进行分半搜索 如下所示 二分查找普通实现: def erfen(alist, item): start = 0 end = len(alist) - 1 while start ...

  6. python数据结构之队列(一)

    队列概念 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 队列是一种先进先出的(First In First Out)的线性表,简称FIFO.允许插入的一端为队尾,允许 ...

  7. 一种表达式语言的解析引擎JEXL简单使用

    Jexl 是一个 Expression Language 的解析引擎, 是为了方便嵌入你的系统或者程序框架的开发中, 他算是实现了 JSTL 中 EL 的延伸版本. 不过也采用了一些 Velocity ...

  8. linux 学习笔记 管道 pipe ls cp mv

    如ls |less -MN 含义把ls结果输出到less [ls]  ==管道== [more] ls命令 ls -a  展示隐藏的文件 <隐藏文件一般以. 开始> ls -t 以时间戳排 ...

  9. angular笔记_2

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  10. Codeforces.226D.The table(构造)

    题目链接 \(Description\) 给定一个\(n\times m\)的矩阵\(A_{i,j}\),每次可以将一列或一行取负.求一个方案使得若干次操作后,每行每列的和都非负. \(n,m\leq ...