ZXing versus Google Play Services Vision - android

I need to add a feature to capture a QR code in my application. I have used Google Play Services and I can read the QR code but I have some questions:
Is it compatible with all devices? I can use barcodeDetector.isOperational() to check if it is compatible, but that is not my option. I need to be sure it will work in all devices.
Some bar code readers I can get from Play Store, show the camera using all the device surface but in a darker background. In the middle of it, a lighter window is shown surrounded by a frame. That window has the sensibility to read the code, not everywhere in the surface. Is it possible to do that in Google Play Services? It's seems ZXING can do that, as shown in the URL: https://www.studytutorial.in/android-bar-code-qr-code-scanner-tutorial-using-zxing-scanner-library
Regards

First Question:
Is it compatible with all devices?
If you want to integrate Google ML Kit Barcode scanning into your app,
“ML Kit uses the com.google.android.gms namespace for libraries that
depend on Google Play Services.”
But as some phones or other devices are without GMS installed, if you want your app to run on all devices, integrate Huawei Mobile Services (HMS). Scan Kit can be integrated into both Android and iOS systems.
Zxing is a common open-source SDK. However, it only implements basic operations of scanning the QR code and does not support more complex scanning environments such as strong light, bending, and deformation. Currently, the mainstream practice is to optimize the source code based on Zxing. Please kindly refer to this xda article: Comparison between Huawei Scan Kit and Zxing
EMUI Version-Dependent Features of Scan Kit
Required EMUI Version (HUAWEI/HONOR Phones and Tablets): EMUI 3.0 or later
Required Android Version (Non-Huawei Phones): Android 4.4 or later
Scan Kit provides two SDKs. You can select an SDK as required.
Scan Kit SDK-Plus
Recognition capability - Huawei phone:Excellent (using the enhanced recognition model in HMS Core (APK))
Recognition capability - Non-Huawei phone:Excellent (using the enhanced recognition model provided by the SDK)
SDK Size:≈3.3MB
Applicable to: Developers who are insensitive to the SDK size and want to have the best experience on all device models
Scan Kit SDK
Recognition capability - Huawei phone:Excellent (using the enhanced recognition model in HMS Core (APK))
Recognition capability - Non-Huawei phone:Good (using the common recognition model provided by the SDK)
SDK Size:≈0.8MB
Applicable to: Developers who are sensitive to the SDK size
Second question:
About Scanning UI
Scan Kit can be called in four ways, from which you can choose as needed. The Scanning UI of Default View is Provided by Scan Kit. The Scanning UI of Customized View Mode,Bitmap Mode and MultiProcessor Mode are Customized by yourself.
If you want to quickly build powerful barcode scanning capabilities into your app, Default View or Customized View is recommended. In either way, Scan Kit directly controls the camera to maximize capabilities such as zoom control, automatic exposure, and auto focus. Less workload is required, but scanning experience is dramatically improved. Customized View differs from Default View in that you can customize the scanning UI.
Please refer to this demo: https://github.com/HMS-Core/hms-scan-demo

If an Androd devices don't install Play Services(for example, some Huawei devices),the Google Play Services Vision will not work. ZXing is independent BarCode Scan library, and you can run all devices. But, according to my experiment, Google Vision is better than ZXing(Detect faster and Perform better at Fuzzy code).
Google Vision and ZXing both detect the whole surface, this demo maybe help https://github.com/googlesamples/android-vision

Related

Face Detection using Google Glass Enterprise Edition 2

Is OpenCV the most readily available way to get Face Detection working for offline, on-device use case with Google Glass Enterprise Edition 2?
I see three Google-provided libraries, ML Kit, ARCore and, Android-built-in Camera API's face detection, support offline face detection. However, they all seem they won't work for following reasons.
(1) ML Kit doesn't work since it requires Play Services
G. Glass EE 2 only ships with vanilla Android Oreo 8.0
Glass Tech Specs noting Android Oreo - https://www.google.com/glass/tech-specs/
MLKit requirements noting Play Services - https://firebase.google.com/docs/android/setup
(2) AR Core doesn't work because of the same reason, i.e. Play Services
ARCore requirements noting Play Services - https://developers.google.com/ar/discover/supported-devices#android_play
(3) Built-in Camera API for Face Detcetion is Accepted as not working as well
https://code.google.com/archive/p/google-glass-api/issues/282
It looks like OpenCV may not be a good option after all since it's likely too slow on the CPU, and, hasn't been tested on GPU for the Snapdragon XR1 SoC that Google Glass EE2 relies on.
Reference: https://developer.qualcomm.com/forum/qdn-forums/software/fastcv-computer-vision-sdk/35734

How to modify the Zxing Android Embedded project to use a Barcode Reader( the hardware) and not the camera?

I downloaded the project from
https://github.com/journeyapps/zxing-android-embedded
and it works perfectly, but it scans the barcode from the camera,
and I have an android device that has barcode reader hardware implemented in it.
Is there any way to transform this project so that it reads from the barcode reader and not from the camera?
Most of the Android devices that include an hardware barcode scanner make available an SDK to read data from it.
Depending on the brand/model of your device you can get access to the right SDK and modify ZXing or use directly the SDK to read barcodes.
Usually these libraries are much more performant and they include support for a lot more barcode types that what is supported in ZXing.
The most used Android devices with an included barcode scanner are:
Zebra Technologies (they acquired Motorola Solution enterprise business in 2014) have EMDK - Enterprise Mobility Development Kit available for native Java and Xamarin, plus other ways to integrate the HW scanner through intents.
Honeywell ADC and Scanning (they acquired Intermec in 2012) have different SDK for the different devices that support Android
Bluebird Pidion have a support website with development support
Panasonic have a support website with available SDKs
Disclaimer: I work for Zebra Technologies, on our Development Tools

Communicating Between Digital Camera and Android Tablet

I was wondering if there was a known camera that was compatible with android OS's. (such as the nexus 7).
I am trying to essentially control a high resolution digial camera from the android tablet so that it can control when to take a picture, and then retrieve the picture.
This would require a camera with a public API.
I have experience in android programming but not too much in communicating between two different devices. So i was wondering what I should look into in order to achieve this.
Here is a camera that runs Android: http://news.yahoo.com/samsung-takes-aim-japanese-rivals-android-camera-034717081--finance.html
And since it is Android I guess that the API is public.
And the same camera with more info: http://www.samsung.com/uk/consumer/mobile-devices/galaxy-camera/galaxy-camera/EK-GC100ZWABTU and it does run what look like standard android apps.
If you want to control that from another Android device, I think that would make a very interesting project.
The other possibility is the Nikon external control SDK, but I have no idea what language that is in. That was used to build the excellent Sofortbild app for Macs, which controls most Nikon DSLRs. https://sdk.nikonimaging.com/apply/
There are Android applications which can control a set of cameras with added features. The one I'm using gives me the ability to take very specific timelapse shots which would be too complicated or even impossible to get through the camera's own controls. You can find many other control apps on the play store.
Unfortunately this one is only for Canon EOS cameras : DSLR Controller

AR app for androids

I'm trying to build an Augmented Reality application for androids. I just want it to show some 3d models when it recognizes my different markers.
I used this excellent SDK, https://ar.qualcomm.at/qdevnet/sdk and followed the steps, but unfortunately when I created the application and ran it on my android, it showed a message "Your device is not supported". That's probably because that guide is for 2.1 androids, and mine is 2.2
Is there any way to "convert" it? I just want to make it play on my phone.
Is there any way to "convert" it? I just want to make it play on my phone.
Not that I know of. The QCAR SDK actually checks for device compatibility based on explicit conditions (e.g. a snapdragon processor) and fails to initialize if the device is not supported. There's a list of supported devices available on their dev forum - https://ar.qualcomm.at/qdevnet/forums
Most Android (and iOS) devices are now supported by QCAR SDK.

Hardware capabilities and actual implementation of Android API of a device

Up to now I was only developing in J2ME and would like to know about the differences compared to Android.
The situation for a java enabled phone is that it might, for example, has a built-in camera, but the manufacturer didn't implemented the Java API for camera capabilities. Which means you can't use that API. It is even possible that only parts of an API were implemented.
Now, what about Android? For what I know, when a device has Android Platform 2.2 it supports every API Level up to Level 8. And I would guess, that if the built in camera doesn't have a flash then you can't use the Android API call to change the flash mode. Is that right?
Now let's assume that the device has a built in flash enabled camera. Can a developer be sure that the function for changing the flash mode can be used, or is it possible that the manufacturer didn't implemented that specific function even though it is part of the supported API Level which the device was advertised for?
And I would guess, that if the built in camera doesn't have a flash then you can't use the Android API call to change the flash mode. Is that right?
So long as you set it to a valid value, you can always use the API. However, in your case, there is probably only one valid value (i.e., no flash).
Now let's assume that the device has a built in flash enabled camera. Can a developer be sure that the function for changing the flash mode can be used, or is it possible that the manufacturer didn't implemented that specific function even though it is part of the supported API Level which the device was advertised for?
Android devices that do not have the Android Market have no guarantees whatsoever regarding their compatibility with third-party apps.
Android devices that do have the Android Market must pass a compatibility test suite. Whether or not that test suite has a specific test for a specific API can only be determined by looking at the test suite code.
So, it depends on how you define "sure". Developers usually don't have to worry about it, but device firmware bugs do happen.

Categories

Resources