【Android 应用开发】BluetoothClass详解
一. BluetoothClass簡(jiǎn)介
1. 繼承關(guān)系
public final class BluetoothClass extends Object implements Parcelable
該類(lèi)是final類(lèi), 不能被繼承, 沒(méi)有子類(lèi);
該類(lèi)繼承了Object類(lèi), 實(shí)現(xiàn)了Parcelable接口;
Parcelable接口 :?
Java中的序列化方法 : 在Java中序列化有兩種方法, 一種是實(shí)現(xiàn)Serializable接口, 一種是實(shí)現(xiàn)Parcelable接口, Serializable接口是J2SE固有支持的, Parcelable是Android支持的, 是Android中特有的, 效率比Serializable高;
序列化實(shí)現(xiàn) :?
Serializable接口實(shí)現(xiàn) : 只需要聲明一下即可;
Parcelable接口實(shí)現(xiàn) :?
a. 聲明實(shí)現(xiàn)的接口Parcelable;
b. 實(shí)現(xiàn)writeToParcel接口, 將對(duì)象序列化成一個(gè)Parcel對(duì)象;
c. 實(shí)例化內(nèi)部對(duì)象Parcelable.Creator, 注意對(duì)象名稱(chēng)必須是"CREATOR", 在這個(gè)內(nèi)部對(duì)象中實(shí)現(xiàn)createFromParcel()方法, 可以將序列化對(duì)象Parcel對(duì)象反序列化為源對(duì)象;?
public static final Parcelable.Creator<T> CREATOR
普通對(duì)象->Parcel對(duì)象 : 使用writeToParcel()方法;
Parcel對(duì)象->普通對(duì)象 : 使用createFromParcel()方法;
使用writeToParcel()方法 和 createFromParcel()方法 可以將普通對(duì)象與Parcel對(duì)象相互進(jìn)行轉(zhuǎn)化, 因此寫(xiě)入對(duì)象的順序要和讀取對(duì)象的順序要保持一致;
Parcel對(duì)象讀寫(xiě)方法 :?
讀寫(xiě)變量 :?
writeByte( byte ), readByte()//讀寫(xiě)byte類(lèi)型數(shù)據(jù) writeDouble(double ), readDouble()//讀寫(xiě)double類(lèi)型數(shù)據(jù) writeFloat(float ), readFloat()//讀寫(xiě)Float類(lèi)型數(shù)據(jù) writeInt(int ), readInt()//讀寫(xiě)int類(lèi)型數(shù)據(jù) writeLong(long ), readLong()//讀寫(xiě)long類(lèi)型數(shù)據(jù) writeString(String), readString()//讀寫(xiě)String類(lèi)型數(shù)據(jù)讀寫(xiě)數(shù)組 :
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介紹
判斷類(lèi)別功能 : BluetoothClass用來(lái)描述一個(gè)藍(lán)牙設(shè)備的通用特性 和功能, 可以根據(jù)這個(gè)類(lèi)判斷藍(lán)牙的類(lèi)別, 可以提供音頻或者電話服務(wù);
藍(lán)牙類(lèi)組成 : 0個(gè)或者多個(gè)服務(wù)類(lèi), 一個(gè)設(shè)備類(lèi);
低精確度 : BluetoothClass只能粗略描述一個(gè)藍(lán)牙設(shè)備, 當(dāng)兩個(gè)設(shè)備連接的時(shí)候, 這個(gè)類(lèi)提供的數(shù)據(jù)不是很準(zhǔn)確;?
高精確度 : SDP請(qǐng)求搜尋的服務(wù)精確度很高, 調(diào)用createRfcommSocketToServiceRecord()和listenUsingRfcommWithServiceRecord()方法創(chuàng)建RFCOMM端口的時(shí)候會(huì)自動(dòng)調(diào)用SDP服務(wù);
二 API解析
1. 內(nèi)部類(lèi)
(1)設(shè)備
class BluetoothClass.Device 作用 : 定義所有 設(shè)備類(lèi)的常量;
(2)服務(wù)
class BluetoothClass.Service作用 : 定義所有的 服務(wù)類(lèi)的常量;
2. 公共方法
(1)描述序列化內(nèi)容
public int describeContents ()作用 : 描述在Parcel序列化對(duì)象中特殊對(duì)象的種類(lèi);返回值 : Parcelable排列的特殊對(duì)象類(lèi)型集合的位掩碼;
(2)比較方法
public boolean equals (Object o)作用 : 比較兩個(gè)對(duì)象是否相等, 可以重寫(xiě)這個(gè)方法;
(3)獲取設(shè)備內(nèi)部類(lèi)
public int getDeviceClass ()
作用 : 返回設(shè)備類(lèi), 這個(gè)設(shè)備類(lèi)可以與BluetoothClass.Device中的常量進(jìn)行對(duì)比, 得到這個(gè)設(shè)備是什么類(lèi)型的設(shè)備;
返回值 : BluetoothClass的設(shè)備類(lèi);?
(4)獲取設(shè)備主類(lèi)
public int getMajorDeviceClass ()作用 : 返回設(shè)備的主類(lèi), 返回的這個(gè)主類(lèi)可以與 BluetoothClass.Device.Major中的常量比較, 確定這個(gè)主類(lèi)是在那個(gè)類(lèi)型的設(shè)備中編碼的;
返回值 : 設(shè)備的主類(lèi);
(5)是否支持服務(wù)類(lèi)
public boolean hasService (int service)作用 : 傳入服務(wù)類(lèi)代碼, 是否支持服務(wù)類(lèi);?
參數(shù) : 服務(wù)類(lèi)常量, 在BluetoothClass.Service中定義;
返回值 : 如果該服務(wù)類(lèi)可以被支持, 返回true;
(6)獲取哈希碼
public int hashCode ()作用 : 返回哈希值, 可以被重寫(xiě);
(7)字符串方法
public int hashCode ()作用 : 建議重寫(xiě);
(8)數(shù)據(jù)寫(xiě)入Parcel
public void writeToParcel (Parcel out, int flags) 作用 : 將類(lèi)寫(xiě)入序列化對(duì)象中;參數(shù) : out, 被寫(xiě)入的parcel對(duì)象; flags, 對(duì)象被寫(xiě)入有關(guān)的標(biāo)識(shí);
總結(jié)
以上是生活随笔為你收集整理的【Android 应用开发】BluetoothClass详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Android 应用开发】Blueto
- 下一篇: 【Android 应用开发】自定义Vie