我正在使用的技術、框架和設備:
- 框架:Xamarin.Forms
- IDE:Visual Studio 2022
- 物理設備(智能手機):Zebra TC26 (Android 10)
- 物理設備(智能手表):三星 Galaxy Watch4 (Android 11)
問題定義
目前我有一個測驗 Xamarin.Forms 專案,它由兩個不同的 UI(XAML 檔案)組成:
- 用戶界面 1:HomePage.XAML - 此螢屏應顯示在智能手機上
- 用戶界面 2:WatchScreen.XAML - 此螢屏應顯示在智能手表上
使用下面的代碼,我確保將 HomePage.XAML 部署到智能手機,并將 watchscreen 部署到智能手表:
Page homePage = new NavigationPage(new HomePage());
// BuildVersionCodes.R is a reference to Android version 11 (mostly now used by Wear OS 3.x)
if (Build.VERSION.SdkInt == BuildVersionCodes.R)
{
// SM-R870 is a reference to the Samsung Galaxy Watch4
// Note: This is needed to ensure the UI is specific to the UI of a smartwatch
if (Build.Model == "SM-R870")
{
Page watchScreen = new NavigationPage(new WatchScreen());
MainPage = watchScreen;
}
}
else
{
MainPage = homePage;
}
現在我想讓不同設備上的這些頁面相互通信。HomePage.xaml 存在于 Xamarin.Forms 主專案以及 WatchScreen.xaml 中。我希望他們相互交流的方式是發送訊息或其他東西。Xamarin.Forms 專案還附帶一個本機專案。在這個本機 Xamarin.Android 專案中,我嘗試在 MainActivity.cs 中檢索存在于主專案中的按鈕,方法是使用(在 WatchScreen.xaml 中存在此按鈕,在 WatchScreen.xaml.cs 中我有一個方法可以回傳此按鈕)。
WatchScreen.xaml.cs 中回傳按鈕的方法:
public Button GetSendButtonFromWearableUI() => btnSendMessage;
在 MainActivity.cs 中,我使用以下方法獲得此方法:
Button button = (App.Current.MainPage.Navigation.NavigationStack.LastOrDefault() as WatchScreen)
.GetSendButtonFromWearableUI();
每當我通過這樣做單擊按鈕時:
button.Clicked = delegate
{
SendData();
};
一些資料應該從 MainActivity.cs 發送并由 HomePage.xaml 捕獲并顯示在上面。我嘗試了幾種方法,但沒有成功實作需要發生的事情。因此,我想知道你們是否可以幫助我解決這個問題,我將不勝感激。
uj5u.com熱心網友回復:
與此同時,我一直在調查這個問題并提出了解決方案。按照以下步驟獲得相同的結果。為了使這個解決方案發揮作用,我結合了 Google 的 Wearable Data Layer API 和 Microsoft 的 MessagingCenter。
此外,下面的示例僅顯示了從智能手表到智能手機的通信。為了逆轉程序,您可以將發送按鈕放在主頁而不是智能手表螢屏上,并確保訂閱正確的訊息。
最后一點:請記住,下面使用的來自 Google 的代碼已被棄用,但它仍然有效......
用于完成這項作業的參考資料:

如果您想從智能手機與智能手表進行通信,您可以執行以下操作:

就是這樣,伙計們。現在,您將使用 Wea??rable Data Layer API 和 MessagingCenter 在同一應用程式中接收訊息。我們沒有單獨的專案,而是使用單獨的 UI 來實作這一點......
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/461934.html
標籤:xml xamarin.forms 安卓活动 沟通
