1

使用以下代码尝试设置 Socket 8ci 的声音开/关...不太适合我。你能建议一个正确的命令吗?正如您在代码中看到的那样,我根据首选项布尔值设置声音频率。谢谢!

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

1 回答 1

1

问题

声音配置设备

声音配置允许您设置 4 种不同的“动作”:kSktScanSoundActionTypeGoodScan, kSktScanSoundActionTypeGoodScanLocal, kSktScanSoundActionTypeBadScan, kSktScanSoundActionTypeBadScanLocal. GoodScan和之间的区别BadScan是不言自明的,但和之间的区别GoodScan不是GoodScanLocal很清楚。

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

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

注意:如果您使用GoodScan/BadScan来验证解码数据,您可能需要更改确认模式(请参阅kSktScanPropIdDataConfirmationMode文档)。否则扫描仪将在每次扫描时发出蜂鸣声/闪烁/振动两次

您的代码段所基于的代码段使用后者来证明音调是可配置的并且可以由主机触发。

您选择一种音调,点击确认按钮,扫描仪就会发出该音调。乍一看并不清楚,但如果你使用 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)

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

于 2016-06-22T19:01:12.600 回答