一. BluetoothClass简介

1. 继承关系

public final class BluetoothClass extends Object implements Parcelable

该类是final类, 不能被继承, 没有子类;

该类继承了Object类, 实现了Parcelable接口;

Parcelable接口 :

Java中的序列化方法 : 在Java中序列化有两种方法, 一种是实现Serializable接口, 一种是实现Parcelable接口, Serializable接口是J2SE固有支持的, Parcelable是Android支持的, 是Android中特有的, 效率比Serializable高;

序列化实现 :

Serializable接口实现 : 只需要声明一下即可;

Parcelable接口实现 :

a. 声明实现的接口Parcelable;

b. 实现writeToParcel接口, 将对象序列化成一个Parcel对象;

c. 实例化内部对象Parcelable.Creator, 注意对象名称必须是"CREATOR", 在这个内部对象中实现createFromParcel()方法, 可以将序列化对象Parcel对象反序列化为源对象;

public   static   final  Parcelable.Creator<T> CREATOR 

普通对象->Parcel对象 : 使用writeToParcel()方法;

Parcel对象->普通对象 : 使用createFromParcel()方法;

使用writeToParcel()方法 和 createFromParcel()方法 可以将普通对象与Parcel对象相互进行转化, 因此写入对象的顺序要和读取对象的顺序要保持一致;

Parcel对象读写方法 :

读写变量 :

writeByte( byte ), readByte()//读写byte类型数据
writeDouble(double ), readDouble()//读写double类型数据
writeFloat(float ), readFloat()//读写Float类型数据
writeInt(int ), readInt()//读写int类型数据
writeLong(long ), readLong()//读写long类型数据
writeString(String), readString()//读写String类型数据

读写数组 :

writeBooleanArray( boolean []), readBooleanArray( boolean []), createBooleanArray()
writeByteArray(byte []), writeByteArray( byte [],  int ,  int ), readByteArray( byte []), createByteArray()
writeCharArray(char []), readCharArray( char []), createCharArray()
writeDoubleArray(double []), readDoubleArray( double []), createDoubleArray()
writeFloatArray(float []), readFloatArray( float []), createFloatArray()
writeIntArray(int []), readIntArray( int []), createIntArray()
writeLongArray(long []), readLongArray( long []), createLongArray()
writeStringArray(String[]), readStringArray(String[]), createStringArray()
writeSparseBooleanArray(SparseBooleanArray), readSparseBooleanArray() 

2. BluetoothClass介绍

判断类别功能 : BluetoothClass用来描述一个蓝牙设备的通用特性功能, 可以根据这个类判断蓝牙的类别, 可以提供音频或者电话服务;

蓝牙类组成 : 0个或者多个服务类, 一个设备类;

低精确度 : BluetoothClass只能粗略描述一个蓝牙设备, 当两个设备连接的时候, 这个类提供的数据不是很准确;

高精确度 : SDP请求搜寻的服务精确度很高, 调用createRfcommSocketToServiceRecord()和listenUsingRfcommWithServiceRecord()方法创建RFCOMM端口的时候会自动调用SDP服务;

二 API解析

1. 内部类

(1)设备

class	BluetoothClass.Device  

作用 : 定义所有设备类的常量;

(2)服务

class	BluetoothClass.Service

作用 : 定义所有的服务类的常量;

2. 公共方法

(1)描述序列化内容

public int describeContents ()

作用 : 描述在Parcel序列化对象中特殊对象的种类;

返回值 : Parcelable排列的特殊对象类型集合的位掩码;

(2)比较方法

public boolean equals (Object o)

作用 : 比较两个对象是否相等, 可以重写这个方法;

(3)获取设备内部类

public int getDeviceClass ()

作用 : 返回设备类, 这个设备类可以与BluetoothClass.Device中的常量进行对比, 得到这个设备是什么类型的设备;

返回值 : BluetoothClass的设备类;

(4)获取设备主类

 public int getMajorDeviceClass ()

作用 : 返回设备的主类, 返回的这个主类可以与 BluetoothClass.Device.Major中的常量比较, 确定这个主类是在那个类型的设备中编码的;

返回值 : 设备的主类;

(5)是否支持服务类

public boolean hasService (int service)

作用 : 传入服务类代码, 是否支持服务类; 

参数 : 服务类常量, 在BluetoothClass.Service中定义;

返回值 : 如果该服务类可以被支持, 返回true;

(6)获取哈希码

public int hashCode ()

作用 : 返回哈希值, 可以被重写;

(7)字符串方法

public int hashCode ()

作用 : 建议重写;

(8)数据写入Parcel

public void writeToParcel (Parcel out, int flags)

作用 : 将类写入序列化对象中;

参数 : out, 被写入的parcel对象; flags, 对象被写入有关的标识;

【Android 应用开发】BluetoothClass详解的更多相关文章

  1. 《Android NFC 开发实战详解 》简介+源码+样章+勘误ING

    <Android NFC 开发实战详解>简介+源码+样章+勘误ING SkySeraph Mar. 14th  2014 Email:skyseraph00@163.com 更多精彩请直接 ...

  2. ANDROID L——Material Design详解(UI控件)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lolli ...

  3. Cordova 打包 Android release app 过程详解

    Cordova 打包 Android release app 过程详解 时间 -- :: SegmentFault 原文 https://segmentfault.com/a/119000000517 ...

  4. Cocos2d-x 3.X手游开发实例详解

    Cocos2d-x 3.X手游开发实例详解(最新最简Cocos2d-x手机游戏开发学习方法,以热门游戏2048.卡牌为例,完整再现手游的开发过程,实例丰富,代码完备,Cocos2d-x作者之一林顺和泰 ...

  5. Android中Service(服务)详解

    http://blog.csdn.net/ryantang03/article/details/7770939 Android中Service(服务)详解 标签: serviceandroidappl ...

  6. 给 Android 开发者的 RxJava 详解

    我从去年开始使用 RxJava ,到现在一年多了.今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 .而最近这几个 ...

  7. Android:TextView跑马灯-详解

    Android:TextView跑马灯_详解 引言: TextView之所以需要跑马灯,是由于文字太长,或者是吸引眼球. 关键代码如下: android:singleLine="true&q ...

  8. Android的init过程详解(一)

    Android的init过程详解(一) Android的init过程(二):初始化语言(init.rc)解析 本文使用的软件版本 Android:4.2.2 Linux内核:3.1.10 本文及后续几 ...

  9. android ------- 开发者的 RxJava 详解

    在正文开始之前的最后,放上 GitHub 链接和引入依赖的 gradle 代码: Github: https://github.com/ReactiveX/RxJava https://github. ...

  10. Android开发之MdiaPlayer详解

    Android开发之MdiaPlayer详解 MediaPlayer类可用于控制音频/视频文件或流的播放,我曾在<Android开发之基于Service的音乐播放器>一文中介绍过它的使用. ...

随机推荐

  1. UIKit中ImageView动画堆叠显示的微调整

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 网上看到一个PackingList项目(如果需要源代码可以Q我 ...

  2. Redis 4.0新功能介绍

    Redis 的作者 antirez 在三天之前通过博客文章<The first release candidate of Redis 4.0 is out>发布了 Redis 4.0 的第 ...

  3. Ant简介

    Ant,apache开源项目,基于Java的构建工具,是一个小程序.它通过自动完成所有的编译代码,运行测试以及 打包重新部署等繁琐费力的任务来帮助软件团队开发大程序: Ant的目标是自动完成所有的构建 ...

  4. Dynamics CRM 将实体从高级查找列表中移除不可见

    有时我们不需要将某个实体显示给一般用户比如配置实体,但是这种类型的实体有时候又需要给一般用户读权限ODATA的时候得能读,站点地图上的隐藏比较容易用工具配置下权限即可.其实做到这步一般就可以了但有的客 ...

  5. Cocos2D创建多彩文本显示标签

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) Cocos2D中默认的CCLableTTF类从源代码里看是支持 ...

  6. ubuntu连接android设备(附最简单方法)

    在ubuntu下连接android设备,虽然不用像windows那样安装驱动,然而却会遇见一个错误:输入adb shell,会提示insufficient permissions for device ...

  7. android获取设备唯一标示

    概述 有时需要对用户设备进行标识,所以希望能够得到一个稳定可靠并且唯一的识别码.虽然Android系统中提供了这样设备识别码,但是由于Android系统版本.厂商定制系统中的Bug等限制,稳定性和唯一 ...

  8. 最简单的视频编码器:基于libx264(编码YUV为H.264)

    ===================================================== 最简单的视频编码器系列文章列表: 最简单的视频编码器:编译 最简单的视频编码器:基于libx ...

  9. UNIX网络编程——通用套接字选项

    1. SO_BROADCAST 套接字选项 本选项开启或禁止进程发送广播消息的能力.只有数据报套接字支持广播,并且还必须是在支持广播消息的网络上(例如以太网,令牌环网等).我们不可能在点对点链路上进行 ...

  10. 错误:One or more post-processing actions failed. Consult the OPP service log for details

     今天在做采购出入库明细报表的时候,有的时候能正常打印,有的时候报 One or more post-processing actions failed. Consult the OPP serv ...