[英]Use Xamarin Android dll in Xamarin forms project
我想創建一個 Xamarin.forms(僅限 Android)項目(XAML UI、數據綁定等)。 但是我的項目運行在我想要訪問的特殊硬件上。
制造商為Xamarin(dll)提供了SDK。 當我在 Xamarin Android 應用程序中使用它時,它按預期工作。
是否可以將這個DLL添加到forms項目中? 只需將 dll 添加到 forms 項目即可(項目構建),但在代碼中使用它是另一回事。
我從一開始就失敗的兩件事是:dll 有一個工廠方法來創建硬件訪問 object。這需要一個 Android.Content.Context(通常是使用元素的活動)和一個接口作為參數。 接口(我必須在我的表單中實現)必須實現IJavaObject
和一種回調方法。
我沒有源代碼(只有 dll)所以我不能簡單地創建一些我可以在 forms 項目中引用的接口。
或者我是否必須為硬件 dll 編寫一種外觀,提供我可以在 forms 項目中使用的接口?
是否可以將這個DLL添加到forms項目中? 只需將 dll 添加到 forms 項目即可(項目構建),但在代碼中使用它是另一回事。
不是真的 - 正如你提到的那樣:它是一個通常適用於 Android 系統的硬件相關組件。
和; 你真的不必,你在第二個問題中解決了這個問題:
或者我是否必須為硬件 dll 編寫一種外觀,提供我可以在 forms 項目中使用的接口?
是的,我將創建一個示例。
如果您想從Forms
項目訪問該組件,您可以輕松地創建一個帶有接口的包裝器並從您的Forms
項目調用它。
好的是,如果將來它在其他硬件上可用 - 您只需要添加實現即可。
在 android 項目中:
[assembly: Xamarin.Forms.Dependency(typeof(NativeHelper))]
namespace Connector.Droid
{
public class NativeHelper : INativeHelper
{
public void CloseApp()
{
Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
}
public MemStats GetMemStats()
{
return new MemStats()
{
Max = Java.Lang.Runtime.GetRuntime().MaxMemory(),
Free = Java.Lang.Runtime.GetRuntime().FreeMemory(),
Total = Java.Lang.Runtime.GetRuntime().TotalMemory()
};
}
}
}
在Forms
項目中,定義接口:
public interface INativeHelper
{
void CloseApp();
MemStats GetMemStats();
}
並這樣稱呼它:
Xamarin.Forms.DependencyService.Get<INativeHelper>().CloseApp();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.