android蓝牙开发

上传人:痛*** 文档编号:85544339 上传时间:2022-05-05 格式:DOC 页数:19 大小:61KB
收藏 版权申诉 举报 下载
android蓝牙开发_第1页
第1页 / 共19页
android蓝牙开发_第2页
第2页 / 共19页
android蓝牙开发_第3页
第3页 / 共19页
资源描述:

《android蓝牙开发》由会员分享,可在线阅读,更多相关《android蓝牙开发(19页珍藏版)》请在装配图网上搜索。

1、-Android平台支持蓝牙网络协议栈,实现蓝牙设备之间数据的无线传输。本文档描述了怎样利用android平台提供的蓝牙API去实现蓝牙设备之间的通信,蓝牙设备之间的通信主要包括了四个步骤:设置蓝牙设备;寻找局域网可能或者匹配的设备;连接设备;设备之间的数据传输。以下是建立蓝牙连接的所需要的一些根本类: BluetoothAdapter类:代表了一个本地的蓝牙适配器。他是所有蓝牙交互的的入口点。利用它你可以发现其他蓝牙设备,查询绑定了的设备,使用的MAC地址实例化一个蓝牙设备和建立一个BluetoothServerSocket作为效劳器端来监听来自其他设备的连接。 BluetoothDevic

2、e类:代表了一个远端的蓝牙设备,使用它请求远端蓝牙设备连接或者获取远端蓝牙设备的名称、地址、种类和绑定状态。其信息是封装在bluetoothsocket中。 Bluetoothsocket类:代表了一个蓝牙套接字的接口类似于tcp中的套接字,他是应用程序通过输入、输出流与其他蓝牙设备通信的连接点。 Blueboothserversocket类:代表翻开效劳连接来监听可能到来的连接请求属于server端,为了连接两个蓝牙设备必须有一个设备作为效劳器翻开一个效劳套接字。当远端设备发起连接请求的时候,并且已经连接到了的时候,Blueboothserversocket类将会返回一个bluetooths

3、ocket。 Bluetoothclass类:描述了一个蓝牙设备的一般特点和能力。他的只读属性集定义了设备的主、次设备类和一些相关效劳。然而,他并没有准确的描述所有该设备所支持的蓝牙文件和效劳,而是作为对设备种类来说的一个小小暗示。下面说说具体的编程实现:首先,要操作蓝牙,先要在AndroidManifest.*ml里参加权限其次,必须确定你的设备支持蓝牙,并保证他可以用。如果你的设备支持蓝牙,将它使能。当然,有两种方法,一种是在你的系统设置里开启蓝牙,另外一中是在你的应用程序里启动蓝牙功能,第一种方法就不讲了,具体讲一个第二种方法: 首先通过调用静态方法getDefaultAdapter()

4、获取蓝牙适配器bluetoothadapter,以后你就可以使用该对象了。如果返回为空,the story is over。BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();if (mBluetoothAdapter = null) / Device does not support Bluetooth其次,调用isEnabled()来查询当前蓝牙设备的状态,如果返回为false,则表示蓝牙设备没有开启,接下来你需要封装一个ACTION_REQUEST_ENABLE请求到intent里面,调用st

5、artActivityForResult()方法使能蓝牙设备,例如:if (!mBluetoothAdapter.isEnabled() Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);至此,如不出意外,恭喜你的蓝牙设备已经开启了,接下来需要查找周边可能存在的蓝牙设备了。查找设备: 使用bluetoothadapter类里的方法,你可以查找远端设备不过蓝牙查找的围好似是在十米以

6、吧或者查询在你手机上已经匹配或者说绑定的其他手机了。当然需要确定对方蓝牙设备已经开启或者已经开启了被发现使能功能对方设备是可以被发现的是你能够发起连接的前提条件。如果该设备是可以被发现的,会反响回来一些对方的设备信息,比方名字、MAC地址等,利用这些信息,你的设备就可以选择去向对方初始化一个连接。如果你是第一次与该设备连接,则一个配对的请求就会自动的显示给用户。当设备配对好之后,他的一些根本信息主要是名字和MAC被保存下来并可以使用蓝牙的API来读取。使用的MAC地址就可以对远端的蓝牙设备发起连接请求。 匹配好的设备和连接上的设备的不同点:匹配好只是说明对方设备发现了你的存在,并拥有一个共同的

7、识别码,并且可以连接。连接上:表示当前设备共享一个RFM信道并且两者之间可以交换数据。也就是是说蓝牙设备在建立RFM信道之前,必须是已经配对好了的。怎么查询匹配好的设备: 在建立连接之前你必须先查询配对好了的蓝牙设备集你周围的蓝牙设备可能不止一个,以便你选取哪一个设备进展通信,例如你可以你可以查询所有配对的蓝牙设备,并使用一个数组适配器将其打印显示出来: Set pairedDevices = mBluetoothAdapter.getBondedDevices();/ If there are paired devicesif (pairedDevices.size() 0) / Loop

8、through paired devices for (BluetoothDevice device : pairedDevices) / Add the name and address to an array adapter to show in a ListView mArrayAdapter.add(device.getName() + /n + device.getAddress(); 建立一个蓝牙连接只需要MAC地址就已经足够了。扫描设备: 扫描设备,只需要简单的调用startDiscovery()方法,这个扫描的过程大概持续是12秒,应用程序为了ACTION_FOUND动作需要注

9、册一个BroadcastReceiver来承受设备扫描到的信息。对于每一个设备,系统都会播送ACTION_FOUND动作。例如: / Create a BroadcastReceiver for ACTION_FOUNDprivate final BroadcastReceiver mReceiver = new BroadcastReceiver() public void onReceive(Conte*t conte*t, Intent intent) String action = intent.getAction(); / When discovery finds a device

10、if (BluetoothDevice.ACTION_FOUND.equals(action) / Get the BluetoothDevice object from the Intent BluetoothDevice device = intent.getParcelableE*tra(BluetoothDevice.E*TRA_DEVICE); / Add the name and address to an array adapter to show in a ListView mArrayAdapter.add(device.getName() + /n + device.get

11、Address(); ;/ Register the BroadcastReceiverIntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);registerReceiver(mReceiver, filter); / Dont forget to unregister during onDestroy注意:扫描的过程是一个很消耗资源的过程,一旦你找到你需要的设备之后,在发起连接请求之前,确保你的程序调用cancelDiscovery()方法停顿扫描。显然,如果你已经连接上一个设备,启动扫描会减少你的通信带宽。

12、 使能被发现:Enabling discoverability 如果你想使你的设备能够被其他设备发现,将ACTION_REQUEST_DISCOVERABLE动作封装在intent中并调用startActivityForResult(Intent, int)方法就可以了。他将在不使你应用程序退出的情况下使你的设备能够被发现。缺省情况下的使能时间是120秒,当然你可以可以通过添加E*TRA_DISCOVERABLE_DURATION字段来改变使能时间最大不超过300秒,这是出于对你设备上的信息平安考虑。例如:Intent discoverableIntent = newIntent(Blueto

13、othAdapter.ACTION_REQUEST_DISCOVERABLE);discoverableIntent.putE*tra(BluetoothAdapter.E*TRA_DISCOVERABLE_DURATION, 300);startActivity(discoverableIntent);运行该段代码之后,系统会弹出一个对话框来提示你启动设备使能被发现次过程中如果你的蓝牙功能没有开启,系统会帮你开启,并且如果你准备对该远端设备发现一个连接,你不需要开启使能设备被发现功能,因为该功能只是在你的应用程序作为效劳器端的时候才需要。连接设备: 在你的应用程序中,想建立两个蓝牙设备之间的

14、连接,你必须实现客户端和效劳器端的代码因为任何一个设备都必须可以作为效劳端或者客户端。一个开启效劳来监听,一个发起连接请求使用效劳器端设备的MAC地址。当他们都拥有一个蓝牙套接字在同一RFEM信道上的时候,可以认为他们之间已经连接上了。效劳端和客户端通过不同的方式或者他们的蓝牙套接字。当一个连接监听到的时候,效劳端获取到蓝牙套接字。当客户可翻开一个FRM信道给效劳器端的时候,客户端获取到蓝牙套接字。 注意:在此过程中,如果两个蓝牙设备还没有配对好的,android系统会通过一个通知或者对话框的形式来通知用户。RFM连接请求会在用户选择之前阻塞。当你想要连接两台设备时,一个必须作为效劳端通过持有

15、一个翻开的bluetoothserversocket,目的是监听外来连接请求,当监听到以后提供一个连接上的bluetoothsocket给客户端,当客户端从bluetoothserversocket得到bluetoothsocket以后就可以销毁bluetoothserversocket,除非你还想监听更多的连接请求。 建立效劳套接字和监听连接的根本步骤: 首先通过调用listenUsingRfmWithServiceRecord(String, UUID)方法来获取bluetoothserversocket对象,参数string代表了该效劳的名称,UUID代表了和客户端连接的一个标识128位

16、格式的字符串ID,相当于pin码,UUID必须双方匹配才可以建立连接。其次调用accept方法来监听可能到来的连接请求,当监听到以后,返回一个连接上的蓝牙套接字bluetoothsocket。最后,在监听到一个连接以后,需要调用close方法来关闭监听程序。一般蓝牙设备之间是点对点的传输注意:accept方法不应该放在主Acitvity里面,因为他是一种阻塞调用在没有监听到连接请求之间程序就一直停在那里。解决方法是新建一个线程来管理。例如: private class AcceptThread e*tends Thread private final BluetoothServerSocket

17、 mmServerSocket; public AcceptThread() / Use a temporary object that is later assigned to mmServerSocket, / because mmServerSocket is final BluetoothServerSocket tmp = null; try / MY_UUID is the apps UUID string, also used by the client code tmp = mAdapter.listenUsingRfmWithServiceRecord(NAME, MY_UU

18、ID); catch (IOE*ception e) mmServerSocket = tmp; public void run() BluetoothSocket socket = null; / Keep listening until e*ception occurs or a socket is returned while (true) try socket = mmServerSocket.accept(); catch (IOE*ception e) break; / If a connection was accepted if (socket != null) / Do wo

19、rk to manage the connection (in a separate thread) manageConnectedSocket(socket); mmServerSocket.close(); break; /* Will cancel the listening socket, and cause the thread to finish */ public void cancel() try mmServerSocket.close(); catch (IOE*ception e) 客户端的连接: 为了初始化一个与远端设备的连接,需要先获取代表该设备的一个bluetoot

20、hdevice对象。通过bluetoothdevice对象来获取bluetoothsocket并初始化连接: 具体步骤: 使用bluetoothdevice对象里的方法createRfmSocketToServiceRecord(UUID)来获取bluetoothsocket。UUID就是匹配码。然后,调用connect方法来。如果远端设备接收了该连接,他们将在通信过程中共享RFFM信道,并且connect方法返回。例如: private class ConnectThread e*tends Thread private final BluetoothSocket mmSocket; pri

21、vate final BluetoothDevice mmDevice;public ConnectThread(BluetoothDevice device) / Use a temporary object that is later assigned to mmSocket, / because mmSocket is final BluetoothSocket tmp = null; mmDevice = device; / Get a BluetoothSocket to connect with the given BluetoothDevice try / MY_UUID is

22、the apps UUID string, also used by the server code tmp = device.createRfmSocketToServiceRecord(MY_UUID); catch (IOE*ception e) mmSocket = tmp; public void run() / Cancel discovery because it will slow down the connection mAdapter.cancelDiscovery(); try / Connect the device through the socket. This w

23、ill block / until it succeeds or throws an e*ception mmSocket.connect(); catch (IOE*ception connectE*ception) / Unable to connect; close the socket and get out try mmSocket.close(); catch (IOE*ception closeE*ception) return; / Do work to manage the connection (in a separate thread) manageConnectedSo

24、cket(mmSocket); /* Will cancel an in-progress connection, and close the socket */ public void cancel() try mmSocket.close(); catch (IOE*ception e) 注意:conncet方法也是阻塞调用,一般建立一个独立的线程中来调用该方法。在设备discover过程中不应该发起连接connect,这样会明显减慢速度以至于连接失败。且数据传输完成只有调用close方法来关闭连接,这样可以节省系统部资源。管理连接主要涉及数据的传输: 当设备连接上以后,每个设备都拥有各自

25、的bluetoothsocket。现在你就可以实现设备之间数据的共享了。1.首先通过调用getInputStream()和getOutputStream()方法来获取输入输出流。然后通过调用read(byte) 和 write(byte).方法来读取或者写数据。2.实现细节:因为读取和写操作都是阻塞调用,需要建立一个专用线程来管理。3. private class ConnectedThread e*tends Thread private final BluetoothSocket mmSocket; private final InputStream mmInStream; private

26、 final OutputStream mmOutStream; public ConnectedThread(BluetoothSocket socket) mmSocket = socket; InputStream tmpIn = null; OutputStream tmpOut = null; / Get the input and output streams, using temp objects because / member streams are final try tmpIn = socket.getInputStream(); tmpOut = socket.getO

27、utputStream(); catch (IOE*ception e) mmInStream = tmpIn; mmOutStream = tmpOut; public void run() byte buffer = new byte1024; / buffer store for the stream int bytes; / bytes returned from read() / Keep listening to the InputStream until an e*ception occurs while (true) try / Read from the InputStrea

28、m bytes = mmInStream.read(buffer); / Send the obtained bytes to the UI Activity mHandler.obtainMessage(MESSAGE_READ, bytes, -1, buffer) .sendToTarget(); catch (IOE*ception e) break; /* Call this from the main Activity to send data to the remote device */ public void write(byte bytes) try mmOutStream

29、.write(bytes); catch (IOE*ception e) /* Call this from the main Activity to shutdown the connection */ public void cancel() try mmSocket.close(); catch (IOE*ception e) Android蓝牙UUIDandroid 蓝牙UUID,蓝牙开发必备居家良药。ServiceDiscoveryServerServiceClassID_UUID = 00001000-0000-1000-8000-00805F9B34FBBrowseGroupDe

30、scriptorServiceClassID_UUID = 00001001-0000-1000-8000-00805F9B34FBPublicBrowseGroupServiceClass_UUID = 00001002-0000-1000-8000-00805F9B34FB*蓝牙串口效劳SerialPortServiceClass_UUID = 00001101-0000-1000-8000-00805F9B34FBLANAccessUsingPPPServiceClass_UUID = 00001102-0000-1000-8000-00805F9B34FB*拨号网络效劳DialupNe

31、tworkingServiceClass_UUID = 00001103-0000-1000-8000-00805F9B34FB*信息同步效劳IrMCSyncServiceClass_UUID = 00001104-0000-1000-8000-00805F9B34FBSDP_OBE*ObjectPushServiceClass_UUID = 00001105-0000-1000-8000-00805F9B34FB*文件传输效劳OBE*FileTransferServiceClass_UUID = 00001106-0000-1000-8000-00805F9B34FBIrMCSyncmand

32、ServiceClass_UUID = 00001107-0000-1000-8000-00805F9B34FBSDP_HeadsetServiceClass_UUID = 00001108-0000-1000-8000-00805F9B34FBCordlessTelephonyServiceClass_UUID = 00001109-0000-1000-8000-00805F9B34FBSDP_AudioSourceServiceClass_UUID = 0000110A-0000-1000-8000-00805F9B34FBSDP_AudioSinkServiceClass_UUID =

33、0000110B-0000-1000-8000-00805F9B34FBSDP_AVRemoteControlTargetServiceClass_UUID = 0000110C-0000-1000-8000-00805F9B34FBSDP_AdvancedAudioDistributionServiceClass_UUID = 0000110D-0000-1000-8000-00805F9B34FBSDP_AVRemoteControlServiceClass_UUID = 0000110E-0000-1000-8000-00805F9B34FBVideoConferencingServic

34、eClass_UUID = 0000110F-0000-1000-8000-00805F9B34FBInterServiceClass_UUID = 00001110-0000-1000-8000-00805F9B34FB*蓝牙 效劳Fa*ServiceClass_UUID = 00001111-0000-1000-8000-00805F9B34FBHeadsetAudioGatewayServiceClass_UUID = 00001112-0000-1000-8000-00805F9B34FBWAPServiceClass_UUID = 00001113-0000-1000-8000-00

35、805F9B34FBWAPClientServiceClass_UUID = 00001114-0000-1000-8000-00805F9B34FB*个人局域网效劳PANUServiceClass_UUID = 00001115-0000-1000-8000-00805F9B34FB*个人局域网效劳NAPServiceClass_UUID = 00001116-0000-1000-8000-00805F9B34FB*个人局域网效劳GNServiceClass_UUID = 00001117-0000-1000-8000-00805F9B34FBDirectPrintingServiceCla

36、ss_UUID = 00001118-0000-1000-8000-00805F9B34FBReferencePrintingServiceClass_UUID = 00001119-0000-1000-8000-00805F9B34FBImagingServiceClass_UUID = 0000111A-0000-1000-8000-00805F9B34FBImagingResponderServiceClass_UUID = 0000111B-0000-1000-8000-00805F9B34FBImagingAutomaticArchiveServiceClass_UUID = 000

37、0111C-0000-1000-8000-00805F9B34FBImagingReferenceObjectsServiceClass_UUID = 0000111D-0000-1000-8000-00805F9B34FBSDP_HandsfreeServiceClass_UUID = 0000111E-0000-1000-8000-00805F9B34FBHandsfreeAudioGatewayServiceClass_UUID = 0000111F-0000-1000-8000-00805F9B34FBDirectPrintingReferenceObjectsServiceClass

38、_UUID = 00001120-0000-1000-8000-00805F9B34FBReflectedUIServiceClass_UUID = 00001121-0000-1000-8000-00805F9B34FBBasicPringingServiceClass_UUID = 00001122-0000-1000-8000-00805F9B34FBPrintingStatusServiceClass_UUID = 00001123-0000-1000-8000-00805F9B34FB*人机输入效劳HumanInterfaceDeviceServiceClass_UUID = 000

39、01124-0000-1000-8000-00805F9B34FBHardcopyCableReplacementServiceClass_UUID = 00001125-0000-1000-8000-00805F9B34FB*蓝牙打印效劳HCRPrintServiceClass_UUID = 00001126-0000-1000-8000-00805F9B34FBHCRScanServiceClass_UUID = 00001127-0000-1000-8000-00805F9B34FBmonISDNAccessServiceClass_UUID = 00001128-0000-1000-8

40、000-00805F9B34FBVideoConferencingGWServiceClass_UUID = 00001129-0000-1000-8000-00805F9B34FBUDIMTServiceClass_UUID = 0000112A-0000-1000-8000-00805F9B34FBUDITAServiceClass_UUID = 0000112B-0000-1000-8000-00805F9B34FBAudioVideoServiceClass_UUID = 0000112C-0000-1000-8000-00805F9B34FBSIMAccessServiceClass

41、_UUID = 0000112D-0000-1000-8000-00805F9B34FBPnPInformationServiceClass_UUID = 00001200-0000-1000-8000-00805F9B34FBGenerietworkingServiceClass_UUID = 00001201-0000-1000-8000-00805F9B34FBGenericFileTransferServiceClass_UUID = 00001202-0000-1000-8000-00805F9B34FBGenericAudioServiceClass_UUID = 00001203

42、-0000-1000-8000-00805F9B34FBGenericTelephonyServiceClass_UUID = 00001204-0000-1000-8000-00805F9B34FB=今天找了一下 關於 Bluetooth 的標準 Service/Profile 的 UUID ,但是看了一下 Specification Doucments 都只有 16bits 長,這是所謂的UUID16格式後來才了解,原來Bluetooth 將UUID 的部份固定,只取16bits 作為各種 Service 的區分,這樣可以節省分析 SDP Record and 與程式空間,防止增加 Blu

43、etooth Device 的本钱。地下的值可以從 windows *P or Server 2003 SDK 的 bt_sdp.h or BlueZ 的 sdp.h(UUID16) 中找到定義,可以觀察出 以下的固定序列除了替換 *部份0000*-0000-1000-8000-00805F9B34FB,而* 部份就是 所謂的 UUID16 定義。Protocols UUID .bluetooth.org/assigned-numbers/sdp.htmBASE UUID 00000000-0000-1000-8000-00805F9B34FBSDP_PROTOCOL_UUID = 00000

44、001-0000-1000-8000-00805F9B34FB;UDP_PROTOCOL_UUID = 00000002-0000-1000-8000-00805F9B34FB;RFM_PROTOCOL_UUID = 00000003-0000-1000-8000-00805F9B34FB;TCP_PROTOCOL_UUID = 00000004-0000-1000-8000-00805F9B34FB;TCSBIN_PROTOCOL_UUID = 00000005-0000-1000-8000-00805F9B34FB;TCSAT_PROTOCOL_UUID = 00000006-0000-1

45、000-8000-00805F9B34FB;OBE*_PROTOCOL_UUID = 00000008-0000-1000-8000-00805F9B34FB;IP_PROTOCOL_UUID = 00000009-0000-1000-8000-00805F9B34FB;FTP_PROTOCOL_UUID = 0000000A-0000-1000-8000-00805F9B34FB;HTTP_PROTOCOL_UUID = 0000000C-0000-1000-8000-00805F9B34FB;WSP_PROTOCOL_UUID = 0000000E-0000-1000-8000-00805

46、F9B34FB;BNEP_PROTOCOL_UUID = 0000000F-0000-1000-8000-00805F9B34FB;UPNP_PROTOCOL_UUID = 00000010-0000-1000-8000-00805F9B34FB;HID_PROTOCOL_UUID = 00000011-0000-1000-8000-00805F9B34FB;HCCC_PROTOCOL_UUID = 00000012-0000-1000-8000-00805F9B34FB;HCDC_PROTOCOL_UUID = 00000014-0000-1000-8000-00805F9B34FB;HN_

47、PROTOCOL_UUID = 00000016-0000-1000-8000-00805F9B34FB;AVCTP_PROTOCOL_UUID = 00000017-0000-1000-8000-00805F9B34FB;AVDTP_PROTOCOL_UUID = 00000019-0000-1000-8000-00805F9B34FB;CMPT_PROTOCOL_UUID = 0000001B-0000-1000-8000-00805F9B34FB;UDI_C_PLANE_PROTOCOL_UUID = 0000001D-0000-1000-8000-00805F9B34FB;L2CAP_

48、PROTOCOL_UUID = 00000100-0000-1000-8000-00805F9B34FB;Ref. Service class IDs .bluetooth.org/assigned-numbers/sdp.htmServiceDiscoveryServerServiceClassID_UUID = 00001000-0000-1000-8000-00805F9B34FB;BrowseGroupDescriptorServiceClassID_UUID = 00001001-0000-1000-8000-00805F9B34FB;PublicBrowseGroupService

49、Class_UUID = 00001002-0000-1000-8000-00805F9B34FB;SerialPortServiceClass_UUID = 00001101-0000-1000-8000-00805F9B34FB;LANAccessUsingPPPServiceClass_UUID = 00001102-0000-1000-8000-00805F9B34FB;DialupNetworkingServiceClass_UUID = 00001103-0000-1000-8000-00805F9B34FB;IrMCSyncServiceClass_UUID = 00001104

50、-0000-1000-8000-00805F9B34FB;OBE*ObjectPushServiceClass_UUID = 00001105-0000-1000-8000-00805F9B34FB;OBE*FileTransferServiceClass_UUID = 00001106-0000-1000-8000-00805F9B34FB;IrMCSyncmandServiceClass_UUID = 00001107-0000-1000-8000-00805F9B34FB;HeadsetServiceClass_UUID = 00001108-0000-1000-8000-00805F9

51、B34FB;CordlessTelephonyServiceClass_UUID = 00001109-0000-1000-8000-00805F9B34FB;AudioSourceServiceClass_UUID = 0000110A-0000-1000-8000-00805F9B34FB;AudioSinkServiceClass_UUID = 0000110B-0000-1000-8000-00805F9B34FB;AVRemoteControlTargetServiceClass_UUID = 0000110C-0000-1000-8000-00805F9B34FB;Advanced

52、AudioDistributionServiceClass_UUID = 0000110D-0000-1000-8000-00805F9B34FB;AVRemoteControlServiceClass_UUID = 0000110E-0000-1000-8000-00805F9B34FB;VideoConferencingServiceClass_UUID = 0000110F-0000-1000-8000-00805F9B34FB;InterServiceClass_UUID = 00001110-0000-1000-8000-00805F9B34FB;Fa*ServiceClass_UU

53、ID = 00001111-0000-1000-8000-00805F9B34FB;HeadsetAudioGatewayServiceClass_UUID = 00001112-0000-1000-8000-00805F9B34FB;WAPServiceClass_UUID = 00001113-0000-1000-8000-00805F9B34FB;WAPClientServiceClass_UUID = 00001114-0000-1000-8000-00805F9B34FB;PANUServiceClass_UUID = 00001115-0000-1000-8000-00805F9B

54、34FB;NAPServiceClass_UUID = 00001116-0000-1000-8000-00805F9B34FB;GNServiceClass_UUID = 00001117-0000-1000-8000-00805F9B34FB;DirectPrintingServiceClass_UUID = 00001118-0000-1000-8000-00805F9B34FB;ReferencePrintingServiceClass_UUID = 00001119-0000-1000-8000-00805F9B34FB;ImagingServiceClass_UUID = 0000

55、111A-0000-1000-8000-00805F9B34FB;ImagingResponderServiceClass_UUID = 0000111B-0000-1000-8000-00805F9B34FB;ImagingAutomaticArchiveServiceClass_UUID = 0000111C-0000-1000-8000-00805F9B34FB;ImagingReferenceObjectsServiceClass_UUID = 0000111D-0000-1000-8000-00805F9B34FB;HandsfreeServiceClass_UUID = 0000111E-0000-1000-8000-00805F9B34FB;HandsfreeAudioGateway

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!