使用 Android Delphi 应用程序在 Zebra TC25 上触发扫描
Trigger scanning on a Zebra TC25 with an Android Delphi application
我正在使用 Embarcadero RAD Studio 10.2 开发 Android 应用程序以部署在 Zebra TC25 上。
我正在尝试通过单击屏幕上的按钮来激活扫描仪。 (就像按下打击垫两侧的黄色按钮一样)
procedure TMainForm.btnScanClick(Sender: TObject);
var
Intent: JIntent; //Declares the intent object
begin
try
Intent := TJIntent.Create;
Intent.setType(StringToJString('text/pas'));
Intent.setAction(StringToJString('com.symbol.datawedge.api.ACTION'));
Intent.putExtra(StringToJString('com.symbol.datawedge.api.SOFT_SCAN_TRIGGER'), StringtoJString('START_SCANNING'));
if MainActivity.getPackageManager.queryIntentActivities(Intent, TJPackageManager.JavaClass.MATCH_DEFAULT_ONLY).size > 0 then
MainActivity.startActivity(Intent) //Calls startActivity() to send the intent to the system.
else
mmLogs.Lines.Add('Erreur: '+DateTimeToStr(now)+' - Receiver not found');
except
on E:Exception do
mmLogs.Lines.Add('Erreur: '+DateTimeToStr(now)+' - btnScanClick - '+E.Message);
end;
end;
这是 AndroidManifest 的 Activity 部分的内容。
<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
android:label="%activityLabel%"
android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
android:launchMode="singleTask">
<!-- Tell NativeActivity the name of our .so -->
<meta-data android:name="android.app.lib_name"
android:value="%libNameValue%" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="com.wa.ZebraDW.ACTION" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
我从中得到启发:
- https://techdocs.zebra.com/datawedge/6-6/guide/output/intent/#singledecodemode
- http://docwiki.embarcadero.com/CodeExamples/Sydney/en/FMX.Android_Intents_Sample
我总是在备忘录中收到有关“找不到接收器”的错误消息。设备没有开始扫描。
这适用于 Delphi 10.3 和经过测试的 Zebra TC56/TC55 设备。
AndroidManifest 保持不变,无需任何其他条目。
procedure TForm1.btnTriggerScanClick(Sender: TObject);
var Intent: JIntent;
begin
Intent := TJIntent.JavaClass.init;
Intent.setAction(StringToJString('com.symbol.datawedge.api.ACTION_SOFTSCANTRIGGER'));
Intent.putExtra(StringToJString('com.symbol.datawedge.api.EXTRA_PARAMETER'), StringToJString('START_SCANNING'));
TAndroidHelper.Activity.sendBroadcast(Intent);
end;
我正在使用 Embarcadero RAD Studio 10.2 开发 Android 应用程序以部署在 Zebra TC25 上。 我正在尝试通过单击屏幕上的按钮来激活扫描仪。 (就像按下打击垫两侧的黄色按钮一样)
procedure TMainForm.btnScanClick(Sender: TObject);
var
Intent: JIntent; //Declares the intent object
begin
try
Intent := TJIntent.Create;
Intent.setType(StringToJString('text/pas'));
Intent.setAction(StringToJString('com.symbol.datawedge.api.ACTION'));
Intent.putExtra(StringToJString('com.symbol.datawedge.api.SOFT_SCAN_TRIGGER'), StringtoJString('START_SCANNING'));
if MainActivity.getPackageManager.queryIntentActivities(Intent, TJPackageManager.JavaClass.MATCH_DEFAULT_ONLY).size > 0 then
MainActivity.startActivity(Intent) //Calls startActivity() to send the intent to the system.
else
mmLogs.Lines.Add('Erreur: '+DateTimeToStr(now)+' - Receiver not found');
except
on E:Exception do
mmLogs.Lines.Add('Erreur: '+DateTimeToStr(now)+' - btnScanClick - '+E.Message);
end;
end;
这是 AndroidManifest 的 Activity 部分的内容。
<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
android:label="%activityLabel%"
android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
android:launchMode="singleTask">
<!-- Tell NativeActivity the name of our .so -->
<meta-data android:name="android.app.lib_name"
android:value="%libNameValue%" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="com.wa.ZebraDW.ACTION" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
我从中得到启发:
- https://techdocs.zebra.com/datawedge/6-6/guide/output/intent/#singledecodemode
- http://docwiki.embarcadero.com/CodeExamples/Sydney/en/FMX.Android_Intents_Sample
我总是在备忘录中收到有关“找不到接收器”的错误消息。设备没有开始扫描。
这适用于 Delphi 10.3 和经过测试的 Zebra TC56/TC55 设备。 AndroidManifest 保持不变,无需任何其他条目。
procedure TForm1.btnTriggerScanClick(Sender: TObject);
var Intent: JIntent;
begin
Intent := TJIntent.JavaClass.init;
Intent.setAction(StringToJString('com.symbol.datawedge.api.ACTION_SOFTSCANTRIGGER'));
Intent.putExtra(StringToJString('com.symbol.datawedge.api.EXTRA_PARAMETER'), StringToJString('START_SCANNING'));
TAndroidHelper.Activity.sendBroadcast(Intent);
end;