• 通过Xamarin实现东大集成PDA的扫码


    1、东大集成PDA的扫码说明

    东大集成的PDA有两种方式实现设备自带的扫码功能。一种为调用硬件接口方式,另外一种为接收扫描工具广播开发模式。
    其中两种方式只能选择一种,不可以在同一个APP中混用。
    因此本次使用广播的方式实现东大集成PDA的扫码功能

    2、Xamarin通过广播实现扫码

    2.1 PDA的扫码工具设置

    1、找到PDA上的扫码工具
    扫码工具
    2、进行应用的设置
    扫码设置
    3、选择广播的方式和结束符
    设置广播
    注意】这个界面中,除了选择广播外。结束符要选择NONE。否则扫描的条码总是带结束符

    4、点击“开发者项”,输入密码:888888
    进入开发者选项
    5、广播的相关内容,记下来,一会儿再代码中会用到
    在这里插入图片描述

    2.2 代码实现

    2.2.1 主界面

    layout/activity_main.xml中添加了一个文本的控件(plain text)
    主界面

    2.2.1 定义广播接收器

    [BroadcastReceiver(Enabled = true)]
    [IntentFilter(new[] { "com.android.server.scannerservice.broadcast" })]
    public class MySampleBroadcastReceiver : BroadcastReceiver
    {
        public string ScannerContent { get; set; } //用于存储扫码结果,并对外提供的
        public override void OnReceive(Context context, Intent intent)
        {
            if(intent.Action.Equals("com.android.server.scannerservice.broadcast"))
            {
                ScannerContent = intent.GetStringExtra("scannerdata"); //读取数据。这个scannerdata,就是开发者项中的键值名称
            }           
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.2.2 在活动页面实现读取

    MainActivity中实现数据的接收

    [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
    public class MainActivity : AppCompatActivity
    {
        MySampleBroadcastReceiver receiver;
        TextView sacnInputText;
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.activity_main);
    
            receiver = new MySampleBroadcastReceiver(); //初始化接收器
            receiver.ScannerContent = "默认的初始值";
    
            sacnInputText = FindViewById<TextView>(Resource.Id.editText1); //初始化控件
        }
    
    
        protected override void OnResume()
        {
            base.OnResume();
    				
    				//设置自动获取焦点
    				sacnInputText.Focusable = true;
             sacnInputText.RequestFocus();
             sacnInputText.FocusableInTouchMode = true;
             sacnInputText.RequestFocusFromTouch();
    
    
            try
            {
                RegisterReceiver(receiver, new IntentFilter("com.android.server.scannerservice.broadcast")); //注册接收
                sacnInputText.Text = receiver.ScannerContent;
            }
            catch (Exception e)
            {
                sacnInputText.Text = e.Message;
            }
    
        }
    
        protected override void OnPause()
        {
        	//释放资源
            UnregisterReceiver(receiver); 
            // Code omitted for clarity
            base.OnPause();
        }
    
        public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
        {
            Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    
            base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57

    2.3 实现效果

    东大集成PDA的扫码功能

    3、demo下载

    demo下载:提取码:NHZL

  • 相关阅读:
    日记---目标检测
    多路分支选择结构—switch语句
    vue 常用开发父子组件的通信
    [附源码]计算机毕业设计JAVA基于web的电子产品网络购物平台
    linux中使用docker部署微服务
    C++类与对象深度解析(一):从抽象到实践的全面入门指南
    【工程数学】笔记2:数学物理方程
    QT_day3
    CSS常用的长度单位
    36 岁,我又跳槽了!
  • 原文地址:https://blog.csdn.net/zlbcdn/article/details/127889056