繁体   English   中英

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 路由,那么您将需要创建一个单独的类来实现 Interface1 并将其注册为依赖项服务。 我认为您不能将 MainActivity 注册为 DependencyService 实现。

您将遇到的一个问题主要是异步代码和回调。

您也不应该将 Android ListView 更新为 DependencyService 调用。 这将更适合作为自定义渲染器。 作为 DependencyService 实现,您可能希望moj()方法返回可由 Xamarin.Forms 代码使用的数据。 您需要的不仅仅是这种方法。 你需要代码来初始化UsbSerialPort类,代码来查询设备列表,然后调用一个回调来发回该列表,理论上无论如何。 我从来没有用 Forms 测试过那个库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM