目录
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