Android Connectivity学习笔记–Bluetooth

Android Connectivity学习笔记–Bluetooth

1. 应用场景

  • 设备近距离传递数据的一种方式,无需通过网络连接,节省流量
  • 数据交换方便,理论上可传输任意类型数据

2. 使用流程

(1) 权限声明

首先必须打开的是android.permission.BLUETOOTH权限,如果同时要将此应用做服务端使用(即监听客户端的连接),则同时应打开android.permission.BLUETOOTH_ADMIN权限(一般应用都需要实现这个功能),如下:

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

同时蓝牙要在有效区域内才工作,因此需要位置权限,如下:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

这两个是危险权限,在Android 6.0以上的设备上需要做运行时权限的申请(此处省略)。

(2) 基本操作

在两个设备连接之前有一些基本操作需要完成,比如:查看设备是否支持蓝牙、打开蓝牙、查看已配对设备、扫描周围设备等。

android.bluetooth.BluetoothAdapter是蓝牙API重要的类,大多数蓝牙相关的操作都通过BluetoothAdapter来完成,通过其静态方法getDefaultAdapter()来获得BluetoothAdapter单例:

private BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
查看设备是否支持蓝牙

通过是否获取到BluetoothAdapter单例可以判断出设备是否支持蓝牙,对于某些不支持蓝牙的设备,通过getDefaultAdapter()获取的BluetoothAdapter对象为null:

if (mBluetoothAdapter == null) {
    // 说明设备不支持使用蓝牙
    return;
}else{
    // 设备支持使用蓝牙
}
查看开启状态并打开蓝牙

通过BluetoothAdapterisEnabled()方法判断当前设备是否已经打开蓝牙,该方法返回true则表示蓝牙已经打开,返回false表示蓝牙处于关闭状态。

打开蓝牙有两种方式,一种是用户手动进入设置界面打开蓝牙,这样的用户体验不好。另一种是应用通过启动一个系统Activity完成在应用内开启蓝牙的操作,这样可以避免用户在系统设置和应用之间切换,此时需要指定IntentactionBluetoothAdapter.ACTION_REQUEST_ENABLE,如下:

if(mBluetoothAdapter.isEnabled()){
    // 蓝牙已经开启
}else{
    // 蓝牙设备未开启,引导用户开启
    Intent intent = new Intent();
    intent.setAction(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    startActivityForResult(intent, ENABLE_BLUETOOTH_REQUEST_CODE);
}

为获取开启结果,需使用startActivityForResult(Intent, int)方法来启动该Activity,然后在onActivityResult(int, int, Intent)中获取开启结果。当且仅当resultCode == RESULT_OK时才说明蓝牙开启成功,如下:

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == ENABLE_BLUETOOTH_REQUEST_CODE){
        if(resultCode == RESULT_OK){
            // 说明蓝牙已经成功开启,这时广播接收器会收到通知,因此不需要在这里处理
        }else{
            // 蓝牙未成功开启,可能是用户取消了开启,或者开启过程中遇到异常
        }
    }
}

系统在蓝牙的工作状态发生变化时会发出action为的BluetoothAdapter.ACTION_STATE_CHANGEDBroadcast通知应用,因此可以注册相应的BroadcastReceiver来接收。其中intent携带的BluetoothAdapter.EXTRA_STATE为变化后蓝牙的工作状态,BluetoothAdapter.EXTRA_PREVIOUS_STATE为变化前蓝牙的工

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JavaWeb是指使用Java技术开发Web应用程序的一种技术架构,主要包括Servlet、JSP、JavaBean、JDBC等技术。以下是一些JavaWeb学习笔记的内容。 1. Servlet Servlet是JavaWeb中最基本的技术之一,它是JavaWeb应用程序中的一个Java类,用于处理HTTP请求和响应。Servlet可以通过继承HttpServlet类或实现Servlet接口来创建,其中HttpServlet类已经封装了一些常用的方法。 2. JSP JSP(JavaServer Pages)是一种动态网页技术,它允许在HTML页面中嵌入Java代码。JSP页面首先会被翻译成Java代码,然后编译成Servlet。JSP的优点是易于开发和维护,缺点是效率比较低。 3. JavaBean JavaBean是一种Java类,用于封装数据,它通常包含私有的实例变量、公共的getter和setter方法以及一个无参构造方法。JavaBean可以在JSP页面或Servlet中使用,也可以通过EL表达式获取其属性值。 4. JDBC JDBC(Java Database Connectivity)是Java连接数据库的标准API,它提供了一组接口和类,用于执行数据库操作。JDBC可以连接各种类型的数据库,包括MySQL、Oracle、SQL Server等。 5. MVC MVC(Model-View-Controller)是一种架构模式,用于将应用程序分成三个部分:模型、视图和控制器。模型用于封装数据和业务逻辑,视图负责展示数据,控制器用于协调模型和视图之间的交互。MVC模式可以使应用程序更加清晰、易于维护和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值