如何解决在Xamarin表单项目中使用Xamarin Android dll 示例:
我想创建一个Xamarin表单(仅Android)项目(XAML UI,数据绑定等)。但是我的项目在我想访问的特殊硬件上运行。
制造商提供了Xamarin(dll)的SDK。当我在Xamarin Android应用程序中使用它时,它可以按预期工作。
是否可以将此DLL添加到表单项目中? 只需将dll添加到表单项目即可工作(项目构建),但在代码中使用它却是另一回事。
我从一开始就失败了两件事:
dll具有工厂方法来创建硬件访问对象。这需要一个Android.Content.Context(通常是使用元素的活动)和一个接口作为参数。接口(我必须以表单形式实现)必须实现IJavaObject
和一种回调方法。
我没有源代码(只有dll),所以我不能简单地创建一些可以在Forms项目中引用的接口。
还是我必须为提供可在Forms项目中使用的接口的硬件dll写某种外观?
解决方法
是否可以将此DLL添加到表单项目中?只需将dll添加到表单项目即可工作(项目构建),但在代码中使用它却是另一回事。
并非真的-就像您提到的:它是与硬件相关的组件,通常适用于Android系统。
然后;您并不需要,您可以在第二个问题中解决该问题:
还是我必须为提供可在Forms项目中使用的接口的硬件dll写某种外观?
是的,我将创建一个示例。
如果您想从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();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。