西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)其它知識 → Windows Phone 8藍(lán)牙編程開發(fā)

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

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

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

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

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

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

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

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

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

在應(yīng)用程序到設(shè)備的通信過程時,應(yīng)用程序使用藍(lán)牙去查找提供服務(wù)的設(shè)備,如果提供的服務(wù)范圍之內(nèi)發(fā)現(xiàn)一個可以連接的藍(lán)牙設(shè)備,那么該應(yīng)用程序可以發(fā)起連接請求。當(dāng)應(yīng)用程序和設(shè)備同時接受該連接,它們之間就可以進(jìn)行通信了,通信的過程也是使用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ò)通信能力,否則程序會出現(xiàn)異常。

藍(lán)牙編程類

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

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

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

表 19.2 PeerFinder類的成員

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

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

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

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

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

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

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

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

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

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