Showing posts with label android. Show all posts
Showing posts with label android. Show all posts

Sunday, September 14, 2014

ZombieBird goes Android Wear

So I got an LG G Watch earlier this week and yesterday I decided to try to get my game ZombieBird - The Flapping Dead running on it. It turned out to be easier than I expected. After removing the the ads and facebook support it pretty much ran out-of-the-box. After that all I needed to do was some adjusting for the 1:1 screen dimensions and remove some unneeded buttons.


Today I packaged the Android Wear version with the phone version of the app so if it is installed on a phone that is paired with a Wear device then the Wear device will get the Wear version of the app automatically. I'm not sure how I feel about that any Android app you install on your phone can contain Wear apps that are installed on your Wear device (no questions asked) automatically.

Friday, July 25, 2014

Never settle...


Finally got an invite for the 64Gb version of the Oneplus One.

Now I'm just waiting for the new toy to arrive.

Thursday, April 3, 2014

Thou shalt have no other mobile platforms before me

Apple isn't very welcoming to Android developers that tries to go cross-platform.


It seems they believe that my company logo (that I've used for a couple of years now) isn't healthy for their devoted users.


So I had to replace my logo with something less Android-friendly (for the iOS version) and upload a new binary for ZombieBird 1.1.

I suppose I could point out to them that "mention the name of any other mobile platform" and having a image that is similar to the Android icon isn't really the the same thing. Probably not worth the trouble.

I just find this a bit humorous and silly so I figured that at least I could post it here to warn other Android developers that plan to go cross-platform in the future.

Friday, March 14, 2014

ZombieBird got some new friends


Meet the new friends of ZombieBird in version 0.8 of ZombieBird. Reach a highscore of 25 to unlock FrankenBird and a highscore of 50 to unlock DevilBird.

Note that the iPhone/iPad version is not up to date with the web and the Android version due to the extremely long review times for iOS apps.

Friday, March 7, 2014

ZombieBird goes social


ZombieBird highscores can now be shared using the build in sharing function in Android with compatible apps like Instagram, Google+, Twitter and many more.


ZombieBird can be downloaded for free from Google Play Store or played in an HTML5 compatible web browser on zombie-bird.com. Note that sharing with the Facebook app is currently not working because it cannot handle a "content://" URI and I want to avoid requesting permission to read and write from external storage just to support their broken implementation.

Btw, my best score so far is 47.

Sunday, February 23, 2014

The flying dead


So I was looking for a crossplatform library to use for game developing and I found libGDX which looked promising. While looking for examples I found a great tutorial by kilobolt. I've been following the tutorial but doing some tweaks of my own and it has been great fun and educating. I strongly recommend this tutorial for anyone who wants to get started with libGDX.

Today I decided to publish what I've done so far on Google Play Store.


Please realize that this is not the finished product and a lot can happen before it reaches version 1.0.

I also do not intend to use my newly acquired knowledge to make Flappy Bird clones, it's just a way to learn libGDX and make something fun at the same time.

I made it a bit harder than the example in the tutorial and now my kids complains that it's even harder than Flappy Bird so I might tweak the gameplay a bit in the next version.

Get it from Google Play Store

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.

Wednesday, May 15, 2013

Binary translation vs native x86 code

I recently bought an Asus Fonepad partly because I wanted to test an Intel based Android device. It turned out it's a really nice device and surprisingly almost everything I tried on it worked well. I didn't expect this since many apps contains native code and a lot of them only comes with native code compiled for ARM based devices.

After some research I found out that Intel based Android devices comes with a library (libhoudini.so) that uses binary translation to translate native ARM code into native x86 code. This explains the very good app compatibility but it also made me wonder how much performance we give up for compatibility.

As I noticed that the Epic Citadel app performed almost identical on my Nexus 4 and the Fonepad I had a look into the apk and noticed it comes with native code for both ARM and x86 devices. That gave me an idea and I created two versions of the apk. On version only contains the native ARM code and the other only the native x86 code. That allowed me to do a comparison and here's the results.

The tests was made on an Asus Fonepad with firmware version 3.1.17 and version 1.0.5 of the Epic Citadel app.

First out is the version with only native ARM code:


Then another run with the version with only native x86 code:


As you can see the version with native x86 code scored over 40% better compared to the version that relied on binary translation.

So while the binary translation is a good thing for compatibility there is also a risk that developers takes the easy route and decides not to include native x86 code for their apps.

Sunday, April 14, 2013

External Keyboard Helper Pro 5.9 released

What's new in version 5.9
  • Fixed an error in the Hungarian layout
  • Fixed ALT+KEY problem with Emacs for Dvorak users. ALT+KEY was using original layout if not remapped.
  • Fixed problem with remapped Ctrl key for Emacs users.
  • Updated translations.
    Get it now from Google Play

    Sunday, February 17, 2013

    Wednesday, February 13, 2013

    External Keyboard Helper Pro reviews in 8 languages

    With External Keyboard Helper Pro being the App of the week over at AndroidPIT.com they've also published a review of the app that is available in 8 different languages.

    Here's direct links to the reviews:

    Tuesday, February 12, 2013

    Manually updating your Nexus 7 (wifi only) to Android 4.2.2

    I've also manually updated a Nexus 7 (wifi only) using the same method as I used on my Nexus 10.


    This is totally done at your own risk but it worked fine for me.

    Since this is an update that patches the already installed system I strongly advice against trying this on anything but an non-rooted JOD40D device. 

    Just follow the same steps as in the Nexus 10 guide but use this OTA file instead.

    Manually updating your Nexus 10 to Android 4.2.2

    I just manually updated my non-rooted, stock Nexus 10 from Android 4.2.1 (JOD40D) to Android 4.2.2 (JDQ39).


    This is totally done at your own risk but here is what worked for me.

    Since this is an update that patches the already installed system I strongly advice against trying this on anything but an non-rooted JOD40D device.

    • Download the JOD40D to JDQ39 update.
    • Make sure you have ADB up and running. I used this guide.
    • Turn off the Nexus 10.
    • Start the Nexus 10 while holding down both volume up and down.
    • You should get an Android lying on it's back and some device information.

    • Press volume down until the left vertical text says "RECOVERY MODE"
    • Press power to reboot into recovery mode. 
    • You'll now get a smaller Android robot, still on it's back, with a red triangle.

    • Hold power and press once on volume up to enter the recovery menu.

    • Press volume down to select "apply update from ADB"
    • Press power once.
    • It will now tell you to type "adb sideload <filename>" so connect the Nexus 10 to your computer with the USB cable if you have not already done so.
    • On the computer type "adb sideload eaef14432ff5.signed-mantaray-JDQ39-from-JOP40D.eaef1443.zip" and watch the magic happen.

    Friday, January 18, 2013

    EKH Tutorial 6 - Workaround for Samsung devices

    The is the sixth tutorial for External Keyboard Helper. You'll find a all the tutorials here.

    This tutorials is only interesting for Samsung users. I'm going to use my Galaxy S3 as an example but the problem is present with most (if not all) Samsung firmwares.

    The problem looks like this:


    Just a little information popup, how could that be a problem? Well, once you press OK on the dialog it will change your Input Method to "Samsung Keyboard" so it's just not informing you what it thinks you should use, it also makes you use it whether you want it or not.

    On my Galaxy S3 this pops up whenever I connect a Bluetooth keyboard but only if "Samsung Keyboard" is not the currently selected Input Method. So let's say I use SlideIT as my preferred Input Method:

     
    Now let's say I connect my Bluetooth keyboard and since I'm using External Keyboard Helper it will show the Input Method selector. However first Samsung will show their dialog and then the Input Method selector puts itself on top of it.

    So I first select External Keyboard Helper and then I get back to the Samsung dialog and press OK. What happens now is that the Input Method will be switched to "Samsung Keyboard" which is not what I wanted. Not good!

    I do not think there is a way to prevent the Samsung dialog from starting unless you are rooted and willing to mess around on your system partition. Still there is a workaround, it's not perfect but it's better than nothing.

    What we need to do is to increase the Detection delay in the Advanced settings for External Keyboard Helper. In this example I set it to 4 seconds but most people will probably settle for 2 seconds after getting used to the procedure.


    Now we bought us 4 seconds where we can press OK in the Samsung dialog before External Keyboard Helper brings up the Input Method selector. What we do is that we let Samsung first set the Input Method to their own one and then we switch it back to External Keyboard Helper.


    So by setting up a delay we can make sure that Samsungs switch takes place before our switch and not the other way around.

    Monday, November 19, 2012

    Nexus 10 - Unboxing and first look

    Santa was early this year and today my Nexus 10 arrived.


    Carefully opening the box reveals the Nexus 10 complete with protective plastic.


    Under the Nexus 10 we find the charger, a UK plug for the charger, a micro USB cable, a quickstart guide and some warranty information. The majority of the space in the box is occupied by air.


    After removing the unnecessary parts (protective plastic, quickstart guide and warranty information) this is what remains.


    Actually the UK plug is useless for me and Handtec had promised to include an international adapter but they had forgot to include it. However they quickly responded to my mail and promised the send me one. Luckily I have a lot of micro USB chargers so I'll manage for now.

    Side by side comparison with my Samsung Galaxy Tab 8.9.


    Thickness seems pretty much the same but the Nexus 10 is thinner at the shorter edges while the Galaxy Tab 8.9 has the same thickness on all the sides (Nexus 10 to the left).


     The Galaxys Tab on top of the Nexus 10.


    After a short time of using the Nexus 10 it got a 60Mb OTA upgrade. Not sure what changed but I do not think it had the lock screen widgets before the upgrade (but I could be wrong).

    Compared to my Tegra2 based tablets it's really fast but someone who compared the Nexus 10 with a Galaxy Note 10.1 felt that the Note 10.1 was slightly more responsive. Considering the massive amount of pixels the Nexus 10 has to push I wouldn't be surprised if it isn't the fastest tablet in all benchmarks. High resolutions usually has a price. However so far I feel it is "fast enough" and the screen is really good. Although I still consider the screen on my Galaxy Tab 8.9 to be very good with it's 1280x800 pixels you can easily see the difference when you compare it to the Nexus 10.

    I have not had that much time to play with it yet but it runs Netflix perfectly and I also tried hooking it up to my 42inch plasma using a micro HDMI cable it it worked as intended.

    The only thing that I'd like to chamge is the placement of the virtual buttons that in Android 4.2 is centered and not left aligned as they are on tablets with Android 3.0 to 4.1. I'm used to reaching the buttons with the left thumb even in landscape mode and with this new centered buttons the joints in my left thumb are already starting to hurt.

    Tuesday, November 13, 2012

    EKH Tutorial 5 - Application shortcuts and Text strings

    The is the fifth tutorial for External Keyboard Helper. You'll find a all the tutorials here.

    A nice feature in External Keyboard Helper is the possibility to add Application shortcuts and Text strings to keys. In this example I will configure Alt+G to start Gmail and Alt+M to start Maps. I will also make it possible to quickly write http://www.apedroid.com by just pressing Alt+A.

    I will not go into details on how to create a new custom layout, go to the second tutorial for that.

    First I enter the Advanced settings and choose to setup some Application shortcuts.


    Right now all the slots A0 to AF are empty.


    I select the first slot, A0, and a list of all my installed and system apps shows up. From that list I select Gmail.



    I repeat the procedure for A1 and select Maps and when I'm done the list looks like this.


    Now I go back into Advanced settings and choose to configure Text strings.


    Also here we find 16 empty slots, T0 to TF.


    In the first slot, T0, I enter http://www.apedroid.com.



    Do not forget to scroll down to the bottom of the list and press Save.



    Now all that is left is to map them to keys so i choose to customize my layout. If I would already have mappings for G, M and A then I would need to select those from the list but since I'm using the English(US) layout in this example there are no current mappings to those keys so choose to add a new mapping.

    First out is G which has scancode 34 and in the AltGr field I enter a0 for Application shortcut 0. The app will automatically change a0 into unicode 0x2410 so I could, if I wanted, have entered 0x2410 directly. However entering a0 (or A0) is much easier.


    I repeat the procedure for M (scancode 50) and enter a1 in the AltGr field. For mapping the Text string the procedure is the same and I enter t0 in the AltGr field for A (scancode 30).


    Back in the list of remapped keys I can see the new mappings.


    Checking the mappings confirms that a0, a1 and t0 are translated into 0x2410, 0x2411 and 0x2400.


    This is the end of tutorial 5 that should give you a pretty good idea on how to setup Application shortcuts and Text strings for yourself.