Xamarin.Forms 中的 USB 列表设备
Usb List Devices in Xamarin.Forms
我尝试在 xamarin.forms 内列出通过串行 odt 与智能手机连接的 USB 设备。
为此,我使用这个项目 https://github.com/anotherlab/UsbSerialForAndroid
如何在与来自 Project.Droid.MainActivity 的设备的共享项目中进行列表视图?我尝试使用依赖服务来做到这一点:
这是我的第 1 页(我想要列表视图):
public partial class Page1 : ContentPage {
public Page1()
{
InitializeComponent();
DependencyService.Get<Interface1>().moj();
}
}
我的界面:
namespace SensDxMobileApp.Views.MainWindow {
public interface Interface1 {
void moj();
}
}
和MyActivity(Droid项目):
[assembly: Xamarin.Forms.Dependency(typeofProject.Droid.MainActivity))]
namespace Project.Droid {
public class MainActivity: Interface
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
listView = new Android.Widget.ListView;
}
public async void moj()
{
adapter = new UsbSerialPortAdapter(this);
listview.Adapter = adapter;
listView.ItemClick += async (sender, e) =>
{
await OnItemClick(sender, e);
};
await PopulateListAsync();
detachedReceiver = new UsbDeviceDetachedReceiver(this);
RegisterReceiver(detachedReceiver, new IntentFilter(UsbManager.ActionUsbDeviceDetached));
}
}
但是我在 Page1();
中的“DependencyService.Get().moj()”上遇到错误“对象引用未设置到对象的实例。”
有人做过类似的事情吗?谢谢
如果您采用 DependencyService 路线,那么您需要创建一个单独的 class 来实现 Interface1 并将其注册为依赖服务。我认为您不能将 MainActivity 注册为 DependencyService 实现。
您将遇到的一个问题主要是异步代码和回调。
您也不应该将 Android ListView 更新为 DependencyService 调用。这将更适合作为自定义渲染器。作为 DependencyService 实现,您可能希望 moj()
方法能够获取 return 数据,以便 Xamarin.Forms 代码使用。你需要的不仅仅是那种方法。您将需要代码来初始化 UsbSerialPort
class,代码来查询设备列表,然后调用回调来发回该列表,无论如何在理论上。我从未使用 Forms 测试过该库。
我尝试在 xamarin.forms 内列出通过串行 odt 与智能手机连接的 USB 设备。 为此,我使用这个项目 https://github.com/anotherlab/UsbSerialForAndroid
如何在与来自 Project.Droid.MainActivity 的设备的共享项目中进行列表视图?我尝试使用依赖服务来做到这一点:
这是我的第 1 页(我想要列表视图):
public partial class Page1 : ContentPage {
public Page1()
{
InitializeComponent();
DependencyService.Get<Interface1>().moj();
}
}
我的界面:
namespace SensDxMobileApp.Views.MainWindow {
public interface Interface1 {
void moj();
}
}
和MyActivity(Droid项目):
[assembly: Xamarin.Forms.Dependency(typeofProject.Droid.MainActivity))]
namespace Project.Droid {
public class MainActivity: Interface
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
listView = new Android.Widget.ListView;
}
public async void moj()
{
adapter = new UsbSerialPortAdapter(this);
listview.Adapter = adapter;
listView.ItemClick += async (sender, e) =>
{
await OnItemClick(sender, e);
};
await PopulateListAsync();
detachedReceiver = new UsbDeviceDetachedReceiver(this);
RegisterReceiver(detachedReceiver, new IntentFilter(UsbManager.ActionUsbDeviceDetached));
}
}
但是我在 Page1();
中的“DependencyService.Get().moj()”上遇到错误“对象引用未设置到对象的实例。”有人做过类似的事情吗?谢谢
如果您采用 DependencyService 路线,那么您需要创建一个单独的 class 来实现 Interface1 并将其注册为依赖服务。我认为您不能将 MainActivity 注册为 DependencyService 实现。
您将遇到的一个问题主要是异步代码和回调。
您也不应该将 Android ListView 更新为 DependencyService 调用。这将更适合作为自定义渲染器。作为 DependencyService 实现,您可能希望 moj()
方法能够获取 return 数据,以便 Xamarin.Forms 代码使用。你需要的不仅仅是那种方法。您将需要代码来初始化 UsbSerialPort
class,代码来查询设备列表,然后调用回调来发回该列表,无论如何在理论上。我从未使用 Forms 测试过该库。