一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Xamarin.Forms 二維碼掃描實(shí)踐

 印度阿三17 2020-02-19

開發(fā)環(huán)境:

Visual Studio 2019 版本 16.4.5

公用平臺(tái)nuget

  1. ZXing.Net.Mobile.Forms 2.4.1
  2. Plugin.Permissions 5.0.0-beta

Android項(xiàng)目環(huán)境nuget

  1. Xamarin.Forms 4.4.0.991640
  2. Ideine.ZXing.Net.Mobile 2.4.2
  3. Plugin.Permissions 5.0.0-beta
  4. Xamarin.Android.Support.Compat 28.0.0.3
  5. Xamarin.Android.Support.Core.UI 28.0.0.3
  6. Xamarin.Android.Support.Core.Utils 28.0.0.3
  7. Xamarin.Android.Support.CustomTabs 28.0.0.3
  8. Xamarin.Android.Support.Design 28.0.0.3
  9. Xamarin.Android.Support.Fragment 28.0.0.3
  10. Xamarin.Android.Support.v4 28.0.0.3
  11. Xamarin.Android.Support.v7.AppCompat 28.0.0.3
  12. Xamarin.Android.Support.v7.CardView 28.0.0.3

一、新建項(xiàng)目

選擇項(xiàng)目模板為:移動(dòng)應(yīng)用(Xamarin.Forms)

點(diǎn)擊下一步:輸入項(xiàng)目名稱ScanBarCode,選擇好項(xiàng)目存儲(chǔ)位置,點(diǎn)擊“創(chuàng)建”按鈕

在彈出的窗體中選擇:模板-詳細(xì)信息 平臺(tái)選擇Andrdeoid和iOS 其他保持未選中狀態(tài),點(diǎn)擊“OK”按鈕,等待新建項(xiàng)目加載完成。

項(xiàng)目創(chuàng)建完成后,會(huì)有三個(gè)項(xiàng)目:

  • ScanBarCode
  • ScanBarCode.Android
  • ScanBarCode.iOS

二、在項(xiàng)目中添加NuGet程序包

點(diǎn)擊解決方案名稱,右鍵,選擇“管理解決方案的 NuGet 程序包”

出現(xiàn)tab頁(yè)面:

更新中出現(xiàn)有一項(xiàng)可更新內(nèi)容,進(jìn)行更新,Xamarin.Forms更新到4.4.0.991640版本。

點(diǎn)擊“瀏覽”選項(xiàng),添加必要的NuGet程序包

ZXing.Net.Mobile.Forms添加到項(xiàng)目ScanBarCode

Ideine.ZXing.Net.Mobile添加到ScanBarCode.Android項(xiàng)目中

Plugin.Permissions 添加到項(xiàng)目:ScanBarCodeScanBarCode.Android項(xiàng)目中

ScanBarCode.Android項(xiàng)目中安裝Xamarin.Android.Support.* 的NuGet程序包(至關(guān)重要)

Xamarin.Android.Support.Compat 28.0.0.3(必要)
Xamarin.Android.Support.Core.UI 28.0.0.3(必要)
Xamarin.Android.Support.Core.Utils 28.0.0.3(必要)
Xamarin.Android.Support.CustomTabs 28.0.0.3
Xamarin.Android.Support.Design 28.0.0.3
Xamarin.Android.Support.Fragment 28.0.0.3(必要)
Xamarin.Android.Support.v4 28.0.0.3(必要)
Xamarin.Android.Support.v7.AppCompat 28.0.0.3(必要)
Xamarin.Android.Support.v7.CardView 28.0.0.3

## 三、在OnCreate中添加初始化代碼
在項(xiàng)目ScanBarCode.Android中的MainActivity.cs文件中OnCreate方法中添加初始化代碼,并重寫OnRequestPermissionsResult方法
```
namespace ScanBarCode.Droid
{
[Activity(Label = "ScanBarCode", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;

        base.OnCreate(savedInstanceState);

        Xamarin.Essentials.Platform.Init(this, savedInstanceState);
        global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
        
        //初始化代碼
        CrossCurrentActivity.Current.Init(this, savedInstanceState);
        MobileBarcodeScanner.Initialize(Application);
        
        LoadApplication(new App());
    }
    public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
    {
        Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);

        base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    }
}

}
```

在項(xiàng)目ScanBarCode.Android中的AssemblyInfo.cs中添加相關(guān)權(quán)限。

[assembly:UsesPermission(Android.Manifest.Permission.Camera)] //相機(jī)
[assembly:UsesPermission(Android.Manifest.Permission.Flashlight)] //閃光燈

四、實(shí)現(xiàn)掃碼功能

4.1 在ScanBarCode中添加內(nèi)容頁(yè)

ScanBarCode中的Views添加內(nèi)容頁(yè):ScanQrCodePage.xaml
在xaml中添加如下代碼:

<!--?xml version="1.0" encoding="utf-8" ?-->
<contentpage x:class="ScanBarCode.Views.ScanQrCodePage" xmlns="http:///schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:d="http:///schemas/2014/forms/design" xmlns:mc="http://schemas./markup-compatibility/2006" mc:ignorable="d">
    <contentpage.content>
        <stacklayout>
            <button x:name="ScanBarCodeBtn" clicked="ScanBarCodeBtn_OnClicked" text="掃描二維碼">
            </button>
            <label x:name="ScanTextResult" text="Hello Xamarin.Forms!">
            <button x:name="CustomScanBarCodeBtn" clicked="CustomScanBarCodeBtn_OnClicked" text="自定義掃描二維碼">
            </button>
            <label x:name="CustomScanResult" horizontaloptions="CenterAndExpand">
            </label>
            <button x:name="BuildQrCdoeBtn" clicked="BuildQrCdoeBtn_OnClicked" text="生產(chǎn)二維碼">
            </button>
            <grid x:name="QrCodeSite" heightrequest="300">
            </grid>
        </label></stacklayout>
    </contentpage.content>
</contentpage>

掃碼功能實(shí)現(xiàn)

ScanBarCodeBtn_OnClicked方法中實(shí)現(xiàn)掃碼功能:

private async void ScanBarCodeBtn_OnClicked(object sender, EventArgs e)
{
   if (await CheckPerssion())
   {
      var scanner = new MobileBarcodeScanner();
      var result = await scanner.Scan();
      if (null != result)
      {
        ScanTextResult.Text = result.Text;
       }
   }
}

檢查權(quán)限代碼:

/// <summary>
/// 檢查權(quán)限
/// </summary>
/// <returns></returns>
private async Task<bool> CheckPerssion()
{
   var current = CrossPermissions.Current;
   var status = await current.CheckPermissionStatusAsync<camerapermission>();
   if (PermissionStatus.Granted != status)
   {
      status = await current.RequestPermissionAsync<camerapermission>();       
   }
   return status == PermissionStatus.Granted;
}

這樣就實(shí)現(xiàn)了掃碼功能,可以是條形碼,二維碼等。

4.2 自定義掃碼功能

使用默認(rèn)掃描器雖可以完成掃描功能,但是其樣式過于簡(jiǎn)陋,下面通過自定義ScanPage和ScanOverlay更改掃描器樣式。

4.2.1 自定義ZXingScanOverlay。

4.2.2 自定義ZXingCustomScanPage

4.2.3 實(shí)現(xiàn)點(diǎn)擊實(shí)現(xiàn)

4.3、生成二維碼功能

在點(diǎn)擊事件中直接進(jìn)行生成二維碼的功能

五、側(cè)邊欄菜單實(shí)現(xiàn)

ScanBarCode項(xiàng)目的Models文件夾的HomeMenuItem文件的enum中添加

public enum MenuItemType
    {
        Browse,
        About,
        ScanQrCode //二維碼掃碼菜單
    }

ScanBarCode項(xiàng)目的Views文件夾的MenuPage.xaml.cs文件中添加菜單項(xiàng):

ScanBarCode項(xiàng)目的Views文件夾的MainPage.xaml.cs文件中的NavigateFromMenu方法中內(nèi)容:

源碼

https://github.com/mzy666888/ScanBarCodeXamarin

參考

  1. 全部的掃碼的代碼全部來源于此BLOG:https://www.jianshu.com/p/a200de28597b

  2. https://github.com/HisCodeness/MvvmCross.Plugin.QRCode

結(jié)束語

小編用了3天的時(shí)間,終于把掃碼功能研究出來了。在VS生成的項(xiàng)目中沒有引用Xamarin.Android.Support 相關(guān)包,導(dǎo)致個(gè)人一直認(rèn)為需要把ZXing.Net.Mobile的相關(guān)庫(kù)升級(jí)到.netstandard 2.0才能使用呢。
各位如果喜歡請(qǐng)給個(gè)關(guān)注,點(diǎn)個(gè)在看

來源:https://www./content-4-634551.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    中文字幕中文字幕在线十八区 | 欧美黑人黄色一区二区| 日韩一区二区三区有码| 日本男人女人干逼视频| 日韩精品第一区二区三区| 亚洲欧美精品伊人久久| 久久久精品日韩欧美丰满| 日韩在线欧美一区二区| 国产人妻精品区一区二区三区| 久久国产亚洲精品成人| 欧美日韩乱一区二区三区| 中文字幕中文字幕在线十八区 | 麻豆一区二区三区在线免费| 六月丁香六月综合缴情| 在线日本不卡一区二区| 亚洲天堂国产精品久久精品| 好吊视频一区二区在线| 日韩性生活视频免费在线观看 | 成人国产一区二区三区精品麻豆| 一区二区在线激情视频| 成人免费观看视频免费| 日韩欧美高清国内精品| 亚洲精品一二三区不卡| 欧美成人免费夜夜黄啪啪| 午夜亚洲精品理论片在线观看| 日韩综合国产欧美一区| 爽到高潮嗷嗷叫之在现观看| 91人妻人人揉人人澡人| 草草草草在线观看视频| 国产老熟女超碰一区二区三区| 久久精品中文扫妇内射| 亚洲国产精品久久精品成人| 四季精品人妻av一区二区三区| 美女露小粉嫩91精品久久久| 亚洲欧美日韩国产自拍| 亚洲最新av在线观看| 少妇丰满a一区二区三区| 国产欧美亚洲精品自拍| 国产欧美日韩视频91| 中文字幕一区久久综合| 精品推荐国产麻豆剧传媒|