zoukankan      html  css  js  c++  java
  • [原]BluetoothClass详解

    一. 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 四大组件学习之ContentProvider三
    JavaScript遍历table
    codecombat之KithGard地牢19-37关代码分享
    【学习笔记】信息系统项目管理-项目採购管理-合同分类
    【记中关村.西北食府.兰州拉面】诗一首
    HDU 1042.N!【高精度乘法】【8月24】
    Mac安装MySQL
    Best Time to Buy and Sell Stock I &amp;&amp; II &amp;&amp; III
    UVALive 6663 Count the Regions 离散+bfs染色_(:зゝ∠)_
    ftk学习记(combox篇)
  • 原文地址:https://www.cnblogs.com/java20131201/p/3472366.html
Copyright © 2011-2022 走看看