蓝牙开发(二)----- 基于SPP蓝牙协议的Android应用开发

前言

  几篇博客写下来,发现写博客还是挺花时间的,但是收获也不少,可以对以前做过的东西做一个比较全面的总结,加深印象,而不是在本地笔记上随便做点简单的记录敷衍了事,个人觉得在时间允许的情况还是要抽时间多做总结。

简介

  在之前写的文章 基于蓝牙Ble的Android应用开发 中提到过,除了从Android4.3之后引入的Ble低功耗蓝牙之外,还有一种很早之前存在的比较常见的就是基于Spp协议的经典蓝牙,也就是我们经常说的传统蓝牙。两种蓝牙的主要区别在上一篇中也已经做了介绍,就不再赘述。

  那么传统蓝牙有哪些应用场景呢?举几个比较常见的列子,比如说我们常见的蓝牙耳机、蓝牙音箱等,基本上都是基于传统蓝牙开发的。那么传统蓝牙开发和Ble开发主要有哪些异同点呢?让笔者在开发步骤中和Ble开发步骤对比,一 一简要说明。

开发步骤

第一、第二步和Ble开发的步骤一样,第三步注册的广播不一样

准备

准备需要用到的UUID:

public static final UUID SPP_UUID =UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

  和Ble开发类似,先准备好需要用到的UUID,但是这个UUID有点特别,它不再是从硬件或者嵌入式工程师手中拿过来,而是协议栈中默认的UUID(需要用到这个UUID的系统方法有说明,后面会说)。另外需要注意的是,根据Google开发文档中的介绍,当前如果是连接的对象是另一台Android手机,则需要只用自定义的UUID。

第一步 配置清单文件
	<uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
   <!-- Android6.0及以上必须获取位置权限,否则无法扫描到周边的蓝牙设备  --> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
第二步 检查设备,获取BluetoothAdapter
/**
 	* 判断该设备是否支持Ble并获取BluetoothAdapter
 	*/
	public Boolean ensureBLEExists() {
		if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
			return false;
		}
		//获取BluetoothAdapter
		BluetoothManager bm = (BluetoothManager)getSystemService(Context.BLUETOOTH_SERVICE);
		if (bm!=null) mBluetoothAdapter = bm.getAdapter();
		return true;
	}
第三步 注册广播,开启蓝牙
 /**
     * 注册蓝牙监听广播
     */
    public void registerReceiver(){
        if (mBluetoothReceiver==null) mBluetoothReceiver=new BluetoothReceiver();
        IntentFilter filter = new IntentFilter();
        filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);//蓝牙开关状态
        filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);//蓝牙开始扫描
        filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);//蓝牙扫描结束
        filter.addAction(BluetoothDevice.ACTION_FOUND);//发现设备
        filter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);//设备绑定状态变化
        filter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);//连接上设备
        filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);//连接断开
        filter.addAction(BluetoothDevice.ACTION_PAIRING_REQUEST);//收到配对请求
        mContext.registerReceiver(mBluetoothReceiver,filter);
    }

 private class BluetoothReceiver extends BroadcastReceiver{

        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
//            if (D) LogUtil.i("收到广播:"+action);
            switch (action) {
                case BluetoothAdapter.ACTION_STAT
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值