Wednesday, January 1, 2014

EKH Tutorial 7 - Enabling Voice Input

With version 6.4 of External Keyboard Helper a new keycode has been added that is called Voice Input. It can be mapped to a key and then that key can be used to start voice input. Exactly how this works out may vary between different devices and Android versions but here I will describe how it works on my Nexus 5 that runs Android 4.4.2.

First of all you need to assign a key to trigger the voice input. Since version 6.5 of the app you find the configuration for this in Advanced Settings > Other settings. In this example I've mapped it to Scancode 57 which is Space and I've checked the checkbox that says it also requires Alt to be held down.


As an alternative way to configure this there is also a keycode that can be used to trigger voice input (this is the only way to map voice input in if you are still on version 6.4 of the app). The example below maps scancode 88 to the keycode that triggers voice input. Scancode 88 is usually F12.

 
Voice Input can be accessed in two ways. The first way is with Google voice typing enabled.


In this mode you must disable the Physical keyboard switch or voice input will not start.


To be extra clear, you need to turn the above switch to OFF.

In this mode pushing our mapped button (Alt+Space in my case) will automatically switch to the Google voice typing input method and it will looks something like this.

  

As you speak the text will be continuously added to the input field.

 
The other mode is when "Google voice input" is disabled.


In this mode it does not matter if Physical keyboard is ON or OFF and when we press our mapped key it will start voice input in a less integrated way.


Once you spoken it will present you with a list of interpretations.


Once you make your choice it will pass that line of text into the active input field.


This is the two ways I got it working on my Nexus 5, it may look and work different on your device so you may need to experiment a bit to get it working.

On one device (ZTE Blade III) that was running an unofficial CyanogenMod version I needed to install this to get it working: https://play.google.com/store/apps/details?id=com.google.android.voicesearch

So basically this tutorial doesn't necessarily show the exact solution for your setup but hopefully it will provide enough help to get you going.

Tuesday, July 16, 2013

When size matters

So you have a 10-incher and she still complains about it being tiny.

Don't worry, she isn't talking about your Android tablet, she's talking about the Analog Clock widget and now the solution is just a click away.

It's time to stop being ashamed and enlarge that Clock of yours because guess what? Size matters...


Get it here: https://play.google.com/store/apps/details?id=com.apedroid.clockwidget

Friday, May 31, 2013

Watch out for flying pigs


I wouldn't be surprised if pigs started to fly soon, because guess what, Spotify no longer looks like this on my tablets...


...and Google Play can no longer be unsecured by clearing it's data:


The Samsung Galaxy S4 that I first pre-ordered and then canceled after trying a Nexus 4 because I realized how much I missed using Android the way it was supposed to look without any Touchwiz, Sense or other manufacturer added crap^H^H^H^Hmodifications will soon also be sold with an non-modifed Android.


And HTC follows with their flag ship model HTC One making me actually consider a HTC as my next phone (No offense Samsung but having had an S3 recently before switching to a Nexus 4 makes it feel a bit boring to get a new Samsung that looks almost the same as the last one I had).


Now let's hope more manufacturers follow Samsungs and HTCs example...

... and if it isn't to much to ask for, a flying pig? Or at least an Android 4.3 release soon?

Monday, May 20, 2013

How to check if an app uses binary translation

Binary translation is used by Intel based Android devices in order to run apps that are uses native ARM code. This is good for compatibility but bad for performance as native x86 code in the app would be a better solution.

So how can one tell if an app uses binary translation instead of native x86 code? Well, first you must have an Intel based Android device like the Asus Fonepad or this would be rather pointless. Second you need to have a way to read the android logs. I use the command logcat but there are also apps that can be used for this.

Luckily the Asus Fonepad includes a busybox binary that has the "grep" command built in. That saves a lot of time and I'm using an adb shell connection and this command "logcat | busybox grep houdini".

shell@android:/ $ logcat | busybox grep houdini
logcat | busybox grep houdini
D/houdini (11555): [11555] Loading library(version: 3.1.3.43168 RELEASE)... successfully.


Here we can see that an app with PID 11555 has activated libhoudini.so which is the lib that does the ARM to x86 binary translation.

So let's find out what app is using PID 11555 (once again I use grep to save some time).

shell@android:/ $ ps | busybox grep 11555
ps | busybox grep 11555
u0_a117   11555 128   1034944 45356 ffffffff 00000000 S com.spotify.mobile.android.service


It turns out Spotify uses native code but only includes ARM code.