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, 对象被写入有关的标识;


  • 相关阅读:
    Educational Codeforces Round 20 A. Maximal Binary Matrix(模拟)
    SCU 4440 Rectangle (思维+暴力)
    poj 2799 IP Networks (模拟/水题)
    Uva 10629 Huge Mods (指数循环节)
    FUZ 1759 Super A^B mod C (指数循环节/模板)
    Uva 11149 Power of Matrix (倍增法/模板)
    poj 3863&&Gym
    Codeforces 392C Yet Another Number Sequence (矩阵快速幂+二项式展开)
    Uva 11029 Leading and Trailing (求n^k前3位和后3位)
    Uva 10006 Carmichael Numbers (快速幂)
  • 原文地址:https://www.cnblogs.com/hanshuliang/p/4215464.html
Copyright © 2011-2022 走看看