There appears to be no accessibility features for the Android emulator. Ideally one would be able to have their computer read the contents of the Android emulation screen to them. From what I've seen, the contents of the Android screen and the buttons that can be used to manipulate the emulation Android etc. are all invisible to a screen reader.
Does anyone know of a workaround for this?
I found what looks like a promising resource here. It's a Text-to-Speech library for Android developed by T. V. Raman of Google. I'm still looking for more information from the community though.
I'm up dating my answer with my experiences. I bought a refurbished first gen Nexus 7 to try and learn Android programming. Installing the Android SDK with the bundled Eclipse was completely accessible. I was also able to enable accessibility on my Nexus 7 with no sited help. Enabling developer settings on the Nexus was also fully accessible. I was able to create an Android project using Eclipse with no problems. I was unable to use the graphical layout editor to add Widgets to a layout, although I was able to edit the XML to create a button with no issues. It looks like layouts are doable, you will just have to reference the docs for proper XML a lot. I created a method to be called when the button was clicked with a for loop so I could test debugging. I debugged the application on my Nexus and set a breakpoint in the body of the for loop. I was able to use standard Eclipse functions to step by line once the breakpoint was hit and view variable values. So far Android accessibility is looking good for the standard Android SDK. I am planning on testing out Android Studio and will update my answer with the results.
A long thread on this can be found at
http://www.freelists.org/post/programmingblind/Is-Android-Programming-Accessible
What I've gathered from it is that accessibility can be enabled with little to no sighted help. When I tried enabling talkback it made the emulator unusably slow although this was over a year ago so maybe things have gotten better? I'm a blind programmer and know Eclipse is accessible with Jaws so he should be able to program with either an IDE or command line and a text editor. I haven't researched this but if the emulator is slow maybe another option would be to run an x86 build of Android in VMWare player? A screen reader written by google employees can be found at
http://google-opensource.blogspot.com/2009/10/talkback-open-source-screenreader-for.html
and one written by someone else can be found at
http://spielproject.info/
One option might be to do debugging on a real phone with accessibility turned on. Debugging works essentially the same (and you don't have to deal with the slowness of the emulator - I much prefer this method because it's so much faster).
It's surely a more expensive option if your friend doesn't already have an android phone.
I think the better question might be "why are the accessibility features missing from the android emulator"? Maybe text-to-speech is too slow on the emulator?
Related
Preface:
I'm working with small company that make its own devices with custom flavored Android OS (eBooks and one model of smartphone). I have the experience of browser, API and mobile apps (iOS | Android) automation.
Problem:
But today i've heard the idea from my manager. He offered me to find tool or just a way to automate Android OS testing, not just the apps. He said that if i will find a way to do that, i will save pretty much of time for company.
Of course i have a lack of knowlege about custom Android OS architecture (my job was only to make automation), but right now i'm stuck with the answer. The only tools that possibly could be used with more than just 1 app is Appium.
Please tell me if this even possible thing to automate testing of your own Android OS version?
Thanks in advance.
UPDATE:
So how i see it:
We are on the main screen of our smartphone OS.
There is a clock widget on the main screen.
Without physical contact and human involved, the system makes imitation of "long touch" on the clock widget
Small menu with a list of options appears.
So, after more research and comment of CommonsWare (thank you!) i have found the answer.
What i needed is testing system apps and cross app testing. Android Support Library have a tool for that - it's called UIAutomator. This one feels absolutely nice while being on home screen and around - clicking elements, finding them and simulating hardware buttons.
If you face this problem once upon a time - just use this thing.
I am building an Android app for my company, using Android Studio 1.5.1 . I've discovered that the app won't work on some Galaxy S5 phones.
These phones just show a white screen when the app runs.
This error happens on Galaxy S5 devices with Android version 5.1.1 But not on an Galaxy S5 Device running Android version 5.0
I'm focusing on the Android Version as a clue to solving this bug.
I can't actually get one of the devices so I've created several Virtual Devices. There are 6 Downloadable system images of Android 5.1.1 in Android Studio's Virtual Device Configuration wizard. I've installed all of them. none replicate this white screen error.
What else can I do to uncover this bug?
If it helps answer my question, my app relies heavily on server communication. The whole app is just one Webview with a few html & JS files.
The problem with emulators is that they are not reproducing actual device behaviour(especially, once many OEMs like Samsung tend to customise Android based on their needs), so I'm afraid the only options you have are:
Get Samsung Galaxy S5 with 5.1.1
Apart from obvious ideas "go to shop and buy", I can recommend you:
to take a look at Open Device Lab. It operates around the world and there's an arguably good chance to find the device you need there;
build a pool of alpha-beta users you can talk to and share new builds. Google Play has quite rich functionality in this area. Samsung S5 is quite common model, so it shouldn't be a problem to find people with it. If your product is "public", you can try to find beta-users on services like BetaBound or just among your social media network;
Use Analytics tools to collect more data from affected devices and act based on the information you get
There're dozens of different frameworks for accomplishing it. I can suggest Crittercism as a super powerful and comprehensive tool. In particular, I'd definitely log:
All handled exceptions
Add breadcrumbs (short string to capture app run-time information) to all Activity/Fragment lifecycle methods, to Application's methods (as white screen on start might mean some issues there), to all meaningful async tasks, etc.
If app gets into suspicion state - log it as a handled exception, so you can see the whole trail of breadcrumbs and track history of exceptions for the user. Unfortunately, you won't get trail of breadcrumbs, before something has been logged as an issue (crash or exception). There're frameworks, which log everything, like MixPanel, for example, but I honestly think that Crittercism suits much more here)
Crittercism will also catch & report all crashes happen in the app and
The Get Started Guide is here and it's pretty straightforward: http://docs.crittercism.com/android/android.html
Saying that, I'd suggest you to integrate some analytics anyway, as it'll help you in the future and to try to get affected phone in hands for test.
I guess the culprit is webview. Can you check the webview version on which the issue is reproducible.
To check the version you need to go to settings->Application Manager-> Downloaded Apps-> check "Android System Webview"version
We had a similar issue when the screen used to go blank and it used to happen only on particular version of webview. The issue was fixed by Google later.
The chromium webview layer is now updatable from Google Play.
For more details refer-http://developer.android.com/about/versions/lollipop.html#WebView
I assume you are building a hybrid app.
If the webview is the culprit, you could try crosswalk.
It adds Mb's to your app but it makes sure every device uses the same webview (latest chromium). Moreover rendering differences etc are also minimized.
if you are using cordova run: cordova plugin add cordova-plugin-crosswalk-webview and that's it.
If you implement this and the whitescreen problem is gone, you debugged it in a sherlock holmish deduction way...
The problem is not with emulator. It is with WebView in Android versions 5.1 onward.
Try
uninstalling the updates for "Android system webview" app (go to
settings and look for it under "downloaded") it works just fine!
Source - similar question
I'm currently developing an application for Android, using ADT and a tablet plugged in my computer in USB debug mode. Whenever I change my code I have to "commit", that is re-running the app, so I can see the changes I made. Can be a bit of a bummer. Is there a way to not have to do this? Something like "code-pushing" or similar. After all, this is in debug mode.
Reason I ask this is because I recall watching that documentary about Minecraft, and seeing Notch using debug mode in eclipse and making changes to the game instantly without ever closing or reloading the game.
For Android Java, you could use the layout designer, thought it's probably not what you're looking for (I thought I'd have to mention it). If you're looking for an instant preview, you have to be willing to change your current development environment and language.
Currently, Unity and/or Chaos Project can give you pretty good previews. That's probably what you saw for MineCraft.
There is also HTML/Phone Gap/Cordova that can be previewed on Node.js (either on the browser, or on a Node.js instance on the phone itself).
And there is Android App Inventor, which gives you an awesome real-time preview, but which unfortunately was written in Scheme/LISP, so it can not easily be extended using other languages.
If you're just looking to speed up your save and compile cycle in Java, I'd recommend you switch to Android Studio (instead of Eclipse ADT), and only download updates from Android Studio's Stable Channel. Once properly set up, Android Studio will save you time (however, it still won't give you anything like a real-time preview, but I still highly recommend that IDE).
I have about had it with Eclipses emulator and its bugs/lack of power.
are there any emulators you guys suggest?
I would prefer one I could install on my PC (In a VM or on a USB stick or something) on a separate partition or whatever needs to happen.
I would prefer one that can go online but really, anything but the default I would love.
I have also tried Blue Stacks, I don't really like it.
You asked a lot of questions, and the answer is complicated based on your specific needs.
If you have an Intel Processor (and don't play to use Google services - like location, or GCM) - the HAXM emulator is great. It is included in the standard SDK, and works well.
There are many ways to optimize the standard emulator, so don't necessarily dismiss it. There are a variety of ways to configure it to be more powerful. It may not be perfect, but it works well (if you take the time to learn how to set it up optimally - most people do not).
Another alternative is Genymotion. This is a 3rd party, and they basically have optimized the emulator experience already, and done a lot of the dirty work for you. They also provide some of their own emulator management tools. I used it in early days, and found it buggy, but it is being constantly updated (recently updated, to remove the ability to use Play Services, like GMail, or Play Market - I am sure Google forced this, and is a bummer). Overall, this is a good tool, and probably a good suggestion.
Lastly, a lot of people use a physical device for development, which is generally pretty good. It supports Google, and Play services already, performs like a real device, and interfaces with the SDK tools well.
Every Android emulator will be able to connect to the Internet, so that is not a differentiator.
You can do what you want, but the documentations specifically states that you shouldn't try to run an emulator from Network attached storage (I would guess USB would not work well). You could create a separate partition, won't make a difference for any of these choices.
Bottom line, there are lots of options, learn a bit about the standard tools before abandoning them. They work well (if you learn how to use them properly).
You could consider moving over to android studio. It's based around the intellij Idea IDE and has a fantastic emulator compared to eclipse. It emulates in real time in the xml editor which saves a lot of time running the program.
Alternatively you could buy a cheap android phone over ebay or something similar and use it as an emulator. This is what I tend to do as I prefer to see it working on a multitude of devices.
More or less as it says on the tin.
Before I even contemplate downloading the SDK, I was wondering if there was any way of testing Android apps that I'd write without an Android phone available to me? I'm unsure as to whether or not the tools that come with the SDK come with an emulator like VS does for Windows Mobile.
Sorry if this is a stupid question, but maybe I'm searching for the wrong thing.
Edit I don't suppose there's anything that'll let me write widgets on/for an emulated version of the interface HTC use on the Hero/G2 either is there? Not that it would matter that much.
There's an emulator available as part of the SDK.
http://developer.android.com/guide/developing/tools/emulator.html
I'd add that the emulator is really quite comprehensive. Things like camera previews don't actually display camera data, but they put block animations in their place. All in all it's one of the best mobile emulators I've seen to date. Probably better even than gasp the iPhone simulator.
As said above there's an emulator available,however with larger apps it gets fairly tedious to use the emulator.Its fine for learning the ins and outs but id suggest investing in an android phone once you've got a good grasp of the sdk,it really does make a difference!.