private static final String ACTION_CLAIM_SCANNER = "com.honeywell.aidc.action.ACTION_CLAIM_SCANNER";
private static final String EXTRA_PROPERTIES = "com.honeywell.aidc.extra.EXTRA_PROPERTIES";
@Override
public void use() {
// 指定扫码结果广播接收器的 ACTION 名称
Bundle properties = new Bundle();
properties.putBoolean("DPR_DATA_INTENT", true);
properties.putString("DPR_DATA_INTENT_ACTION", ACTION_BARCODE_DATA);
// 如需启用指定的 profile, 可 putExtra(EXTRA_PROFILE, "MyProfile1")
Intent intent = new Intent(ACTION_CLAIM_SCANNER).putExtra(EXTRA_PROPERTIES, properties);
context.sendBroadcast(intent);
// 注册扫码结果广播接收器
context.registerReceiver(receiver, new IntentFilter(ACTION_BARCODE_DATA));
}
private static final String ACTION_RELEASE_SCANNER = "com.honeywell.aidc.action.ACTION_RELEASE_SCANNER";
@Override
public void release() {
listeners.clear();
context.unregisterReceiver(receiver);
context.sendBroadcast(new Intent(ACTION_RELEASE_SCANNER).setPackage("com.intermec.datacollectionservice"));
}
1
yzkos 2022-07-06 08:52:42 +08:00
uniapp 可以用 js 开发安卓 APP ,不太了解你说的 [收发原生广播] 如果 uniapp 不支持,可以用原生开发个 [收发原生广播] 的插件,引入到 uniapp 里用 js 调用即可。
|
2
lbb2445 2022-07-06 08:53:24 +08:00
uniapp ,然后试着做安卓插件
|
3
ifdef 2022-07-06 08:53:38 +08:00
你 webview 不是要放在 activity/fragment 里吗,在广播的 onReceive 里 reload 一下不就传进 webview 里了?
|
4
b1iy 2022-07-06 09:02:12 +08:00
一般 PDA 都能设置结果返回方式,先找设置改改试试
广播就只能自定义 native 插件,native 保存 js callback 引用,间接实现广播 |
5
jswh 2022-07-06 09:03:02 +08:00 1
1. 混合开发有挺多方案的。uniapp ,react native ,Ionic ,也基本都支持原生插件。
2. webview 可以用 jsbridge 通信。 3. 按你的需求弄个小程序结构的程序框架蛮合适的。 |
6
lizhenda 2022-07-06 09:07:10 +08:00
专业的人做专业的事,钱多另说
|
7
nitmali 2022-07-06 09:11:02 +08:00 1
uniapp 可以
demo: //获取 activity const main = plus.android.runtimeMainActivity(); const IntentFilter = plus.android.importClass('android.content.IntentFilter'); const filter = new IntentFilter (); // 监听广播 filter.addAction("你的广播") const receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', { onReceive: function(context, intent) { plus.android.importClass(intent) // TODO 操作数据 console.log(JSON.stringify(intent)) } }) // 注册监听 main.registerReceiver(receiver, filter); // 关闭 // main.unregisterReceiver(receiver); |
8
bthulu OP @nitmali 感谢. 刚才试装了下 uniapp 官方 demo, 感觉卡顿还是比较严重, PDA 上的 cpu 是 MSM8916, 比手机上的性能差远了.
|
9
gzf6 2022-07-06 09:43:40 +08:00 via Android
Capacitor 或者 cordova ,按照他们的规范自己写插件也行
|
10
x13945 2022-07-06 09:44:01 +08:00 via Android
那就换 rn 吧,开发效率和前端有一拼
|
11
vone 2022-07-06 09:50:09 +08:00
Android PDA 的扫码器不都是模拟键盘的输入然后加一个回车键,扫码结果可以通过焦点状态的输入框接收到的,不用自己写接收逻辑。
而且就算是你们需要底层开发去支持扫码器,也应该是开发一个单独的应用去提供扫描和接收结果的功能,然后有需要的时候安装这个应用,由这个应用在需要时触发扫码,然后把扫描结果转发给焦点状态的输入框。 |
12
bthulu OP @vone 你是没开发过工厂工人用的 app, 工人还给你去戳一下输入框激活焦点? 想都不用想. 工人只想按一下 PDA 上的物理扫码键然后就完事了. 再多点一下输入框, 工人要造反的.
|
13
lsyAndroid 2022-07-06 10:01:53 +08:00
走 jsbridge ,前端页面用 js 写,原生 app 侧接收 js 发送的数据,进行数据处理。
|
14
wenruoliushui 2022-07-06 10:02:05 +08:00
js 只能跟原生交互,离不开原生。
|
16
james2013 2022-07-06 10:16:35 +08:00
是不是你用 Android Studio 的方式不对呢?
使用 Android Studio 运行是使用 Run 按钮 点击 Run 按钮可以直接安装到设备上,你这种小的 app 估计只需要几秒就能装上 |
17
flytsuki 2022-07-06 10:17:06 +08:00
android 加 flutter 吧,比 webview 好用多了
|
18
bthulu OP @james2013 哪这么快哦, 可能是我笔记本性能太差了吧, PDA 性能也不行吧, 神州本, i5-8300H, 实测至少 15 秒.
|
19
xiangyuecn 2022-07-06 10:38:01 +08:00
自己简单写一个 jsbridge 就行了,java+js 200 行撑死,网页界面页面可以直接复用桌面版的,微调一下改成移动版
别听什么 uniapp react flutter ,纯粹心智负担 |
20
FaiChou 2022-07-06 10:38:11 +08:00 via iPhone
autojs
|
21
yuuko 2022-07-06 10:40:45 +08:00
Capacitor native 部分搞个 native 插件
|
22
guxin0123 2022-07-06 10:49:38 +08:00
我干过 js 读取 nfc
也是 jsbridge |
23
codehz 2022-07-06 10:55:28 +08:00
你把检测原生广播的部分用 java 写,收到后调用页面中特定命名的全局函数,js 部分把这个函数实现了,后续工作就在 web 里做不就好了?
|
24
wangtian2020 2022-07-06 11:39:05 +08:00
https://quasar.dev/
quasar 框架,vite 的毫秒级更新 在上面用自己编写的 cordova 插件,可以实现所有原生的功能,还能保留 web 的灵活性 用 PLC ,你们也是工业软件公司吗 |
25
NonClockworkChen 2022-07-06 12:40:19 +08:00 2
让新手搞 RN 的,大大地凉心
|
26
OldDriver8848 2022-07-06 14:10:45 +08:00
flutter 热重载,改完立刻就能看到效果
|
27
cenbiq 2022-07-06 15:48:26 +08:00 via iPhone
可以试试 jetpack compose
|
28
404neko 2022-07-06 15:51:20 +08:00
很多年前撸过一个小 APP, Javascript 是用 Rhino 支持的, 可以接收到广播
|
29
DOLLOR 2022-07-06 16:02:05 +08:00
我也觉得 webview+jsbridge 是最好的,web 不搞花里胡哨的东西性能就不会差。
|
30
whyrookie 2022-07-06 16:04:15 +08:00
原生写个广播接收器,收到广播之后调用 js 中的方法,感觉这样比较轻量
|
31
xFrank 2022-07-06 21:48:56 +08:00
|