1.添加蓝牙权限

 <uses-permission android:name = "android.permission.BLUETOOTH"/>
<!--启用应用启动设备发现或者操作蓝牙设备的超级管理员-->
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

2.获取蓝牙设备

bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (bluetoothAdapter == null) {
Toast.makeText(MainActivity.this, "未找到设备", Toast.LENGTH_LONG).show();
return;
} if (!bluetoothAdapter.isEnabled()) {
Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
}

3.搜索设备

Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBondedDevices();
if (pairedDevices.size() > 0) {
// Loop through paired devices
for (final BluetoothDevice device : pairedDevices) {
// Add the name and address to an array adapter to show in a ListView
final Button btnDevice = findViewById(R.id.device_btn);
btnDevice.setText(device.getAddress());
btnDevice.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {try {
new ConnectThread(device).run();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
}

4.连接设备

private class ConnectThread extends Thread {
private BluetoothDevice mDevice;
private BluetoothSocket mSocket; public ConnectThread(BluetoothDevice device) throws IOException {
mDevice = device;
mSocket = device.createInsecureRfcommSocketToServiceRecord(UUID.randomUUID());
Log.d("aaa", "start");
} public void run() {
// 关闭发现设备
bluetoothAdapter.cancelDiscovery();
try {
mSocket.connect();
} catch (IOException connectException) {
try {
mSocket.close();
} catch (IOException closeException) {
return;
}
}
Log.d("aaa", "connected");
// 自定义方法
manageConnectedSocket(mSocket);
} private void manageConnectedSocket(BluetoothSocket socket) {
//读取数据
} public void cancle() {
try {
mSocket.close();
} catch (IOException closeException) { }
}
}

Android蓝牙操作的更多相关文章

  1. Android 蓝牙操作详解

    1.启用蓝牙并使设备处于可发现状态    1.1 在使用BluetoothAdapter类的实例进操作之前,应启用isEnable()方法检查设备是否启用了蓝牙适配器.       // 使用意图提示 ...

  2. Android蓝牙操作笔记

    蓝牙是一种支持设备短距离传输数据的无线技术.android在2.0以后提供了这方面的支持. 从查找蓝牙设备到能够相互通信要经过几个基本步骤(本机做为服务器): 1.设置权限 在manifest中配置 ...

  3. Android蓝牙操作笔记(转)

    蓝牙是一种支持设备短距离传输数据的无线技术.android在2.0以后提供了这方面的支持. 从查找蓝牙设备到能够相互通信要经过几个基本步骤(本机做为服务器): 1.设置权限 在manifest中配置 ...

  4. android蓝牙打印机

    您还未登录!|登录|注册|帮助 首页 业界 移动 云计算 研发 论坛 博客 下载 更多 reality_jie的专栏 编程的过程是一种微妙的享受       目录视图 摘要视图 订阅 CSDN2013 ...

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

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

  6. Android蓝牙开发深入解析

    1. 使用蓝牙的响应权限  代码如下: <uses-permission android:name="android.permission.BLUETOOTH" /> ...

  7. android -- 蓝牙 bluetooth (四)OPP文件传输

    在前面android -- 蓝牙 bluetooth (一) 入门文章结尾中提到了会按四个方面来写这系列的文章,前面已写了蓝牙打开和蓝牙搜索,这次一起来看下蓝牙文件分享的流程,也就是蓝牙应用opp目录 ...

  8. 深入了解Android蓝牙Bluetooth——《基础篇》

    什么是蓝牙?   也可以说是蓝牙技术.所谓蓝牙(Bluetooth)技术,实际上是一种短距离无线电技术,是由爱立信公司公司发明的.利用"蓝牙"技术,能够有效地简化掌上电脑.笔记本电 ...

  9. 深入了解Android蓝牙Bluetooth——《进阶篇》

    在 [深入了解Android蓝牙Bluetooth--<基础篇>](http://blog.csdn.net/androidstarjack/article/details/6046846 ...

随机推荐

  1. [转帖]国内拉取google kubernetes镜像

    国内拉取google kubernetes镜像 2019年04月19日 01:19:03 willblog 阅读数 4231 标签: kubernetes 更多 个人分类: kubernetes   ...

  2. thinkPHP连接数据库报错:PDOException in Connection.php line 295

    跑去网上找了N多方法来尝试,重装apache.mysql.安装集成软件都试过了.错误一样. 后来细细分析,PDOException in Connection指的不就是PDO异常吗? 然后去了解了一些 ...

  3. unity ugui image更换图片

    1:利用资源加载方式 using UnityEngine; using System.Collections; using UnityEngine.UI; public class ChangeIma ...

  4. python之字符串类型及其操作

    1.1字符串类型的表示 字符串是字符的序列表示,可以由一对单引号('). 双引号(")或三引号(’")构成.其中,单引号和双引号都可以表示单行字符串,两者作用相同.使用单引号时,双 ...

  5. cube打包后css顺序错误

    先说下解决办法: 把import {...} from cube-ui放在 import App from './App.vue'的前面 不然会产生如下错误 正确的顺序

  6. vue导航栏制作

    1,在components新建commnn目录,然后再新建nav目录,在此目录下新建nav-bottom.vue文件和nav-item.vue文件 2,nav-bottom.vue中的内容: < ...

  7. python之项目依赖管理

    生成所有依赖清单 requirements.txt 1.  pipreqs 工具 安装) pip install pipreqs 执行生成依赖列表命令) pipreqs ./ 完善版本: pipreq ...

  8. vue入门:(class与style绑定)

    对象语法 数组语法 一.对象语法 1.1对象语法绑定HTML Class 语法:v-bind:class="{'className1':boolean1,'className2':boole ...

  9. vue-路由动态切换title

    router.js { path: '/nav', component: () => import('../view/nav.vue'), meta:{ title:'nav', } }, { ...

  10. Go学习笔记【一、概述】

    工作需要,即将要把部分查询计算的逻辑翻译成Go语言,来提升查询效率 在此需要对Go语言进行学习,先把入门教程浏览了一遍,发现有些语法和C很类似,还有部分类似于Python,还没有深入学习,先开个坑,业 ...