通过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,就是开发者项中的键值名称
        }           
    }
}

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);
    }
}

2.3 实现效果

东大集成PDA的扫码功能

3、demo下载

demo下载:提取码:NHZL

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值