Scan Kit

--

Herkese merhaba,

İlk yazımda sizlere Scan Kit’in Bit map modundan bahsetmiştim. Dijitalleşmeye evrildiğimiz şu süreçte bilgilere hızlı ve kolay bir şekilde ulaşmanın hepimiz için önemli bir etken olduğunu düşünüyorum. Hızlı ve kolay olmasının yanında sağlayacağı birçok imkan ile birlikte etkili olması da bu kiti derinlemesine anlatmam için önemli bir neden oldu benim için. Umarım yazının sonunda kafamızdaki soru işaretleri silinmiş olur :)

Scan Kit nedir ? İlk olarak oradan başlayalım..

Huawei Scan Kit, tüm büyük 1D ve 2D barkodları tarar, ayrıştırır ve QR kodları oluşturur böylece uygulamanıza hızlı bir şekilde barkod tarama işlevleri oluşturmanıza yardımcı olur.

Bu kiti daha iyi anlamamız veya uygulama yazarken daha iyi bir sonuç çıkarmamız için özelliklerini iyi öğrenmemiz gerekir.

  • Desteklenen 13 Farklı Format

1D Barkodlar : EAN — 8 , EAN — 13 , UPC-A, UPC-E, Codabar, Code39, Code 93, Code 128 and ITF

2D Barkodlar : QR Code, Data Matrix, PDF417, and Aztec

Not : İlerleyen süreçte daha fazla format desteği sağlanacaktır.

  • Gelişmiş Tanıma Özelliği

Tarama yapılan alan silindirik, bulanık, parlak veya düşük görünürlüğe sahip olsa dahi işlem gerçekleştirilir. Aynı zamanda tarama yapılan düzlem hasarlı olsa bile büyük ölçüde tarama başarılı şekilde gerçekleştirilir.

  • Otomatik Zoom

Otomatik yakınlaştırma özelliği ile küçük veya uzak barkodlar yakınlaştırılarak tarama performansı arttırılmıştır.

  • QR Kod Üretimi

Verilen bilgiler ile ilgili en iyi versiyonda QR kod oluşturmayı sağlar.

Bizim için en önemli özellikler bu şekildedir. Şimdi de Scan Kit’in modlarını inceleyelim.

Özelliklerini ve modlarını inceledikten sonra projemize nasıl entegre edebileceğimize bakalım.

Not : Daha önceki Scan Kit yazımda ayrıntılı olarak bahsetmiştim fakat akışı bozmamak için önemli noktalara değinmek istiyorum.

1 . AppGallery Connect’te oturum açalım ve uygulamalarım seçeneğini seçelim.

2. Açılan listeden uygulamızı bulalım ve tıklayalım. Eğer önceden oluşturulmuş bir uygulamamız yok ise ‘New App’ butonu ile bir uygulama kaydı oluşturalım.

3. Sırasıyla, Develop -> Overview -> App information sekmelerine tıklayalım. Açılan pencereden “agconnect-services.json” ögesine tıklayarak indirelim.

İndirdiğimiz agconnect-services.json dosyasını Android Studio üzerinden app kök dizinine kopyalayalım.

4. Root dizinde build.gradle dosyasını açalım. Sırasıyla allprojects — repositories e gidelim ve HMS SDK için Maven repositories adresini yapılandıralım.

5. Sırasıyla buildscript → dependencies yapılandırmalarını ekleyelim.

6. App dizinindeki build.gradle dosyasını yapılandıralım, implementation bağımlılıklarını ekleyelim. {version} yerine güncel SDK sürüm numarasını girelim.

Not : Huawei Scan Kit 2 SDK sürümünü destekliyor SDK VE SDK PLUS.

7. Sonrasında App kök dizinine AppGallery Connect plug-in bağımlılığını ekleyelim.

!! Projemizi senkronize etmeyi unutmayalım..

Bu adımımızda da Hms Scan Kit için gerekli izinleri ekliyoruz.

8. Öncelikle kamera iznini ve dosya okuma iznini manifest dosyamıza ekliyoruz.

9. Sonrasında “runtime permission” sürecini destekleyen mobil cihazlar için de kamera ve dosya okuma izinlerini kullanıcıdan alan fonksiyonları kodumuza ekliyoruz.

Scan Kit modlarını yukarıda bir tablo ile detaylı bir şekilde incelemiştik. Projemizde hangi modun bizim için daha faydalı olduğuna karar verip, projemize o şekilde yön verebiliriz. Şimdi 4 farklı modu kodları ile birlikte inceleyelim.

Hms Scan Kit Methodlarını Ekleme :

1.Default View :

Default View modunda, Scan Kiti kamera ve albümdeki görüntülerden barkodları tarar ve doğrudan kullanılabilecek etkinlikler sağlar. Scan Kit bir kullanıcı arayüzü sağladığı için herhangi bir kullanıcı arayüzü tasarlama konusunda endişelenmemize gerek yoktur.

!! Kodlama aşamasına geçmeden önce süreci iyi bir şekilde anlamamızın bizim için daha faydalı olacağını düşündüm.

Default View
  1. Kullanıcı bir uygulamayı başlatır ve barkod taraması talebinde bulunur.
  2. Uygulamanın kamera erişimi ve dosya okuma izinlerine sahip olup olmadığı kontrol edilir.
  3. Uygulama izinlerine sahip ise, tarama ekranını getirmek için HMS Sdk sının startScan Apı’sı çağrılır.
  4. Tarama ekranının başarılı bir şekilde görüntülenip görüntülenmediği control edilir.
  5. HMS SDK, tarama durumuna göre tarama sonucu elde etmek için uygulamanın onActivityResult API sini geri çağırır.
  6. Uygulama tarama sonucunu içine alır ve kullanıcıya gönderir.

Geliştirme Süreci :

  1. Tarama ekranını android manifest dosyasına bildiriyoruz.

2. Daha öncede belirttiğim gibi Scan Kit 13 barkod formatına izin verir. Bunlardan yalnızca bazıları gerekiyorsa, Scan kit için yalnızca gerekli olanları destekleyecek yapılandırmalar eklememiz önerilir çünkü bu durum tarama hızını arttıracaktır. Örneğin yalnızca QR ve DataMatrix kodlarının taranması gerekiyorsa aşağıdaki örnekteki gibi HmsScanAnalyzerOptions nesnesi oluşturabiliriz.

!! Formatı belirtmemiz gerekmiyorsa options nesnesi gerekli değildir.

3. Scan Kit i default view modunda getirmek için ScanUtil static yöntemini çağırıyoruz.

Kullanıcı bir barkodu taramak için kamerayı kullanabilir veya albüme gitmek ve görüntüdeki barkodu tespit etmek için tarama ekranındaki albüm düğmesine dokunabilir. Aşağıdaki örnek kodda; “REQUEST_CODE_SCAN_ONE “ istek kimliğidir.

Not 1 : OnActivityResult yöntemindeki requestCode tam olarak burada tanımladığınız istek kimliğiyse, tarama sonucu başarıyla Tarama Kiti’nden alınır.

Not 2 : Tarama Kiti’nin desteklenen tüm 13 formattaki barkodları taramasını istiyorsanız, burada seçenekleri null olarak ayarlayın.

4. Kullanıcı bir barkodu taramak için kamerayı kullanabilir veya albümden bir görüntüyü seçebilir. Aşağıdaki örnekte gösterilen onActivityResult metodu ile tarama sonucu elde edilir.

2. Customized View :

Tarama işlemi veya kamera kontrolü geliştirme konusunda bu mod size yardımcı olacaktır ancak tarama kullanıcı arayüzünü tasarlamanız gerekir.

!! Şemasını inceleyerek başlayalım :)

Customized View

1.Kullanıcı bir uygulamayı başlatır ve barkod taramaı talebinde bulunur.

2. Uygulamanın kamera erişimi ve dosya okuma izinlerine sahi olup olmadığı kontrol edilir.

3. Tarama kullanıcı arayüzünü oluşturmak ve taramaya başlamak için uygulamanın özelleştirilmiş görünümünü başlatır.

4. Tarama başarılı olursa HMS SDK tarama sonucunu geçmek için uygulamanın onResult APIsini çağırır.

5. Uygulama tarama sonucunu içine alır ve kullanıcıya gönderir.

Geliştirme Süreci :

Kamerayı kullanarak barkodları tarama işlevini geliştirme :

  1. Bir Remote View oluşturalım.

a. Kamera önizleme ekranını RemoteView’a bağlayalım ve tarama alanını ayarlayalım. Önizleme akışında, Scan Kit yalnızca tarama alanındaki görüntüyü tanımlar. Çekilen görüntüyü daha iyi büyütmek için, tarama kutusunun ekranın ortasına yerleştirilmesi ve tarama alanından biraz daha küçük olması önerilir.

b. Tarama Kiti’nin desteklemesini istediğimiz barkod formatlarını ayarlayalım, uzak görünümü başlatıp, kullanıcı arayüzü öğelerini ayarlayalım.

!! Yalnızca belirli barkod biçimlerini destekleyen Scan Kit işlemi daha hızlı gerçekleştirir.

Örneğin, yalnızca QR Kodu ve Veri Matrisinin algılanması gerekiyorsa, Scan Kiti’ni yalnızca iki tür barkodu destekleyecek şekilde ayarlamak için

“setFormat(HmsScan.QRCODE_SCAN_TYPE,HmsScan.DATAMATRIX_SCAN_TYPE)” yöntemini kullanın.

Scan Kit tarafından desteklenen tüm barkod biçimlerinde barkodları taramak sizin için kabul edilebilirse, barkod biçimini belirtmek için setFormat yöntemini çağırmanız gerekmez.

Barkod sonucunu görebilmek için aşağıdaki kodları ekleyebiliriz.

3. Bit Map Mod :

Bu modu detaylı bir şekilde anlattığım linki sizinle paylaşmak istiyorum..

https://medium.com/huawei-developers-tr/huawei-scan-kit-bit-map-entegrasyonu-kotlin-d08d1ba5f92c

Daha önce yazımı okumuş arkadaşların sıkılmaması, ilk defa yazımı okuyan arkadaşların da daha iyi öğrenmesi için :)

4. MultiProcessor :

Aynı anda birden fazla barkodu tarar. İşlem verimliliğinde diğer üç moddan daha az yeteneklidir. Yalnızca eş zamanlı tarama gerektiğinde kullanmanız önerilir. Senkronize veya senkronize olmayan bir şekilde çalışır.

a ) Senkronize Mod :

1. Kullanıcı bir uygulamayı başlatır ve barkod taraması talebinde bulunur.

2. Uygulamanın kamera erişimi ve dosya okuma izinlerine sahip olup olmadığını kontrol edilir.

3. Uygulamanın izinleri varsa, HmsScanAnalyzer’ı başlatılır.

4. Görüntü bilgilerini MLFrame’e dönüştürülür.

5. HmsScanAnalyzer tarama API’sı analyseFrame’i çağırır.

6. Tarama sonucunu döndürülür.

7.Uygulama tarama sonucunu içine alır ve kullanıcıya gönderilir.

Geliştirme Süreci :

  1. ( İsteğe bağlı ) HmsScanAnalyzerOptions nesnesini başlatılır ve desteklenen barkod biçimini ayarlanır.

setHmsScanTypes () isteğe bağlı bir parametredir. Gerektiği gibi ayarlayabilirsiniz.

!! Daha önce de söylediğim gibi, yalnızca birkaç barkod formatı desteklendiğinde işlem daha hızlı gerçekleştirilir.

2. HmsScanAnalyzer nesnesini başlatalım. Ayarlanacak belirli barkod biçimlerimiz yoksa, burada seçenekleri null olarak ayarlayabiliriz.

3. Görüntü bilgilerini, görüntü bilgi class’ı olan ML frame’ine aktaralım.

4. Bir tarama isteği başlatmak ve tarama sonucunu elde etmek için HmsScanAnalyzer nesnesinin scanseFrame yöntemini çağıralım.

b) Senkronize Olmayan (Asynchronous Mode) :

  1. Kullanıcı bir uygulamayı başlatır ve barkod taraması talebinde bulunur.
  2. Uygulamanın kamera erişimi ve dosya okuma izinlerine sahip olup olmadığını kontrol edilir.
  3. Uygulamanın izinleri varsa, HmsScanAnalyzer’ı başlatır.
  4. Görüntü bilgileri, görüntü bilgi class’ı olan ML frame’ine aktarılır.
  5. HmsScanAnalyzer’ın asenkron tarama API analizi çağırılır.
  6. Hms SDK, tarama sonucunu göndermek için uygulamanın onSuccess veya onFailure API’ını geri çağırır.
  7. Uygulama tarama sonucunu alır ve kullanıcıya gönderir.

Geliştirme Süreci :

  1. ( İsteğe bağlı ) HmsScanAnalyzerOptions nesnesini başlatılır ve desteklenen barkod biçimini ayarlanır.

setHmsScanTypes () isteğe bağlı bir parametredir. Gerektiği gibi ayarlayabilirsiniz.

2. HmsScanAnalyzer nesnesini başlatalım. Ayarlanacak belirli barkod biçimlerimiz yoksa, burada seçenekleri null olarak ayarlayabiliriz.

3. Görüntü bilgilerini, görüntü bilgi class’ı olan ML frame’ine aktaralım.

4. Bir tarama isteği başlatmak ve tarama sonucu elde etmek için HmsScanAnalyzer ‘ın analyInAsyn API’sını çağıralım.

Scan Kit modlarını inceledik. Hangisini kullanacağımız daha önce de söylediğim gibi projemizin ihtiyacına bağlı..

Şimdi projelerimiz için faydalı olacağını düşündüğüm bir özelliği detaylandırmak istiyorum. Bu özellik Huawei Scan Kit’in en önemli farklarından biri. Ben de arkadaşım ile birlikte yaptığım bir uygulamada bu özelliği kullanmıştım :)

Daha önce 13 farklı barkodun desteklendiğini söylemiştim. Şimdi ise vereceğimiz bilgilerle biz bir barkod oluşturacağız. Geliştirme sürecini inceleyelim ve kafamızda oluşan soru işaretlerini noktalandıralım.

  • Barkoda dönüştürülecek karakter dizinini, genişliğini ve barkod biçimini ayarlayalım.
  • HmsBuildBitmapOption öğesini başlatalım ve isteğe bağlı parametleri ayarlayalım.

İsteğe bağlı parametreler ;

setBitmapBackgroundColor()

setBitmapColor()

setBitmapMargin()

  • Bir barkod oluşturmak için buildBitmap API’sını çağıralım.

Yazının sonuna geldiğimde ben bu yazıyı okusaydım ne düşünürdüm acaba diye eleştirisel bir gözle baktım ve şu soruyu kendim sordum; ‘Ne olduğunu, özelliklerini, modlarını öğrendim fakat neden Huawei Scan Kit kullanmalıyım ? ‘

Araştırmalarım doğrultusunda şöyle bir tablo oluşturdum. Umarım siz de faydalı bulursunuz :)

Hms Scan Kit’in Farkları

Buraya kadar geldiğinizde bu kit hakkında kafanızda soru işareti kalmadı ise istediğime ulaşmışım demektir.. Sorularınız ve geri dönüşlerinizi merakla bekliyorum..

Okuduğunuz için teşekkür ederim..

Bir sonraki yazılarda görüşmek dileğiyle :)

--

--