前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android 应用开发】BluetoothClass详解

【Android 应用开发】BluetoothClass详解

作者头像
韩曙亮
发布2023-03-27 11:56:35
2470
发布2023-03-27 11:56:35
举报
文章被收录于专栏:韩曙亮的移动开发专栏

一. BluetoothClass简介

1. 继承关系

代码语言:javascript
复制
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对象反序列化为源对象; 

代码语言:javascript
复制
public   static   final  Parcelable.Creator<T> CREATOR 

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

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

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

Parcel对象读写方法

读写变量 : 

代码语言:javascript
复制
writeByte( byte ), readByte()//读写byte类型数据
writeDouble(double ), readDouble()//读写double类型数据
代码语言:javascript
复制
writeFloat(float ), readFloat()//读写Float类型数据
writeInt(int ), readInt()//读写int类型数据
writeLong(long ), readLong()//读写long类型数据
writeString(String), readString()//读写String类型数据

读写数组 :

代码语言:javascript
复制
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)设备

代码语言:javascript
复制
class	BluetoothClass.Device  

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

(2)服务

代码语言:javascript
复制
class	BluetoothClass.Service

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

2. 公共方法

(1)描述序列化内容

代码语言:javascript
复制
public int describeContents ()

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

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

(2)比较方法

代码语言:javascript
复制
public boolean equals (Object o)

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

(3)获取设备内部类

代码语言:javascript
复制
public int getDeviceClass ()

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

返回值 : BluetoothClass的设备类; 

(4)获取设备主类

代码语言:javascript
复制
 public int getMajorDeviceClass ()

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

返回值 : 设备的主类;

(5)是否支持服务类

代码语言:javascript
复制
public boolean hasService (int service)

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

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

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

(6)获取哈希码

代码语言:javascript
复制
public int hashCode ()

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

(7)字符串方法

代码语言:javascript
复制
public int hashCode ()

作用 : 建议重写;

(8)数据写入Parcel

代码语言:javascript
复制
public void writeToParcel (Parcel out, int flags)

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一. BluetoothClass简介
    • 1. 继承关系
      • 2. BluetoothClass介绍
      • 二 API解析
        • 1. 内部类
          • (1)设备
          • (2)服务
        • 2. 公共方法
          • (1)描述序列化内容
          • (2)比较方法
          • (3)获取设备内部类
          • (4)获取设备主类
          • (5)是否支持服务类
          • (6)获取哈希码
          • (7)字符串方法
          • (8)数据写入Parcel
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档