BluetoothGuide文档格式.docx
- 文档编号:17030809
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:15
- 大小:53.98KB
BluetoothGuide文档格式.docx
《BluetoothGuide文档格式.docx》由会员分享,可在线阅读,更多相关《BluetoothGuide文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
4.FindingDevices
1.Queryingpaireddevices
2.Discoveringdevices
1.Enablingdiscoverability
5.ConnectingDevices
1.Connectingasaserver
2.Connectingasaclient
6.ManagingaConnection
Seealso
1.BluetoothChatsampleapp
TheAndroidplatformincludessupportfortheBluetoothnetworkstack,whichallowsadevicetowirelesslyexchangedatawithotherBluetoothdevices.TheapplicationframeworkprovidesaccesstotheBluetoothfunctionalitythroughtheAndroidBluetoothAPIs.TheseAPIsletapplicationswirelesslyconnecttootherBluetoothdevices,enablingpoint-to-pointandmultipointwirelessfeatures.
UsingtheBluetoothAPIs,anAndroidapplicationcanperformthefollowing:
∙ScanforotherBluetoothdevices
∙QuerythelocalBluetoothadapterforpairedBluetoothdevices
∙EstablishRFCOMMchannels
∙Connecttootherdevicesthroughservicediscovery
∙Transferdatatoandfromotherdevices
∙Managemultipleconnections
TheBasics
ThisdocumentdescribeshowtoustheAndroidBluetoothAPIstoaccomplishthefourmajortasksnecessarytocommunicateusingBluetooth:
settingupBluetooth,findingdevicesthatareeitherpairedoravailableinthelocalarea,connectingdevices,andtransferringdatabetweendevices.
AlloftheBluetoothAPIsareavailableintheandroid.bluetoothpackage.Here'
sasummaryoftheclassesyouwillneedtocreateBluetoothconnections:
BluetoothAdapter
RepresentsthelocalBluetoothadapter(Bluetoothradio).TheBluetoothAdapteristheentry-pointforallBluetoothinteraction.Usingthis,youcandiscoverotherBluetoothdevices,queryalistofbonded(paired)devices,instantiateaBluetoothDeviceusingaknownMACaddress,andcreateaBluetoothServerSockettolistenforcommunicationsfromotherdevices.
BluetoothDevice
RepresentsaremoteBluetoothdevice.UsethistorequestaconnectionwitharemotedevicethroughaBluetoothSocketorqueryinformationaboutthedevicesuchasitsname,address,class,andbondingstate.
BluetoothSocket
RepresentstheinterfaceforaBluetoothsocket(similartoaTCPSocket).ThisistheconnectionpointthatallowsanapplicationtoexchangedatawithanotherBluetoothdeviceviaInputStreamandOutputStream.
BluetoothServerSocket
Representsanopenserversocketthatlistensforincomingrequests(similartoaTCPServerSocket).InordertoconnecttwoAndroiddevices,onedevicemustopenaserversocketwiththisclass.WhenaremoteBluetoothdevicemakesaconnectionrequesttothethisdevice,theBluetoothServerSocketwillreturnaconnectedBluetoothSocketwhentheconnectionisaccepted.
BluetoothClass
DescribesthegeneralcharacteristicsandcapabilitiesofaBluetoothdevice.Thisisaread-onlysetofpropertiesthatdefinethedevice'
smajorandminordeviceclassesanditsservices.However,thisdoesnotreliablydescribeallBluetoothprofilesandservicessupportedbythedevice,butisusefulasahinttothedevicetype.
BluetoothPermissions
InordertouseBluetoothfeaturesinyourapplication,youneedtodeclareatleastoneoftwoBluetoothpermissions:
BLUETOOTHandBLUETOOTH_ADMIN.
YoumustrequesttheBLUETOOTHpermissioninordertoperformanyBluetoothcommunication,suchasrequestingaconnection,acceptingaconnection,andtransferringdata.
YoumustrequesttheBLUETOOTH_ADMINpermissioninordertoinitiatedevicediscoveryormanipulateBluetoothsettings.MostapplicationsneedthispermissionsolelyfortheabilitytodiscoverlocalBluetoothdevices.Theotherabilitiesgrantedbythispermissionshouldnotbeused,unlesstheapplicationisa"
powermanager"
thatwillmodifyBluetoothsettingsuponuserrequest.Note:
IfyouuseBLUETOOTH_ADMINpermission,thenmustalsohavetheBLUETOOTHpermission.
DeclaretheBluetoothpermission(s)inyourapplicationmanifestfile.Forexample:
<
manifest...>
<
uses-permissionandroid:
name="
android.permission.BLUETOOTH"
/>
...
/manifest>
Seethe<
uses-permission>
referenceformoreinformationaboutdeclaringapplicationpermissions.
SettingUpBluetooth
Figure1:
TheenablingBluetoothdialog.
BeforeyourapplicationcancommunicateoverBluetooth,youneedtoverifythatBluetoothissupportedonthedevice,andifso,ensurethatitisenabled.
IfBluetoothisnotsupported,thenyoushouldgracefullydisableanyBluetoothfeatures.IfBluetoothissupported,butdisabled,thenyoucanrequestthattheuserenableBluetoothwithoutleavingyourapplication.Thissetupisaccomplishedintwosteps,usingtheBluetoothAdapter.
1.GettheBluetoothAdapter
TheBluetoothAdapterisrequiredforanyandallBluetoothactivity.TogettheBluetoothAdapter,callthestaticgetDefaultAdapter()method.ThisreturnsaBluetoothAdapterthatrepresentsthedevice'
sownBluetoothadapter(theBluetoothradio).There'
soneBluetoothadapterfortheentiresystem,andyourapplicationcaninteractwithitusingthisobject.IfgetDefaultAdapter()returnsnull,thenthedevicedoesnotsupportBluetoothandyourstoryendshere.Forexample:
BluetoothAdaptermBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
if(mBluetoothAdapter==null){
//DevicedoesnotsupportBluetooth
}
2.EnableBluetooth
Next,youneedtoensurethatBluetoothisenabled.CallisEnabled()tocheckwhetherBluetoothiscurrentlyenable.Ifthismethodreturnsfalse,thenBluetoothisdisabled.TorequestthatBluetoothbeenabled,callstartActivityForResult()withtheACTION_REQUEST_ENABLEactionIntent.ThiswillissuearequesttoenableBluetooththroughthesystemsettings(withoutstoppingyourapplication).Forexample:
if(!
mBluetoothAdapter.isEnabled()){
IntentenableBtIntent=newIntent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent,REQUEST_ENABLE_BT);
AdialogwillappearrequestinguserpermissiontoenableBluetooth,asshowninFigure1.Iftheuserresponds"
Yes,"
thesystemwillbegintoenableBluetoothandfocuswillreturntoyourapplicationoncetheprocesscompletes(orfails).
IfenablingBluetoothsucceeds,yourActivitywillreceivetheRESULT_OKresultcodeintheonActivityResult()callback.IfBluetoothwasnotenabledduetoanerror(ortheuserresponded"
No"
)thentheresultcodewillbeRESULT_CANCELED.
Optionally,yourapplicationcanalsolistenfortheACTION_STATE_CHANGEDbroadcastIntent,whichthesystemwillbroadcastwhenevertheBluetoothstatehaschanged.ThisbroadcastcontainstheextrafieldsEXTRA_STATEandEXTRA_PREVIOUS_STATE,containingthenewandoldBluetoothstates,respectively.PossiblevaluesfortheseextrafieldsareSTATE_TURNING_ON,STATE_ON,STATE_TURNING_OFF,andSTATE_OFF.ListeningforthisbroadcastcanbeusefultodetectchangesmadetotheBluetoothstatewhileyourappisrunning.
Tip:
EnablingdiscoverabilitywillautomaticallyenableBluetooth.IfyouplantoconsistentlyenabledevicediscoverabilitybeforeperformingBluetoothactivity,youcanskipstep2above.Readaboutenablingdiscoverability,below.
FindingDevices
UsingtheBluetoothAdapter,youcanfindremoteBluetoothdeviceseitherthroughdevicediscoveryorbyqueryingthelistofpaired(bonded)devices.
DevicediscoveryisascanningprocedurethatsearchesthelocalareaforBluetoothenableddevicesandthenrequestingsomeinformationabouteachone(thisissometimesreferredtoas"
discovering,"
"
inquiring"
or"
scanning"
).However,aBluetoothdevicewithinthelocalareawillrespondtoadiscoveryrequestonlyifitiscurrentlyenabledtobediscoverable.Ifadeviceisdiscoverable,itwillrespondtothediscoveryrequestbysharingsomeinformation,suchasthedevicename,class,anditsuniqueMACaddress.Usingthisinformation,thedeviceperformingdiscoverycanthenchoosetoinitiateaconnectiontothediscovereddevice.
Onceaconnectionismadewitharemotedeviceforthefirsttime,apairingrequestisautomaticallypresentedtotheuser.Whenadeviceispaired,thebasicinformationaboutthatdevice(suchasthedevicename,class,andMACaddress)issavedandcanbereadusingtheBluetoothAPIs.UsingtheknownMACaddressforaremotedevice,aconnectioncanbeinitiatedwithitatanytimewithoutperformingdiscovery(assumingthedeviceiswithinrange).
Rememberthereisadifferencebetweenbeingpairedandbeingconnected.Tobepairedmeansthattwodevicesareawareofeachother'
sexistence,haveasharedlink-keythatcanbeusedforauthentication,andarecapableofestablishinganencryptedconnectionwitheachother.TobeconnectedmeansthatthedevicescurrentlyshareanRFCOMMchannelandareabletotransmitdatawitheachother.ThecurrentAndroidBluetoothAPI'
srequiredevicestobepairedbeforeanRFCOMMconnectioncanbeestablished.(PairingisautomaticallyperformedwhenyouinitiateanencryptedconnectionwiththeBluetoothAPIs.)
Thefollowingsectionsdescribehowtofinddevicesthathavebeenpaired,ordiscovernewdevicesusingdevicediscovery.
Note:
Android-powereddevicesarenotdiscoverablebydefault.Ausercanmakethedevicediscoverableforalimitedtimethroughthesystemsettings,oranapplicationcanrequestthattheuserenablediscoverabilitywithoutleavingtheapplication.Howtoenablediscoverabilityisdiscussedbelow.
Queryingpaireddevices
Beforeperformingdevicediscovery,itsworthqueryingthesetofpaireddevicestoseeifthedesireddeviceisalreadyknown.Todoso,callgetBondedDevices().ThiswillreturnaSetofBluetoothDevicesrepresentingpaireddevices.Forexample,youcanqueryallpaired
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BluetoothGuide