darryncampbell / darryncampbell-cordova-plugin-intent

General purpose intent shim layer for cordova appliations on Android. Handles various techniques for sending and receiving intents.
MIT License
86 stars 130 forks source link

Using Zebra TC57 Device #110

Closed prashant18-code closed 4 years ago

prashant18-code commented 4 years ago

Hi @darryncampbell ,

I hope the datawedge profile is already available on a Zebra device. So then how to do a scan barcode using this plugin ? Also, i would like to know if this plugin works only on Zebra device or does it work on any android device ?

I am using Ionic v4. And developing an App for Zebra device.

Find my simple code which i am using starting with platform.ready() in app.component.ts

(window).plugins.intentShim.registerBroadcastReceiver ({ filterActions: [ 'com.zebra.cordovademo.ACTION', // Scans 'com.symbol.datawedge.api.RESULT_ACTION' // Messages from service ], filterCategories: [ 'com.android.intent.category.DEFAULT' ] }, (intent) => { // Broadcast received console.log('Received Intent: ' + JSON.stringify(intent.extras)); if (intent.extras["com.symbol.datawedge.data_string"] != null) { console.log("Scan: " + intent.extras["com.symbol.datawedge.data_string"]); } this.router.navigate(['home']); }); }).catch((error) => { console.log("catch: " + error); });

Then, i am using a method to trigger the plugin methods as follows as, but this doesn't trigger or consoles anything :

openScan(){ (window).plugins.intentShim.sendBroadcast({ action: 'com.symbol.datawedge.api.ACTION', extras: { 'com.symbol.datawedge.api.SOFT_SCAN_TRIGGER': 'TOGGLE_SCANNING' } }, function() { console.log("success"); }, function() {} );

(<any>window).plugins.intentShim.startActivityForResult({
  action: (<any>window).plugins.intentShim.ACTION_PICK,
  url: "content://com.android.contacts/contacts",
  requestCode: 1
  },
  function(intent) {
    alert(JSON.stringify(intent));
    if (intent.extras.requestCode == 1)
    {
        console.log('Picked contact: ' + intent.data);
    }
  },
  function() {
    console.log("StartActivityForResult failure");
  }
);

(<any>window).plugins.intentShim.sendResult(
  {
      extras: {
          'Test Intent': 'Successfully sent',
          'Test Intent int': 42,
          'Test Intent bool': true,
          'Test Intent double': parseFloat("142.12")
      }
  },
  function() {

  }

); }

Being a zebra device user, i would really appreciate your response on this.

Thanks

darryncampbell commented 4 years ago

Hi, have you seen the sample app for Ionic, https://github.com/ZebraDevs/DataWedge-Ionic-Demo. I recently updated it to work with Ionic 6 but that should hopefully give you a working sample. Yes, this plugin will work on both Zebra and non-Zebra devices, although it only sends / receives Android Intents. If you want to do barcode scanning on a non-Zebra device you should use the Ionic barcode plugin.

prashant18-code commented 4 years ago

Your quick response is much appreciated Darryn.

Yes i have seen your sample App that works only on Zebra devices. I want to implement barcode scanning on Zebra device only, i have created an App for Zebra device which should have a feature of barcode scanning. Now, guide me please how to do scanning on Zebra device. I know datawedge profile will be available on Zebra device. But what makes me confused here is

  1. "Does zebra device already have barcode scanning capabilities with Datawedge (and i just have to read the results) ?" OR 2."Do i have to implement this intentShim plugin/ or any other Zebra plugin to do that ?" OR
  2. "Do i need to integrate your sample App in my App to achieve the scanning ?"

I can go for either of the above 3 ways. But i don't know how to proceed with any of the above ways.

darryncampbell commented 4 years ago

Option 1: All Zebra devices come with DataWedge pre-installed and you just have to configure DataWedge with a Profile and read the scans via Intents (there are other ways of using DataWedge but this is the approach taken by my sample which meets most use cases). So, please take a look at how the sample Interacts with DataWedge (creates a profile, configures that profiles, receives scan data) and copy that approach - that is the path of least resistance.

prashant18-code commented 4 years ago

please take a look at how the sample Interacts with DataWedge (creates a profile, configures that profiles, receives scan data) ---> But i don't even need to worry about creating a profile and configure that profile for datawedge, if i have datawedge higher than 6.4 right ? --Plz confirm this !!

If yes, then i just have to receive the scan data and display it accordingly in my App. Is that correct ? Now, which method of intentShim plugin is used to read the scan data ?

darryncampbell commented 4 years ago

But i don't even need to worry about creating a profile and configure that profile for datawedge, if i have datawedge higher than 6.4 right ? --Plz confirm this !!

You need to create the profile somehow, either through code (as the sample does), by creating the profile through the DataWedge application or by provisioning the profile via StageNow or EMM

Now, which method of intentShim plugin is used to read the scan data ?

You receive scans via a broadcast intent, so registerReceiver()

darryncampbell commented 4 years ago

Closing due to inactivity

prashant18-code commented 4 years ago

Hi Darryn,

Aplogize for not updating you regarding this issue. I have been doing good with the intent plugin now. Tings worked like charm as per your advices.

Appreciate that. Also, i was about to write you for one more help. I have created a mobile app for Zebra TC57 device, implemented the barcode scanning using latest in-built Datawedge. Barcode scanning work absolutely fine but our customer got a requirement, which says " when we do a good barcode scan/ a valid scan then we should not get the beep tone" and when we get an invalid scan/bad decode, only then the beep tone should come out".

PFA an xml file which was given by our customer in their old zebra device (an MC series windows device). But now the app we have developed is going to run on Android- TC57 device. I don't find any such .xml file in TC57 Android device. I tried to export the config file of datawedge from it's package but that was totally different sort of file (datawedge.db).

Could you please help me what i need to do this ? Do i need to do something in device or in code ? OR, Is there any platform specific restrictions which could be done on windows zebra device(avoiding beep on good decode) and can not be done on Andorid zebra device ?

Thanks a ton in advance.

Regards, Prashant Kumar Senior Software Engineer-Mobility Mob: 9966780464

On Tue, Jun 16, 2020 at 7:11 PM Darryn notifications@github.com wrote:

Hi, have you seen the sample app for Ionic, https://github.com/ZebraDevs/DataWedge-Ionic-Demo. I recently updated it to work with Ionic 6 but that should hopefully give you a working sample. Yes, this plugin will work on both Zebra and non-Zebra devices, although it only sends / receives Android Intents. If you want to do barcode scanning on a non-Zebra device you should use the Ionic barcode plugin.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/darryncampbell/darryncampbell-cordova-plugin-intent/issues/110#issuecomment-644773678, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOPDBGUY6SKCFQKN7ZO6FA3RW5ZCLANCNFSM4N7QVVYQ .

darryncampbell commented 4 years ago

I know what you mean, there used to be a 'bad decode' setting but that has been removed. I'm not entirely sure why and you might need to contact Zebra support to get an answer to that question. If you try to scan a barcode on TC57 and e.g. the check digit is wrong it just does not scan. To silence the good scanner beep you could either change the decode sound to a silent mp3 or you could adjust the volume of the scanner stream stream_vvs, see https://techdocs.zebra.com/mx/audiovoluimgr/

prashant18-code commented 4 years ago

As I am totally unaware of stuffs at zebra device level, could you please help me understand both options which you provided :-

Option 1 - you could either change the decode sound to a silent mp3 --> how to change this sound ? is it device level change ? Option 2 - you could adjust the volume of the scanner stream stream_vvs --> I read through the link you shared. I found a "Zebra Volume Control" in the device setting which does have an option "Scanner volume". But if i drag that volume level to 0, i won't get the beep tone on bad decode as well right ? Or i am not getting what you said in option 2 ?

Thanks.

Regards, Prashant Kumar Senior Software Engineer-Mobility Mob: 9966780464

On Mon, Aug 17, 2020 at 8:08 PM Darryn notifications@github.com wrote:

I know what you mean, there used to be a 'bad decode' setting but that has been removed. I'm not entirely sure why and you might need to contact Zebra support to get an answer to that question. If you try to scan a barcode on TC57 and e.g. the check digit is wrong it just does not scan. To silence the good scanner beep you could either change the decode sound to a silent mp3 or you could adjust the volume of the scanner stream stream_vvs, see https://techdocs.zebra.com/mx/audiovoluimgr/

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/darryncampbell/darryncampbell-cordova-plugin-intent/issues/110#issuecomment-674920734, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOPDBGR2OYAAUNRLYUKY7QTSBE6GPANCNFSM4N7QVVYQ .

darryncampbell commented 4 years ago

I do not know how you would address your requirement about an "invalid beep tone", that is what I meant when I was talking about 'bad decode' and my recommendation to contact Zebra support for help on that. The rest of my answer assumed you wanted to silence the 'good decode' sound but your customer may not want to do that if there is no longer a 'bad decode' sound.

Option 1 was 'configure scanner settings' --> 'scan params' --> 'decode audio feedback' and choose 'silent'... that is by far easier than option 2.

prashant18-code commented 4 years ago

Alright thanks for this too Darrync !!

I have already contacted zebra support for the same. They also suspected the same saying "bad decode" has been removed now. They only asked me to export the "datawedge.db" config file and check if anything can be changed there and import it back to datawedge. But i did not find any such thing to change for decode beep in that file. After reporting this to my customer, they suggested me to join a webinar from zebra, which i saw, eventually is going to be presented by you. :) and Randy David(from Zebra) is the person who informed us about this.

I have the invite as well :- So, i would like to know Darryn if this webinar will help me out with my goals ??

[image: Screenshot 2020-08-17 at 9.23.20 PM.png] Regards, Prashant Kumar Senior Software Engineer-Mobility Mob: 9966780464

On Mon, Aug 17, 2020 at 8:48 PM Darryn notifications@github.com wrote:

I do not know how you would address your requirement about an "invalid beep tone", that is what I meant when I was talking about 'bad decode' and my recommendation to contact Zebra support for help on that. The rest of my answer assumed you wanted to silence the 'good decode' sound but your customer may not want to do that if there is no longer a 'bad decode' sound.

Option 1 was 'configure scanner settings' --> 'scan params' --> 'decode audio feedback' and choose 'silent'... that is by far easier than option 2.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/darryncampbell/darryncampbell-cordova-plugin-intent/issues/110#issuecomment-674943305, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOPDBGUNVWML7ADRE6QBGRDSBFC2XANCNFSM4N7QVVYQ .

darryncampbell commented 4 years ago

It feels like support did not appreciate you were moving from a Windows Mobile / CE device to Android. According to the DataWedge help file for WM/CE (found as a chm file contained within https://www.zebra.com/us/en/support-downloads/software/utilities/datawedge-toolkit.html) that version of the product exported the configuration as an XML therefore it would not be possible to lift that and put it on an Android device. Please do join the DataWedge presentation tomorrow... it will not answer your immediate question but will help understanding DataWedge features overall.

I am glad to hear you are speaking with support. If I were in your position, I would explain to my customer that bad decode has been removed (with proof from Zebra support attesting to this fact) and ask what new behaviour is desired... I am not sure exactly what would trigger a bad decode to be honest, perhaps this was more of an issue with 1D laser scanners but that is just a guess..

kabom commented 2 years ago

Hey @darryncampbell , nice thread about the plugin. I have implemented this plugin, and works perfectly with the devices witch have DataWedge app , but now i'm trying to implement it , on the same application for NON zebra ( or honeywell ) applications.. and i can't even get any signal from the broadcast.... did u have any simple of implementation for NON zebra devices? Thanks

darryncampbell commented 2 years ago

@kabom can you please point me towards the documentation for the non-zebra device you are using? I haven't been able to use a Zebra competitor device in quite some years - the competitive analysis team keep them quite close to their chests(!)

kabom commented 2 years ago

Well, as in the examples above about the zebra Users, ( also HoneyWell users works too ) , i do create datawedge profile, where i'm pointing the application route ( same that i have writen in the category filter ) :
// filterActions: ['io.applicationName.ACTION' ], filterCategories: ['android.intent.category.DEFAULT'] //

now, at non zebra devices there is no wedge app where i can put that variables, and im not able to get anything from the device. dw1

now about the device i'm trying to implement : ( most of the devices i tryed to implement are the same .. UNKNOWN providers or something ) this is official documentation , but the model number on the device is T62 https://www.emdoorrugged.com/uploads/file/6-android-em-q66-handwriting-rugged-handheld.pdf

on this web u can see more info then on the pdf documentation :)) https://www.eng.mobilator.pl/wzmocniony-wytrzymaly-terminal-mobilny-emdoor-em-t62-v.0-produkt-90816.html

Thanks :-)

darryncampbell commented 2 years ago

According to those links you sent the EM-T62 is not a Honeywell device, it just uses the Honeywell scan engine. There will be a low level interface between the Honeywell scan engine and the Android device that you as an app developer won't have access to. The android device is responsible for presenting an interface to you as an application to acquire scans - does that application interface use Android Intents? That is an open question.