I am trying to get an existing RhoMobile APK running on a TC52, Android 8.1.
The App is running fine on TC51, Android 6. On the TC52, when i start the app I get a toast message
DS8178 Bluetooth Scanner is not connected, therefor BTPairing Utility will be started.
The problem is that - ignoring the BTPairing Utility App (i also tried to disable it) - i cant use the build in scanner in my rho mobile app. When I try to use it I see the following message in the log
"The decodeSound barcode property can only be set once the scanner has finished initialising"
Looking at the underlying code, it looks like that the scanner has not initialised, probably due to not be able to pair the bluetooth scanner. But there is now such scanner and there never will be. Anybody know how to disable this behaviour?
Edit 1:
Here is my javascript code for enabling the scanner
Rho.Barcode.enable({ allDecoders: true }, this.onScan);
But, I think it happens before that javascript is accessed; the app is hosted on web server; even if i disable WIFI and starting the app, the toast is displayed. It seems like that RhoMobile is trying to setup all known scanners.
Edit 2:
When I enumerate all scanners, i get those in this order
Scanners found: '[
"Camera Scanner",
"2D Barcode Imager",
"Bluetooth Scanner",
"RS6000 Bluetooth Scanner",
"DS3678 Bluetooth Scanner",
"LI3678 Bluetooth Scanner",
"DS2278 Bluetooth Scanner",
"DS8178 Bluetooth Scanner"]'
Default scanner: '2D Barcode Imager'
Default scanner is determined by
Rho.Barcode.getProperty("friendlyName");
Edit 3:
Ok, as suggested in the comments, using the actual instance returned from the enumeration works; triggering scanner buttons works well.
What remains is the toast that asks to connect the DS8178 Bluetooth Scanner; is there a way to disable scanners from config.xml?
This error:
DS8178 Bluetooth Scanner is not connected, therefor BTPairing Utility will be started.
Is not coming from RhoMobile, it is being generated from the low level scanning framework. I checked on a more up to date device and I'm glad to say they fixed the spelling error. It is caused when something (either EMDK or DataWedge) tries to enable the DS8178 scanner. The DS scanner support was only added in a recent version of the mobile computing scanner framework so that probably explains the difference in behaviour you are seeing between TC51 and TC52.
RhoMobile (on Zebra Android devices) wraps the EMDK and exposes each supported scanner as a separate Barcode object and you can see all of these in the array returned from enumerate. What is strange is that, per your second edit, the default scanner is '2D Barcode Imager'.
There are a few options / possibilities:
There is a bug in the RhoMobile framework and for some reason the DS8178 scanner is being enabled. I checked https://github.com/rhomobile/rhodes/tree/master/lib/commonAPI/barcode/ext/platform/android/src/com/rho/barcode and cannot see any such bug. Rho is open source but supported by Tau-Technologies if you wanted to explore that route.
Something else on your device is enabling the DS8178 scanner, e.g. a DataWedge profile or other app using the EMDK. You could disable DataWedge (from the DataWedge app settings) and reboot your device to test this.
There is an issue with the TC52. I would say this is the least likely as I have never heard of a similar issue
There is no way to disable any of the scanners via XML
Related
I am trying to get zebra data wedge to enable /disable sample ( https://github.com/darryncampbell/DataWedge-Quick-Suspend-Scanner ) working on zebra TC 75 scanner handset having android version 5.1.1
data wedge version on Zebra TC75 handset is 6.2.24 ( original data wedge version 5.0.17 upgraded to version 6.2.24 by using check system updates). create profile API does not work, so I manually created a profile named "DW Quick Suspend Profile" and enabled this profile. the app is added to associated apps, the barcode input option is checked intent output option is checked. Intent action is specified as com. Darren Campbell.datawedgequicksuspendscanner.action and intent category is specified as android.intent.category.DEFAULT. Broadcast intent is selected for the intended delivery spinner.
but zebra TC75 does send status updates or enable/disable data wedge does not work.
whether anyone got data wedge to enable/disable API or sample code at https://github.com/darryncampbell/DataWedge-Quick-Suspend-Scanner working on Zebra TC 75? if yes what configuration needs to be changed
App author here, the reason SUSPEND_PLUGIN and RESUME_PLUGIN are not working for you is that they are not supported in DataWedge 6.2. DW 6.2 documentation is here: https://techdocs.zebra.com/datawedge/6-2/guide/api/#scannerinputplugin and only shows ENABLE_PLUGIN and DISABLE_PLUGIN as supported.
I am making an Android app to receive data from Arduino(NRF24L01).
Arduino(NRF24L01) can send data only with Bluetooth device name.
So I get the value by putting the analog value in the BLEname.
Like this YouTube video.
https://youtu.be/F9yMTdcd33w?t=240
However, the Android application does not come back with the information of a device once it is already connected.
ex)
BLE Device name : "A=i" //(i=analog.value;)
first BLE SCAN -> find -> BLE Device name : "A=12"
I change i,(i=14;)
Second BLE SCAN -> find -> BLE Device name : "A=12"
why????????? i want "A=14"!!
Therefore, I would like to create an application that will continue to scan and retrieve device name information.
Is there any example I can refer to?
P.S I am sorry that I have not translated the translator and the context is not smooth.
You can refer this example for BLE scanning and connection or you can use customize as you want.
BleConnect
I am fetching data from server with barcode reading using RS507 ring scanner trigger with Bluetooth pairing with TC55 Kitkat device. I found some problems when I tried to use onKeyDown and onKeyUp callback methods to read barcode. So I used onStatus callback method to read barcode i.e. scanner.read(). I am trying to stop scanner when my Async task operation is in progress, because it causes multiple request calls when I press scanner trigger button multiple times. I tried to use scanner.cancelRead(), but it doesn't helpful. The same case is working fine on TC55 Jellybean device, but only difference in Jellybean case is its not supporting Bluetooth pairing utility with RS507 ring scanner. Can anybody please suggest any solution on this.
You should be receiving barcode data through the DataListener interface (onData), not the status interface (onStatus): http://techdocs.zebra.com/emdk-for-android/6-3/api/reference/com/symbol/emdk/barcode/Scanner.DataListener.html. Also, please make sure your RS507 is in SSI mode (details are in the integration guide), you should not need to use onKeyDown or onKeyUp unless the device is operating in HID mode but EMDK requires SSI mode.
CancelRead() will only be useful if you have previously submitted a read, http://techdocs.zebra.com/emdk-for-android/6-3/api/reference/com/symbol/emdk/barcode/Scanner.html#read()
We are using DiscoveredPrinterBluetooth to keep discovered printer, ZebraPrinterConnection and ZebraPrinter to send data to printer. Everything is working ok on older android versions, but on let say 4.0 is not working, finds printer but keeps showing insert pin screen. Get error in log:
V/BluetoothSocket.cpp(5371): ...connect(96, RFCOMM) = 111 (errno 111)
As I see there is problem with newer versions, looking at
Bluetooth pairing without user confirmation
but I don't know how to solve it in my case? Any ideas? Thanks
The 2.0 version of the Zebra SDK has an implementation of insecure bluetooth connections.
Check out BluetoothConnectionInsecure in the new SDK. This could be used instead of BluetoothConnection if you want insecure BT connections...
Currently Iam using backport.android.bluetooth2.jar file for bluetooth programming with Android 1.5.Whenever device pairing fails it populates alert dialog for passKey and if i give passkey then in my log iam getting below error
07-21 12:25:52.419: WARN/BluetoothDeviceService(948): setPin(00:0E:6D:BA:89:F3) called but no native data available, ignoring. Maybe the PasskeyAgent Request was cancelled by the remote device or by bluez.
For successfully pair my BT device I always rebooting my tablet and manually pair the device with Settings options.So at last i realised to give this passKey programmatically but i haven't found any method for this.But in google opensource i found one method that is commented with #hide setPassKey(String Address,int passKey) in BluetoothDevice.java of backport.android.bluetooth2.jar .This will n't appear in my jar file.If any way is there for pairing the unbounded device please give reply ASAP?
In the AndroidBluetoothAPI_0.3.jar file following methods are available i,e: pair(address) and setPin() for setting the pin programmatically and connecting the BT device.For finding the signal strength method is available in this api.Below is the code project link
http://code.google.com/p/android-bluetooth/downloads/detail?name=AndroidBluetoothAPI_0.3.jar&can=2&q=