日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁(yè)編程開(kāi)發(fā)其它知識(shí) → Windows Phone 8藍(lán)牙編程開(kāi)發(fā)

      Windows Phone 8藍(lán)牙編程開(kāi)發(fā)

      相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2013/1/12 13:02:14字體大。A-A+

      作者:西西點(diǎn)擊:227次評(píng)論:1次標(biāo)簽: 藍(lán)牙

      • 類型:硬件優(yōu)化測(cè)試大小:13.9M語(yǔ)言:中文 評(píng)分:10.0
      • 標(biāo)簽:
      立即下載

      藍(lán)牙是手機(jī)的近距離無(wú)限傳輸?shù)募夹g(shù),在之前的Windows Phone 7系統(tǒng)手機(jī)里面僅支持藍(lán)牙耳機(jī)功能,并不支持藍(lán)牙文件信息傳輸,那么在Windows Phone 8手機(jī)里面將全面支持藍(lán)牙技術(shù),并且提供了相關(guān)的API來(lái)給開(kāi)發(fā)者使用。開(kāi)發(fā)者可以利用藍(lán)牙的相關(guān)API來(lái)創(chuàng)建應(yīng)用程序,在應(yīng)用程序里面使用手機(jī)的藍(lán)牙技術(shù)來(lái)進(jìn)行近距離的文件傳輸和發(fā)送接收消息,創(chuàng)造出更加有趣和方便的應(yīng)用軟件。

      在Windows Phone 8里面可以在應(yīng)用程序里面利用藍(lán)牙進(jìn)行通信,使用藍(lán)牙相關(guān)的API,可以讓應(yīng)用程序連接到另外的一個(gè)應(yīng)用程序,也可以讓應(yīng)用程序連接到一個(gè)設(shè)備上。Windows Phone 8的藍(lán)牙技術(shù)支持兩個(gè)藍(lán)牙方案:一個(gè)是應(yīng)用程序到應(yīng)用程序的通信,另外一個(gè)是應(yīng)用程序到設(shè)備的通信。

      1.應(yīng)用程序到應(yīng)用程序的通信

      應(yīng)用程序到應(yīng)用程序的通信的過(guò)程是,應(yīng)用程序使用藍(lán)牙去查找正在廣播藍(lán)牙服務(wù)的對(duì)等的應(yīng)用程序,如果在應(yīng)用程序提供服務(wù)的范圍內(nèi)發(fā)現(xiàn)一個(gè)應(yīng)用程序,那么該應(yīng)用程序可以發(fā)起連接請(qǐng)求。當(dāng)這兩個(gè)應(yīng)用程序接受連接,它們之間就可以進(jìn)行通信了,通信的過(guò)程是使用socket的消息發(fā)送接收機(jī)制。在Windows Phone 8中使用到應(yīng)用程序到應(yīng)用程序的藍(lán)牙通訊技術(shù),需要在項(xiàng)目的WMAppManifest.xml文件中添加ID_CAP_PROXIMITY的功能選項(xiàng),表示支持臨近的設(shè)備通信能力,否則程序會(huì)出現(xiàn)異常。

      2.應(yīng)用程序到設(shè)備的通信

      在應(yīng)用程序到設(shè)備的通信過(guò)程時(shí),應(yīng)用程序使用藍(lán)牙去查找提供服務(wù)的設(shè)備,如果提供的服務(wù)范圍之內(nèi)發(fā)現(xiàn)一個(gè)可以連接的藍(lán)牙設(shè)備,那么該應(yīng)用程序可以發(fā)起連接請(qǐng)求。當(dāng)應(yīng)用程序和設(shè)備同時(shí)接受該連接,它們之間就可以進(jìn)行通信了,通信的過(guò)程也是使用socket的消息發(fā)送接收機(jī)制,類似于應(yīng)用程序到應(yīng)用程序的通信。在Windows Phone 8中使用到應(yīng)用程序到設(shè)備的藍(lán)牙通訊技術(shù),需要在項(xiàng)目的WMAppManifest.xml文件中添加ID_CAP_PROXIMITY和ID_CAP_NETWORKING的功能選項(xiàng),表示支持臨近的設(shè)備通信能力和網(wǎng)絡(luò)通信能力,否則程序會(huì)出現(xiàn)異常。

      藍(lán)牙編程類

      在Windows Phone 8里面使用到藍(lán)牙編程主要會(huì)用到PeerFinder類,PeerInformation類,StreamSocket類和ConnectionRequestedEventArgs類,這些類的說(shuō)明如表19.1所示。因?yàn)樗{(lán)牙也是基于TCP協(xié)議進(jìn)行消息傳遞了,所以需要用到Socket的相關(guān)的編程知識(shí),以及StreamSocket類。PeerFinder類是藍(lán)牙查找類,它的主要成員如表19.2所示。

      表19.1 藍(lán)牙編程類的說(shuō)明

      類名說(shuō)明
      PeerFinder用于去查找附近的設(shè)備是否有運(yùn)行和當(dāng)前應(yīng)用程序相同的應(yīng)用程序,并且可以在兩個(gè)應(yīng)用程序之間建立起socket連接,從而可以進(jìn)行通信。對(duì)等應(yīng)用程序是在其他設(shè)備上運(yùn)行的應(yīng)用程序的另一個(gè)實(shí)例。
      PeerInformation包含對(duì)等應(yīng)用程序或設(shè)備的識(shí)別信息。
      StreamSocket支持使用一個(gè)TCP的Socket流的網(wǎng)絡(luò)通信。
      ConnectionRequestedEventArgs表示傳遞到一個(gè)應(yīng)用程序的ConnectionRequested事件的屬性

      表 19.2 PeerFinder類的成員

      成員說(shuō)明
      bool AllowBluetooth指定 PeerFinder 類的此實(shí)例是否可以通過(guò)使用 Bluetooth 來(lái)連接 ProximityStreamSocket 對(duì)象。如果PeerFinder 的此實(shí)例可以通過(guò)使用 Bluetooth 來(lái)連接 ProximityStreamSocket 對(duì)象,則為 true;否則為false。默認(rèn)為 true。
      bool AllowInfrastructure是否使用TCP/IP協(xié)議連接到StreamSocket
      bool AllowWiFiDirect指定 PeerFinder 類的此實(shí)例是否可以通過(guò)使用 Wi-Fi Direct 來(lái)連接 ProximityStreamSocket 對(duì)象。如果 PeerFinder 的此實(shí)例可以通過(guò)使用 Wi-Fi Direct 來(lái)連接 ProximityStreamSocket 對(duì)象,則為 true;否則為false。默認(rèn)為 true。
      IDictionary<string, string> AlternateIdentities獲取要與其他平臺(tái)上的對(duì)等應(yīng)用程序匹配的備用 AppId 值列表。返回要與其他平臺(tái)的對(duì)等類應(yīng)用程序匹配的備用 AppId 值列表。
      string DisplayName獲取或設(shè)置標(biāo)識(shí)計(jì)算機(jī)到遠(yuǎn)程對(duì)等類的名稱。
      PeerDiscoveryTypes SupportedDiscoveryTypes獲取一個(gè)值,該值指示哪些發(fā)現(xiàn)選項(xiàng)可與 PeerFinder 類一同使用
      event TypedEventHandler<object, ConnectionRequestedEventArgs> ConnectionRequested遠(yuǎn)程對(duì)等類使用 ConnectAsync 方法請(qǐng)求連接時(shí)發(fā)生。
      event TypedEventHandler<object, TriggeredConnectionStateChangedEventArgs> TriggeredConnectionStateChanged在遠(yuǎn)程對(duì)等類的輕擊筆勢(shì)期間發(fā)生。
      IAsyncOperation< StreamSocket> ConnectAsync(PeerInformation peerInformation)連接已發(fā)現(xiàn)了對(duì) FindAllPeersAsync 方法的調(diào)用的對(duì)等類。peerInformation:表示連接到的對(duì)等類的對(duì)等類信息對(duì)象。返回通過(guò)使用所提供的臨近StreamSocket 對(duì)象連接遠(yuǎn)程對(duì)等類的異步操作。
      IAsyncOperation<IReadOnlyList<PeerInformation>> FindAllPeersAsync()適用于無(wú)線范圍內(nèi)運(yùn)行相同應(yīng)用程序的對(duì)等計(jì)算機(jī)的異步瀏覽。返回通過(guò)使用 Wi-Fi直連技術(shù)瀏覽對(duì)等類的異步操作。
      void Start(string peerMessage)向臨近設(shè)備上的對(duì)等類應(yīng)用程序傳遞消息。
      void Stop()停止查找對(duì)等類應(yīng)用程序或廣播對(duì)等類連接的過(guò)程

      查找藍(lán)牙設(shè)備和對(duì)等項(xiàng)

      查找在服務(wù)范圍內(nèi)的藍(lán)牙設(shè)備和對(duì)等項(xiàng)是藍(lán)牙編程的第一步,查找藍(lán)牙設(shè)備和對(duì)等項(xiàng)中會(huì)使用到PeerFinder類的FindAllPeersAsync方法去進(jìn)行查找,然后以異步的方式返回查找到的對(duì)等項(xiàng)列表的信息IReadOnlyList<PeerInformation>,注意要使查找對(duì)等的應(yīng)用程序時(shí),在調(diào)用FindAllPeersAsync方法前必須先調(diào)用PeerFinder類的Start方法,主要的目的是啟動(dòng)廣播服務(wù),讓對(duì)方的應(yīng)用程序也能查找到自己。PeerInformation包含三個(gè)屬性:一個(gè)是DisplayName表示對(duì)等項(xiàng)的名字,這個(gè)名字一般都是由對(duì)方的設(shè)備的名稱或者查找到的應(yīng)用程序自身設(shè)置的現(xiàn)實(shí)名字,一個(gè)是HostName表示主機(jī)名字或者IP地址,還有一個(gè)屬性是ServiceName表示服務(wù)名稱或者TCP協(xié)議的端口號(hào)。然后可以利用查找到的PeerInformation信息進(jìn)行連接和通信。

      查找對(duì)等的應(yīng)用程序的代碼示例:

      async void AppToApp()
      {
          // 啟動(dòng)查找服務(wù)
          PeerFinder.Start();
          //開(kāi)始查找
          ObservableCollection<PeerInformation> peers = await PeerFinder.FindAllPeersAsync();
          if (peers.Count == 0)
          {
              //未找到任何的對(duì)等項(xiàng)
          }
          else
          {
              //處理查找到的對(duì)等項(xiàng),可以使用PeerFinder類的ConnectAsync方法來(lái)連接選擇的要進(jìn)行通信的對(duì)等項(xiàng)
          }
      }

      查找藍(lán)牙設(shè)備的代碼示例:

      private async void AppToDevice()
      {
          // 設(shè)置查找所匹配的藍(lán)牙設(shè)備
          PeerFinder.AlternateIdentities["Bluetooth:Paired"] = "";
          // 開(kāi)始查找
          ObservableCollection<PeerInformation> pairedDevices = await PeerFinder.FindAllPeersAsync();
          if (pairedDevices.Count == 0)
          {
              // 沒(méi)有找到可用的藍(lán)牙設(shè)備
          }
          else
          {
              //處理查找到的藍(lán)牙設(shè)備,可以新建一個(gè)StreamSocket對(duì)象,然后使用StreamSocket類的ConnectAsync方法通過(guò)HostName和ServiceName來(lái)連接藍(lán)牙設(shè)備
          }
      }
                                  
              

        相關(guān)評(píng)論

        閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過(guò)難過(guò)
        • 5 囧
        • 3 圍觀圍觀
        • 2 無(wú)聊無(wú)聊

        熱門評(píng)論

        最新評(píng)論

        發(fā)表評(píng)論 查看所有評(píng)論(1)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)