今天给大家带来蓝牙开发的基础,主要展示的是程序搜到蓝牙会通过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. TMS320DM642学习----第一篇(硬件连接)

    DSP设备型号:SEED-DTK-VPM642(目前实验室用途:视频处理,图像处理方向,预计搭载目标跟踪以及云台防抖等算法) 官网链接:http://www.seeddsp.com/index.php ...

  2. string通过逗号分割不用split方法

    package com.simon; import java.util.ArrayList; import java.util.Iterator; import java.util.List; pub ...

  3. CentOS7配置FTP服务器增强版~(零基础学会FTP配置)

    ps:原文不知出处,但是原文也不能正常启动,这里做了一些修改!如果能正常配置请在下方留言让更多的人看到,因为之前我本人照着网上的教程安装卸载了十多次也无法正常使用,不希望后面的兄弟继续浪费时间,如果不 ...

  4. KMP算法2

    给定一个主串s,一个子串sub,将主串中的所有子串替换成replaceStr,并将最终结果输出来. #include<stdio.h> #include<string.h> # ...

  5. Python常用模块--re

    Python内部的re--传闻中的正则模块,是无数初学者心中的噩梦,几乎到了谈正则色变的地步. 1.正则是干什么的 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常 ...

  6. 依赖配置中心实现注有@ConfigurationProperties的bean相关属性刷新

    配置中心是什么 配置中心,通过key=value的形式存储环境变量.配置中心的属性做了修改,项目中可以通过配置中心的依赖(sdk)立即感知到.需要做的就是如何在属性发生变化时,改变带有@Configu ...

  7. pyspider 启动错误

    [root@localhost python]# pyspider all [W 180629 07:08:26 run:413] phantomjs not found, continue runn ...

  8. IIS7.0提示“请求筛选模块被配置为拒绝包含双重转义序列的请求”处理办法

    请求筛选模块被配置为拒绝包含双重转义序列的请求.HTTP 错误 404.11 - Not Found 解决办法: 1.单击 开始 . 在 开始搜索 框中, 键入 Notepad. 右击 记事本 , 然 ...

  9. Nagios安装与配置

    安装包获取 Nagios https://sourceforge.net/projects/nagios/files/ Nagios Plugins https://www.nagios.org/do ...

  10. VMware5.5-vCenter的安装准备及安装

    vSphere 最近公司来了新同事,为了帮助他尽快熟悉VM-vsphere,一块复习了下,并把实验总结为文档. 声明:本例是以王隆杰老师的vsphere5.5教程为基础和线索进行的,由于时间匆忙,可能 ...