今天给大家带来蓝牙开发的基础,主要展示的是程序搜到蓝牙会通过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. Linux常用命令大全(转)

    (转)Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因, ...

  2. Nginx访问权限配置

    最近建个人网站,在服务器上新建了一个用户zengfp,并且把网站的目录放到了/home/zengfp/www目录下,配置的nginx: server { listen 80 default_serve ...

  3. wireshark抓包工具详细说明及操作使用

    https://blog.csdn.net/qq78069460/article/details/79153895

  4. Java简介及开发环境配置

    Java简介 Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称.(注:Sun公司已于2009年04月20日被Oracle公司收购) 目前, ...

  5. XamarinSQLite教程Xamarin.iOS项目中打开数据库文件

    XamarinSQLite教程Xamarin.iOS项目中打开数据库文件 以下是打开MyDocuments.db数据库的具体操作步骤: (1)将Mac电脑上的MyDocuments.db数据库移动到W ...

  6. CODEVS 2455 繁忙的都市 SCOI2005(洛谷 P2330)

    题目描述 Description 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两 ...

  7. SFTPUtils工具类及使用

    配置maven <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</arti ...

  8. AC自动机相关Fail树和Trie图相关基础知识

    装载自55242字符串AC自动机专栏 fail树 定义 把所有fail指针逆向,这样就得到了一棵树 (因为每个节点的出度都为1,所以逆向后每个节点入度为1,所以得到的是一棵树) 还账- 有了这个东西, ...

  9. BZOJ4077 : [Wf2014]Messenger

    二分答案,让$A$推迟出发$mid$的时间. 对于每个相邻的时间区间,两个点都是做匀速直线运动. 以$A$为参照物,那么$A$不动,$B$作匀速直线运动. 若线段$B$到$A$的距离不超过$mid$, ...

  10. Windows10关机问题----只有“睡眠”、“更新并重启”、“更新并关机”,但是又不想更新,解决办法

    最近的一个问题,电脑关机的时候发现,只有“睡眠”.“更新并重启”.“更新并关机” 内心很是煎熬.... 尝试了N种方式,然后总结如下: 第一种方式:(表示自己window的系统用着挺好,力荐) 1.打 ...