为 Socket 设备设置声音配置

Setting sound configuration for Socket device

使用以下代码尝试为 Socket 8ci 设置声音 on/off...对我来说效果不佳。你能建议一个正确的命令吗?正如您在代码中看到的那样,我根据首选项布尔值设置了声音频率。谢谢!

DeviceInfo device = (DeviceInfo) _scanApiHelper.getDevicesList().lastElement();
short[] soundConfig = new short[3];
// default the sound to On
if(getBRSharedPreferenceBoolean(PreferencesActivity.PREF_SOCKET_SCANNER_BEEP, true)) {
    soundConfig[0] = ISktScanProperty.values.soundFrequency.kSktScanSoundFrequencyHigh;
} else {
    soundConfig[0] = ISktScanProperty.values.soundFrequency.kSktScanSoundFrequencyNone;
}
soundConfig[1] = 200;
soundConfig[2] = 100;

// set the scanner sound config
_scanApiHelper.postSetSoundConfigDevice(
        device,
        ISktScanProperty.values.soundActionType.kSktScanSoundActionTypeGoodScan,
        soundConfig,
        _onSetScanApiConfiguration);

问题

声音配置设备

声音配置允许您设置 4 个不同的 "actions":kSktScanSoundActionTypeGoodScankSktScanSoundActionTypeGoodScanLocalkSktScanSoundActionTypeBadScankSktScanSoundActionTypeBadScanLocalGoodScanBadScan 之间的区别是不言自明的,但是 GoodScanGoodScanLocal 之间的区别不是很清楚。

GoodScanLocal,默认是扫描条码时发出的声音

GoodScan 仅在主机(例如 Android、iOS、Windows)向扫描器发送 GoodScan 或 BadScan 通知(通过 kSktScanPropIdDataConfirmationDevice)

Note: If you are using GoodScan/BadScan to verify decoded data, you probably want to change the confirmation mode (see kSktScanPropIdDataConfirmationMode in the docs). Otherwise the scanner will beep/flash/vibrate twice per scan

您的代码片段所基于的代码片段使用后者来证明音调既可配置又可由主持人触发。

你 select 一个提示音,按下确认按钮,扫描仪就会发出提示音。乍一看不太清楚,但是如果你使用 SingleEntry 中的下拉菜单更改音调并点击确认,这三种音调非常明显。但是,如果您使用相同的下拉菜单更改音调,则扫描条形码时听到的音调应该不会改变。

解决方案

实现您想要实现的目标的最好和最简单的方法是设置 本地解码操作 并禁用蜂鸣声

本地解码操作

// import static com.socketmobile.scanapi.ISktScanProperty.values.localDecodeAction.*;

DeviceInfo device = (DeviceInfo) _scanApiHelper.getDevicesList().lastElement();
int decodeAction = kSktScanLocalDecodeActionFlash | kSktScanLocalDecodeActionRumble;
if(getBRSharedPreferenceBoolean(PreferencesActivity.PREF_SOCKET_SCANNER_BEEP, true)) {
    decodeAction |= kSktScanLocalDecodeActionBeep;
}
_scanApiHelper.postSetDecodeAction(device, decodeAction)

为了完整起见,要使用您发布的代码获得类似的结果,您只需将 kSktScanSoundActionTypeGoodScan 更改为 kSktScanSoundActionTypeGoodScanLocal。虽然我不推荐它。