UWP開發入門(25)——通過Radio控制Bluetooth, WiFi_網頁設計公司

11{icon} {views}

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

當全世界的人們隨著網路時代而改變向上時您還停留在『網站美醜不重要』的舊有思維嗎?機會是留給努力改變現況的人們,別再浪費一分一秒可以接觸商機的寶貴時間!

回顧寫了許久的UWP開發入門,竟然沒有講過通過Windows.Devices.Radios.Radio來控制Bluetooth和WiFi等功能的開關。也許是因為相關的API設計的簡單好用,以至於被我給忽略了。最近工作中有涉及這塊的內容,不妨一起來回顧下,順便看看一些新的發現。

在Windows 10以前,想要控制Bluetooth,WiFi等功能,那麻煩大了。得操作ManagementBaseObject,ManagementEventWatcher 等一系列WMI提供的API,寫出來的代碼又臭又長。其間還夾着複雜的WMI query字符串,十分難用。

升級到Windows 10后,我們通過Windows.Devices.Radios.Radio可以方便的獲取控制Bluetooth和WiFi的對象。

var radios = await Radio.GetRadiosAsync();
Bluetooth = radios.FirstOrDefault(r => r.Kind == RadioKind.Bluetooth);
WiFi = radios.FirstOrDefault(r => r.Kind == RadioKind.Bluetooth);

在拿到上面的Bluetooth和WiFi的Radio實例后,就可以通過

Public event TypedEventHandler<Radio, object> StateChanged;

來監聽Radio實例的狀態改變,可以說通過寥寥幾行代碼,就可以替代以往大量繁瑣的操作。

而設置Bluetooth和WiFi設備On/Off的狀態,也非常簡單。

public IAsyncOperation<RadioAccessStatus> SetStateAsync(RadioState value);

RadioState枚舉如同字面的意思:

    public enum RadioState
    {
        //
        // Summary:
        //     The radio state is unknown, or the radio is in a bad or uncontrollable state.
        Unknown = 0,
        //
        // Summary:
        //     The radio is powered on.
        On = 1,
        //
        // Summary:
        //     The radio is powered off.
        Off = 2,
        //
        // Summary:
        //     The radio is powered off and disabled by the device firmware or a hardware switch
        //     on the device.
        Disabled = 3
    }

這裏需要提一下的是,在第一次更改狀態前,UWP APP需要向用戶申請權限。

慢着慢着,貌似忘記給UWP APP向Windows要權限了,我們要編輯Package.aaxmanifest文件,在Capabilities節點加上DeviceCapability這一行才行。

  <Capabilities>
    <Capability Name="internetClient" />
    <DeviceCapability Name="radios"></DeviceCapability>
  </Capabilities>

 

這回運行起來,才真的可以操作Bluetooth和WiFi了。

是不是覺得幾行代碼就能寫出一個控制Bluetooth和WiFi的APP了?事實也確實如此。

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

透過資料庫的網站架設建置,建立公司的形象或購物系統,並提供最人性化的使用介面,讓使用者能即時接收到相關的資訊

如果人生只如初見那般美好,UWP的處境就不會如此難堪了。對於某軟提供了完善UWP API的功能,開發起來那是一個爽快。但要是沒有或是沒來得及提供,UWP就顯得頗為尷尬了。

我們不妨看下RadioKind的枚舉,很顯然如果想操作FM radio就得另尋他法。而MobileBoardband即Cellular也是從1703版本才開始得到支持。

那是不是意味這MobileBroadband就可以像Bluetooth和WiFi一樣通過

public static IAsyncOperation<IReadOnlyList<Radio>> GetRadiosAsync();

來獲取實例對象了,還真不是,欲知如何操作,且聽下回《UWP開發入門(26)——通過Radio控制Cellular》。

實際是我Sample code還沒整理好。所以分成了兩篇來寫。

有感日前MS Store里的網易雲音樂UWP也被替換成Win32版本,可嘆國產的UWP APP越來越少。某軟畫了個好餅,可惜不能讓人在Windows生態上通過UWP掙到錢。好技術生不逢時出不了頭,真是可惜。

同時也能感覺到某軟的妥協和進步,現如今的UWP,結合desktop extension以及desktop bridge技術。只要公司的APP能通過某軟的審核,功能方面已經無限接近傳統desktop APP了。可惜一個Windows平台做Win32和UWP兩個產品,燒的錢可不是小數目。總不能用愛發電吧。

希望Win7早日被淘汰,WinUI 3.0能進一步融合UWP和Win32。距離上一次某軟說要重振desktop開發已經過去蠻久了。

本篇提到的相關Sample code在GitHub:

https://github.com/manupstairs/UWPSamples/tree/master/UWPSamples/RadioDevice

 

 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

※想知道最厲害的網頁設計公司嚨底家"!

RWD(響應式網頁設計)是透過瀏覽器的解析度來判斷要給使用者看到的樣貌