We are developing a new App for internal use that will rely on a RW420 Zebra printer for POS printing. I have been looking for documentation on the issue and I still have three questions I have not been able to resolve:
a) Pricing: Is there any amount to pay for using the SDK on a commercial app?. We are developing it on behalf of our final client. I have been able to download the SDK from their page at no cost but still have concerns over it.
b) ICS support: It seems the SDK has not been evolved since 2.1/2.2 Android releases. Will this be an issue?. Currently it is possible to use the Zebra App under ICS, but don't want to go deeper on programming just to see all the efforts have been futile.
c) Do I really need the SDK or is it possible to use an intent (found nothing about it)?
If you have another similar printer suggestion to substitute the Zebra, I will be delighted to know about it.
No. [1] AFAIK no, but contact them if you want to be super sure.
No, ICS should be completely backwards-compatible with well programmed Android 2.1/2.2 applications and libraries.
In order for an Intent to work, the user would already have to have some ZebraLink Android application installed on their device in order for that to process the intent. There is an app "Zebra Utilities" but it does not have an Intent you can use to print. [2] AFAIK there is no such application, so no.
Sources: [1] & [2] see the comments by OTisler (Zebra employee).
Related
I intend to port a Qt desktop application to Android. It uses QSerialPort to communicate with an external device (which has a built-in CP210x)
The application, although written purely in Qt and C++, runs fine on Android, but it doesn't see the device. The CP210x official driver download page recommends to compile the kernel on Android from source, which is not feasible to expect from the average customer. Other recommendations I found online recommend jailbraking the phone, which also isn't something we could expect end users to do.
There are scant few questions in this topic on the Qt forums, most saying that QSerialPort's Android support is quite limited. However, these topics are often at least 6-7 years old.
An Android developer forum/wiki/tutorial? recommends to use "Android Things", whatever it is. I couldn't find any apps fitting that description.
I know that it's physically possible to use serial-usb on an non-jailbroken Android, as I tried out a serial console app and it worked, I could successfully exchange data with my device.
Does this mean that the only was is to develop my own wrapper in Java, and use JNIEXPORT? That would break the easy multi-platform compilation I used before (just selecting a different kit from Qt Creator) Are there any simpler ways to accomplish this? Is USB OTG usage so low that no one else thought to implement anything in this regard?
QSerialPort has only a non-official partial Android Support (see https://wiki.qt.io/Qt_Serial_Port).
(... Use on own risk, only for rooted devices, in which is it possible to get/set a permissions to the /dev/ttyXYZ nodes)
You can use JNI to get a FileDescriptor with permission and then use the libusb library in C++ to communicate with device.
But yes, it would break the easy multi-platform compilation.
I am trying to understand at a little bit lower level how Android Instant Applications work, as well as analyse a bit the security aspect. I know you create an app, it has its modules and activities, and you need to specify an URL entry-point for each feature module. Now, I have my application, I have my link, I browse to it. Two questions here:
1) How does Android, my browser, DNS, whatever parses that link, know that it's not a normally browsable internet link, but that it's actually an instant app and and should open it like an instant app using the android framework, download base and feature modules, isntant-compilation, etc. ?
2) What does it actually do after it understands it's an instant app? What calls are made? WHERE exactly is the application contained? We start from the browser we use to search and find that link, after that? Is it contained in that browser's sandbox? Does it create a new container for that app? From a security perspective, this information would be quite important and interesting.
How can I gather more info about all this? Are there any tools that allow me to see into these load procedures? Any link to some extra documentation or knowledge of how this particular aspect of android works?
I suspect there won't be much public info because even though they were introduced in the end of 2016, Instant Apps is still a very new and explored feature, but that's exactly what I'm working on. If there is anything that can allow me to see what's going on, tools, debuggers, stuff I don't even know it exists, please let me know.
Do they share the code base and version number?
Does Google release the same piece of code for both and just use different flags for mobile phones and Android Things?
This may be a strange question, as I am particularly interested in Android Application Framework.
Do they share the code base and version number?
From an Android application developers's view point there is not much difference between Android OS and Android Things. I.e. you can successfully deploy an Android app developed for Android (OS version 7+) on a platform running Android Things.
Does Google release the same piece of code for both and just use different flags for mobile phones and Android Things?
No "flags" at all. It's rather a matter of adding new system (C/C++/Java) services specific to the supported platforms with its underlying hardware or removing the old ones, needed for mobile devices and not related to embedded systems. Actually Android Things is pretty much an inheritor of Brillo.
As a quick look consider the following overview of Android Things OS to see how it differs from Android.
With regards to the Android Application Framework, you can expect the vast majority of APIs to be the same on Android phones and Android Things. Specifically, this page details the APIs that are not available:
CalendarContract
ContactsContract
DocumentsContract
DownloadManager
MediaStore
Settings
Telephony
UserDictionary
VoicemailContract
Additionally, a few Google Play Service APIs are not available.
In terms of whether Google releases "the same piece of code for both" the answer is a bit complicated. Android's framework is a combination of a lot of files, some of which only make sense for specific form factors. Different build configurations state what files to include, which to not include, and how exactly to build the correct system image.
I'm trying to integrate Nmap and ettercap, which are unix applications, into an android app.
The problem is I don't even know how to start to do this.
If someone can tell me how can I integrate those 2 apps into my app or how can I integrate an unix app in general into my android and how should I continue from there, I would really appreciate the help.
Best regards,
Basically, you would have to compile both applications for androids arm processor (and hope that the hardware is supported).
As far as I know, there are at least implementations of tcpdump for android but paket capturing and other kinds of low level network access is something that might require root priviliges on your device.
Maybe you should also have a look at android developer forums - as there seem to be people who successfully compiled these applications for android:
http://forum.xda-developers.com/showthread.php?t=887412
Are there any default apps on Android? Especially in 4.2?
iOS 6 has Passbook, built-in Facebook/Twitter support, allowing for greater integration into these services.
Is there something similar on Android that can reliably be accessed across all devices running the latest Android OS version?
I know that there are Android apps that can read the Passbook file, but they're not Google products the way Passbook is an iOS product. Similarly, I know that there are Facebook and Twitter Android apps, but they may or may not be installed and may or may not respond to an Intent that's possibly structured differently between versions of those apps. Am I just doomed to deal with this fragmented space, building for the past and hoping it won't break in the future?
Yes, all Android developers are doomed to this fate. Most Android devices come with things like GMail, Google Calendar, and so on, but Android is fully open, which means not all devices have to include these (and in fact, have gotten in trouble for including them in the past).
Here are some things to keep in mind, though (in 99.999%+ of cases):
The Google Play store will always be installed on the device (assuming that's where you publish your app).
Either the browser or some form of it (Chrome, Dolphin, etc.) will be installed on the device.
And some other tips for developing for compatibility:
I would suggest you read up on intent filters; basically, when someone makes an app like, say, Twitter, they register it for a "share" intent filter. That way, when some app (maybe yours?) requests the user to "share" something, Twitter is shown as an option to share with.
I hate to make a bullet point entirely out of links, but you should read up on Receiving Content from Other Apps, Sending Content to Other Apps, and Sending the User to Another App. These are all key ideas in core Android that will apply to your situation.
Those aside, I have one final note: Assume nothing. Assume everything will break. Whenever you call an intent, you should be wary and catch any issues (such as ActivityNotFoundExceptions).