• 通过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

  • 相关阅读:
    抖音店铺提供优质服务|成都瀚网科技
    当两项目上线时间接近,测试人员如何保障产品质量更好?
    python小知识
    网络编程TCP/UDP
    Centos安装显卡
    回调函数——qsort的模拟实现
    【小程序】网络请求API介绍及网络请求的封装
    基于javaweb+jsp的客户关系管理系统CRM(JavaWeb MySQL JSP Bootstrap Servlet SSM SpringBoot)
    三七互娱,oppo,快手25届暑期实习内推
    uploadifive上传工具php版使用
  • 原文地址:https://blog.csdn.net/zlbcdn/article/details/127889056