Android BluetoothAdapter 使用(二)

Android BluetoothAdapter 使用(二)

本篇文章主要讲下蓝牙设备的配对.

1: 蓝牙设备列表展示

下 面是蓝牙设备adapter的代码:

package com.test.bluetooth;import android.bluetooth.BluetoothDevice;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;import java.util.List;/*** @Author: zh* @Time: 23-12-12.* @Email: * @Describe:*/
public class DeviceAdapter extends BaseAdapter {private Context context;private List<BluetoothDevice> list;public DeviceAdapter(Context context, List<BluetoothDevice> list) {this.context = context;this.list = list;}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if (convertView == null) {convertView = LayoutInflater.from(context).inflate(R.layout.item_device, parent, false);}BluetoothDevice bluetoothDevice = list.get(position);TextView name = convertView.findViewById(R.id.item_name);TextView address = convertView.findViewById(R.id.item_address);name.setText(bluetoothDevice.getName());address.setText(bluetoothDevice.getAddress());View viewById = convertView.findViewById(R.id.item_btn);viewById.setOnClickListener(v -> {if (deviceConnect != null)deviceConnect.doAction(bluetoothDevice);});return convertView;}DeviceConnect deviceConnect;public void setDeviceConnect(DeviceConnect deviceConnect) {this.deviceConnect = deviceConnect;}public interface DeviceConnect {void doAction(BluetoothDevice bluetoothDevice);}}

item布局如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="15dp"android:layout_marginTop="15dp"android:id="@+id/item_name"android:text="xxxxx"android:textSize="20sp"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/item_address"android:layout_marginTop="5dp"android:layout_marginLeft="15dp"android:textSize="16sp"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="16sp"android:text="配对"android:layout_marginTop="5dp"android:layout_marginLeft="15dp"android:id="@+id/item_btn"/><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:layout_marginTop="15dp"android:background="#333"/>
</LinearLayout>

另外由于嵌套使用listview. 这里简单自定义了listview,重新计算了高度.

package com.test.bluetooth;import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;public class MyListView extends ListView {public MyListView(Context context, AttributeSet attrs) {super(context, attrs);}@Overridepublic void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int mExpandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);super.onMeasure(widthMeasureSpec, mExpandSpec);}
}

扫描蓝牙设备列表的代码,可以看下我的上篇文章,这里简单写下:

private final BroadcastReceiver receiver = new BroadcastReceiver() {public void onReceive(Context context, Intent intent) {String action = intent.getAction();if (BluetoothDevice.ACTION_FOUND.equals(action)) {// Discovery has found a device. Get the BluetoothDevice// object and its info from the Intent.BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);String deviceName = device.getName();String deviceHardwareAddress = device.getAddress(); // MAC addressif (!TextUtils.isEmpty(deviceName)){listFind.add(device);findAdapter.notifyDataSetChanged();}Log.d(TAG, "onReceive: deviceName:" + deviceName + "; deviceHardwareAddress:" + deviceHardwareAddress);}}
};
findAdapter.setDeviceConnect(new DeviceAdapter.DeviceConnect() {@Overridepublic void doAction(BluetoothDevice bluetoothDevice) {bindDevice(bluetoothDevice.getAddress());}
});

配对设备的代码如下:

private void bindDevice(String address) {BluetoothDevice remoteDevice = bluetoothAdapter.getRemoteDevice(address);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {remoteDevice.createBond();}
}

点击效果如下:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/277714.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode—459.重复的子字符串【简单】

2023每日刷题&#xff08;五十九&#xff09; Leetcode—459.重复的子字符串 算法思想 巧解的算法思想 实现代码 从第一个位置开始到s.size()之前&#xff0c;看s字符串是否是ss的子串 class Solution { public:bool repeatedSubstringPattern(string s) {return (s s).fin…

DDoS原生防护和Web应用防火墙组合使用方案

本文介绍了为网站类业务同时部署DDoS原生防护和Web应用防火墙的配置方法。该方案适用于为网站业务同时防御四层DDoS攻击和七层Web攻击、CC攻击的场景。 前提条件 已创建ECS实例并部署了业务相关的应用&#xff0c;ECS实例拥有公网IP地址且网站有域名。 说明 如果网站用于在中国…

python初试二

连接数据库 Django为多种数据库后台提供了统一的调用API。根据需求不同&#xff0c;Django可以选择不同的数据库后台。MySQL算是最常用的数据库。我们这里将Django和MySQL连接。 在Linux终端下启动mysql: $mysql -u root -p 在MySQL中创立Django项目的数据库&#xff1a; …

解决因找不到qt5core.dll文件而导致无法执行代码问题

Qt5core.dll是Qt5框架的核心模块&#xff0c;用于提供基本的Qt功能。如果在代码执行过程中找不到qt5core.dll&#xff0c;可能导致相关功能无法正常使用。以下是五种详细解决方法、qt5core.dll文件详细介绍以及丢失原因。 一、qt5core.dll文件详细介绍 文件名称&#xff1a;q…

科技铸就企业转型钢筋铁骨,群硕获评2023年度数字化影响力企业

12月15日&#xff0c;STIF2023第四届国际科创节暨DSC2023国际数字服务大会在北京顺利举行&#xff0c;本次大会以“数实融合 推动高质量发展”为主题&#xff0c;各大科技服务企业齐聚一堂&#xff0c;共同探讨2023科技发展新趋势。 大会上&#xff0c;群硕软件继2022年后再度…

C++相关闲碎记录(13)

1、排序算法 &#xff08;1&#xff09;对所有元素排序sort(), stable_sort() #include "algostuff.hpp"using namespace std;int main() {deque<int> coll;INSERT_ELEMENTS(coll, 1, 9);INSERT_ELEMENTS(coll, 1, 9);PRINT_ELEMENTS(coll, "on entry: …

智慧电力运维系统

智慧电力运维系统是一个集成了智能化运维管理工具的系统&#xff0c;旨在提高用户侧电力运行安全&#xff0c;降低运维成本。该系统通过安装在电力设备上的多种传感器和现场监测装置&#xff0c;远程在线监测、监视电力设备的运行状态及设备周围的环境状况&#xff08;如&#…

Jmeter接口自动化测试,看完就会了。。。

前面我们复习了jmeter 的非图形化界面运行我们的测试接口。 大家可以翻看往期jmeter的文章。 具体来说就是&#xff1a;jmeter -n -t ****.jmx -l ****.jtl -e -o **** (*号代表路径&#xff09; 生成了测试报告。 但是这个非图形化运行有个缺点&#xff0c;就是只能运…

C语言:指针与数组易错辨析

前言&#xff1a; 在学校学习指针和数组的联系时&#xff0c;对指针与数组的结合产生了很大的疑惑&#xff0c;后来不断查找资料&#xff0c;本人对指针与数组的综合有了一定的理解&#xff0c;现进行综合讨论辨析 数组指针&#xff1a; 数组指针&#xff0c;即为指向数组类…

系列六、DCL

一、DCL 1.1、概述 DCL的英文全称是&#xff1a;Data Control Language&#xff0c;中文意思为&#xff1a; 数据控制语言&#xff0c;是用来管理数据库的用户以及控制用户的权限的。 1.2、管理用户 1.2.1、查询用户 select * from mysql.user; 说明&#xff1a; 其中 Host代…

C语言 简单使用qsort 比较结构体字符串大小

1.先简单调用C语言封装好的冒泡排序 #include<stdio.h> #include<stdlib.h> #include<string.h> //qsort C语言封装好的冒泡排序 可比较任何类型 struct stu{char name[20];int age; }; //用户自己写的函数。函数名字也作为函数指针使用。是qsort函数的第四…

转载: iOS 优雅的处理网络数据

转载&#xff1a; iOS 优雅的处理网络数据 原文链接&#xff1a;https://juejin.cn/post/6952682593372340237 相信大家平时在用 App 的时候, 往往有过这样的体验&#xff0c;那就是加载网络数据等待的时间过于漫长&#xff0c;滚动浏览时伴随着卡顿&#xff0c;甚至在没有网…