android中zxing扫描条码没有声音

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android中zxing扫描条码没有声音相关的知识,希望对你有一定的参考价值。

能够识别条码
public void handleDecode(Result rawResult, Bitmap barcode, float scaleFactor)
inactivityTimer.onActivity();
boolean fromLiveScan = barcode != null;
if (fromLiveScan)
//为什么没有声音呢
beepManager.playBeepSoundAndVibrate();

String result = rawResult.getText();
if (!TextUtils.isEmpty(result))
Intent intent = new Intent();
intent.putExtra("scan_result", rawResult.getText());

setResult(RESULT_OK, intent);
else
setResult(RESULT_CANCELED);

//不加finish有声音不跳转。
finish();

在 beepManager.playBeepSoundAndVibrate(); 之后增加一个足够的延时,以便声音能够播放出来 参考技术A 那你自己加一个呗

使用 zxing 进行条码扫描

【中文标题】使用 zxing 进行条码扫描【英文标题】:Barcode scanning using zxing 【发布时间】:2021-04-05 12:51:26 【问题描述】:

<zxing:ZXingScannerView IsScanning="True" OnScanResult="OnScanResult"/> 我在 xaml 文件中有这个,但我想使用 mvvm,所以我在 viewmodel 中有 onscanresult 事件处理程序。我如何使用它而不是后面代码中的那个?

public void OnScanResult(ZXing.Result result)

    Device.BeginInvokeOnMainThread(() =>
    
        ScanResult = result.Text + " (type: " + result.BarcodeFormat + ")";
    );

【问题讨论】:

使用 EventToCommand 行为,或者只是让事件处理程序调用您的 VM 方法。使用事件不一定会破坏 MVVM 【参考方案1】:

如果您不想使用行为,只需创建一个新版本的 ContentPage,它会创建一个事件来命令:

    public class ZxingContentPage : ZXingScannerPage

    public static readonly BindableProperty ScanResultCommandProperty =
        BindableProperty.Create(
            nameof(ScanResultCommand),
            typeof(ICommand),
            typeof(ZxingContentPage),
            default(ICommand)
            );

    public ICommand ScanResultCommand
    
        get  return (ICommand)GetValue(ScanResultCommandProperty); 
        set  SetValue(ScanResultCommandProperty, value); 
    

    public ZxingContentPage(MobileBarcodeScanningOptions options) : base(options)
    
        OnScanResult += ZxingContentPage_OnScanResult;
    

    private void ZxingContentPage_OnScanResult(ZXing.Result result)
    
        if (ScanResultCommand?.CanExecute(result) == true)
        
            ScanResultCommand.Execute(result);
        
    

然后像下面这样使用它:

<?xml version="1.0" encoding="utf-8" ?>
<views:ZxingContentPage
  x:Class="NameSpace.Zxing.ZxingMobileScannerView"
  xmlns="http://xamarin.com/schemas/2014/forms"
  xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
  xmlns:views="clr-namespace:QRST.Views.Generic"
  IsScanning="True"
  ScanResultCommand="Binding ZxingScanResultCommand" />

祝你好运

如有疑问,请随时回复。

【讨论】:

以上是关于android中zxing扫描条码没有声音的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android zxing 中扫描带有嵌入权重的条码

如何将 ZXing 库集成到 Android Studio 进行条码扫描?

Android zxing Journeyapps 条码扫描器内部片段

android zxing 怎么获得扫码时间

Zxing Android 无法扫描 Code 128

Android - 条码扫描,选项?志兴?