Planet Android Headlines

↑ Grab this Headline Animator

May 26, 2016

[UPDATE: Game Released] 505 Games reveals that Brothers – A Tale of Two Son will be arriving onto Android soon

505 Games today unveiled their entire E3 2015 line-up and while a lot of the games on that list are for non-mobile platforms, or are mobile games but ones that have been out for a bit now, there was one little gem hidden amongst everything. That gem is the critically acclaimed Brothers – A Tale of Two Son and the fact that it will be arriving onto Android soon.

UPDATE: Wednesday, May 25th - 8:03 PM, PST: It has almost been a year since we reported on 505 Games fantastic and award-winning game Brothers - A Tale of Two Sons. This amazing adventure game has made its way to many different platforms, and now you can play it on your Android device. I am not quite sure when it showed up in the Play Store, but since the download count was only showing two when I found it, it probably is pretty recent. Either way, this is a game you must download. Now is the perfect time too because the game is on sale for a limited time at $2.99 with no in-app purchases. We don't know what the regular price will be, but $2.99 is a steal for a game of this caliber. If you are just as eager to play this as we are, you can find the link to the game at the bottom of this article.

Originally released onto consoles, Brothers – A Tale of Two Son has players controller each brother with each analog stick on a gamepad, making for some pretty interesting gameplay. This version of the game will be re-released onto next gen consoles as well as mobile devices and will also feature a director's commentary, the soundtrack, and a concept art gallery.

As the developers describe this game, this is an "epic story told without words, set in a changing world separated into diverse chapters, ranging from the craggy peaks of mountains to the musty depths of underground caves. This unique mythical world, which draws inspiration from Nordic cultures and archeology, is constantly challenging the brothers between the old and the new ways".

Since players had to control each brother with an analog stick on the same gamepad, doing this on a touchscreen should end up being an interesting adventure in itself. It could work though and quite well. It could also be a tragedy if done poorly. However, all the really cool atmospheric visuals and environments will be in the mobile version, as well as the enjoyable storyline.

As for a release date, nothing solid has been announced yet, only that Brothers – A Tale of Two Son will arriving onto mobile platforms sometime in the upcoming holiday season. We will be going hands-on with Brothers – A Tale of Two Son and 505 Games' other titles next week at E3 2015. If you have any questions, let us know in the comments below.

Brothers: A Tale of Two Sons

Developer Website: 505 Games



May 26, 2016 07:11 AM

[UPDATE: Anniversary Update Available] Tiny Tower's 5yr anniversary mega update now has a release date: May 26th

NimbleBit announced back on April 18th that they have been working on their first update for Tiny Tower in quite some time in order to celebrate the game's 5-year anniversary. Not only will this be the first update in awhile for Tiny Tower, it will probably be one of the biggest its seen.

UPDATE: Wednesday, May 25th - 6:20 PM, PST: If you are fan of the game Tiny Tower, we reported on a huge update coming this month, in celebration of the game being available 5 years. It is hard to believe the game has been around that long. Well, if the game is no longer on your device, now would be a good time to fire it up again. There have been quite a few upgrades. If you are ready to get back into this wonderful game, the link can be found below.

If you're not familiar with Tiny Tower, this game has players building and managing their own highrise tower. This includes everything from the folks visiting your tower and making sure you have plenty of services available for them to enjoy, to making sure your tenants are a success and making money. Like any business, as you grow you will have to deal with a variety of problems that will come along with said growth.

The update is quite large, adding plenty of new contents and features when it arrives. Here's the rundown of what you can expect when the update lands for Tiny Tower:

- 40 new roofs
- 32 new floors
- 24 new lobbies
- 10 new elevators
- 288 new missions
- 604 new BitBook posts
- 34 new costumes to unlock
- You can now rename your bitizens
- You can now trade bitizens with friends
- New QuickStock feature makes managing your tower even easier

There may even be more than the above list, but these are the confirmed features that the update will include. However, when we last reported on this, we had no idea as to when it would be arriving outside of 'coming soon'. Now we have an exact date and that is May 26th, 2016 for both Android and iOS. We will post an update once we learn more or when the update becomes available.

Tiny Tower

May 26, 2016 05:24 AM

Android will Soon Support the Raspberry Pi 3

About 5 weeks ago, Google created a new device tree in their AOSP repository for the Raspberry Pi 3. It’s still empty after all this time, but it did suggest that the company was working on adding Android support for the tiny ARM computer. The official Raspberry Pi 3 Twitter page has now confirmed our suspicions, so we’ll see that repo filled with code when Google is ready.

by Doug Lynch at May 26, 2016 04:13 AM

May 25, 2016

Tutorial: Using Java 8 Features When Developing for Android N

Android N adds support for Java 8 features that developers can employ if they’re targeting Android N in their applications. If you’re interested, XDA Recognized Developer sylsau has written a tutorial to show you how to leverage these new features.

by GermainZ at May 25, 2016 10:46 PM

Getting Ready for ChromeOS

A bit over two weeks ago, I delivered an “Android on the Desktop” presentation to the NYC Android Developer Meetup.

A couple of weeks before that, I blogged about the signs that Android apps were coming to Chrome OS.

A year prior to that, I blogged about the new option for distributing Android apps to Chrome OS.

So, when last week’s announcement on this came out, while I don’t mean to say “I told you so”… but I told you so.

Admittedly, it is not happening quite as I expected. Reading between the lines of the announcements, the Ars Technica article, and the VentureBeat article, it appears that Google jettisoned the ARC approach. Instead, it seems as though our apps are going to be running in a beefed-up edition of the Android SDK emulator, one with some platform-specific hooks (e.g., integrated window management with Chrome OS-native windows). And they feel confident enough about this approach that your app will, indeed, wind up shipping to Chrome OS unless you take steps to block it.

So, now what? In particular, if you want to support Chrome OS, what should you do?

First, try to get your hands on compatible hardware. At least here in the US, two of the three near-term test devices are relatively inexpensive, in the $200-300 range. These devices should get the Android app support in June. Note that all three have touchscreens.

You will then want to review your <uses-feature> elements, along with any implied <uses-feature> elements coming from your <uses-permission> elements. Ideally, you have few of these, and those that you have are set for android:required="false". The more that you require, the less likely it is that your app will work on Chrome OS. In particular, pay attention to hardware features that may not be on Chrome OS devices, remembering that not all Chrome OS devices are notebook equivalents. Some are desktop replacements (e.g., Chromebox). So, while many Chrome OS devices will have a camera, some will not. Also, since your app cannot supply Chrome OS with an input method editor, app widgets, live wallpaper, or a replacement home screen, their corresponding <uses-feature> elements should be set to not be required.

Next, confirm whether your app can work without a touchscreen. For example, you might hook up a Bluetooth keyboard and mouse to a test tablet, then try using your app. If you determine that your app can be used successfully without a touchscreen, add the following to your manifest, as a child element of the root <manifest> element:

<uses-feature android:name="android.hardware.touchscreen" required="false" />

This will allow your app to be used on Chrome OS devices that lack a touchscreen, when such devices start getting Android apps later this year.

Once your test Chromebook gets Android app capability, look for instructions for how to test your app on it. Ideally, it will work with our development tools the same way that devices and emulators do, but that is not assured. Note that this is supposed to arrive in M53 on the developer channel to these devices, so you may need to make some changes to your test Chromebook to pull in from the dev channel instead of the standard public channel.

If you decide that you do not want to deal with Chrome OS at all, you will need to decide how you want to block such distribution. Presumably, you will be able to do this via the Play Developer Console, but it might not be that easy, if you have to block distribution on a device-by-device basis. You might cheat and add in a <uses-feature> element that should be supported by mobile devices but would not be supported by Chrome OS (e.g., <uses-feature android:name="" />), even if your app does not actually implement such a feature, just to tide you over until you add Chrome OS support later.

And you will want to add Chrome OS support later. Chrome OS is interesting, but at its estimated install base, it is roughly equivalent to Froyo (0.1% of Android devices). On its own, therefore, it is not worth a lot of effort. However, it seems rather unlikely that Google will stop here. In the next couple of years, I expect Google to replicate this same approach on Windows, Mac, and Linux. That audience is substantially larger and therefore more compelling. Use Chrome OS as an extended test run for eventually supporting classic desktop operating systems in the future.

You can read more about all of this:

I will be updating my book to reflect these changes as they roll out over the next several months, so subscribers can keep up with how to support Chrome OS.

by Mark Murphy at May 25, 2016 01:18 PM

May 24, 2016

Random Musings on the N Developer Preview 3

Each time Google releases a new developer preview, I try to talk about the changes that Google isn’t talking about.

N Developer Preview 3 (NDP3) represents another incremental change over N Developer Previews 1 and 2. Google did not bother with an announcement blog post, AFAICT, though there are some release notes.

This post outlines some things that have caught my eye in NDP3.

Regressions and Changes… Compared to Production Android

View offers post() and postDelayed() methods, as does Handler. On the whole, I have been steering developers to use the ones on View, as you pretty much always have a widget available, so there is little sense in creating a Handler instance just for post() and postDelayed(). However, NDP3 makes a slight change here:

If an app posts Runnable tasks to a View, and the View is not attached to a window, the system queues the Runnable task with the View; the Runnable task does not execute until the View is attached to a window.

For a lot of uses of post(), this will not be a problem. postDelayed() might get more interesting, particularly if you are using a “postDelayed() loop” (postDelayed() invoking a Runnable that calls postDelayed() to schedule itself again). That loop will only work so long as the View you are using is attached to a Window. If you are concerned about this, beyond testing your existing implementation, you might consider switching to a Handler instance for postDelayed().


  • The week number feature on CalendarView is now deprecated
  • The embedded CalendarView in DatePicker is now deprecated and is “not supported by Material-style calendar mode”.

Regresssions and Changes… Compared to NDP2

The ShortcutsManager added in NDP2 still exists in NDP3, but the release notes indicate that it will be retired in a future developer preview. I would not recommend investing further time in it.

Other Stuff in NDP3

There are other curiosities tucked into the API differences report, above and beyond the items called out in the release notes:

  • There is now an ACTION_SHOW_APP_INFO Intent action, to “launch an activity showing the app information”. This appears to be tied to the Play Store and other app installation channels, suggesting that you can use this to display information about apps that are not yet installed.

  • If you create an ACTION_CHOOSER Intent directly (rather than via the createChooser() helper method), you can add EXTRA_EXCLUDE_COMPONENTS to list particular components that should be excluded from the list of choices. This is very handy for cases where you have your own activity that handles some implicit Intent, but you specifically want to open some Uri in any other activity handling that type of content. For example, perhaps you are having difficulty rendering the content, and you want to allow the user to try viewing that content in a third-party app.

  • There is a new MessagingStyle for Notification, which is a “helper class for generating large-format notifications that include multiple back-and-forth messages of varying types between any number of people”. I have not tried this yet to determine whether it is something that might be specific to certain form factors (e.g., Wear) or whether it is available across the board.

  • Some options that we have on JobScheduler, such as “only while charging”, and “only while idle”, are now available on DownloadManager via methods on DownloadManager.Request.

  • stopForeground() is being migrated from taking a boolean (whether or not to remove the Notification) to an int, with STOP_FOREGROUND_REMOVE and STOP_FOREGROUND_DETACH options.

  • NDP1 added addTriggerContentUri() to JobScheduler, to allow us to monitor a ContentProvider for changes without having an always-running service. NDP3 adds setTriggerContentUpdateDelay(), to postpone running the job until the content has stabilized, so jobs do not run multiple times for a series of minor changes to the content. setTriggerContextMaxDelay() sets a cap on that delay. Between those two, you can have a modicum of control over how frequently your content-related jobs are invoked.

  • A new android.view.PixelCopy method allows you to asynchronously(?) copy the contents of a Surface to a Bitmap, with a callback when that work is completed.

Bugs in NDP3

Some of the bugs that I filed against NDP1 and NDP2 were fixed, particularly ones related to quick-settings tiles.

However, some bugs that I filed are still outstanding, such as:

I also have not yet confirmed whether the FLAG_LAUNCH_ADJACENT bug that I filed has been fixed… as I cannot get FLAG_LAUNCH_ADJACENT to work at all anymore. I am still investigating this.

I am sure that many more things changed in NDP3 than I caught in the past couple of hours. And most of what I pointed out in NDP1 and NDP2 still hold true.

by Mark Murphy at May 24, 2016 01:18 PM

May 20, 2016

Using Loaders in Android Using SimpleCursorAdapter in Android.

Introduced in Android 3.0, loaders make it easy to asynchronously load data in an activity or fragment. Loaders have these characteristics:

  • They are available to every Activity and Fragment.
  • They provide asynchronous loading of data.
  • They monitor the source of their data and deliver new results when the content changes.
  • They automatically reconnect to the last loader’s cursor when being recreated after a configuration change. Thus, they don’t need to re-query their data.

You can read more about Loaders from here.

We will create a Sqlite Database with a Table and three columns, id, name and company.

We will try to query data with Loaders and SimpleCursorAdapter.

The Loaders will load the data from the database to the ListView.

Where there is new Data added, the Loader will automatically reload the data in the ListView.

Lets see how to do this.

I am using a class called DemoItem which contains three members – name and company.
Our Sqlite database has the same structure with an autoincrement ID.

package com.coderzheaven.myapplication;

public class DemoItem {

    String name, company;

    public String getName() {
        return name;

    public void setName(String name) { = name;

    public String getCompany() {
        return company;

    public void setCompany(String company) { = company;

    public void set(String name, String company) { = name; = company;

Here is our Database Helper class

package com.coderzheaven.myapplication;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MySQLiteHelper extends SQLiteOpenHelper {

    // Database Version
    private static final int DATABASE_VERSION = 1;
    // Database Name
    private static final String DATABASE_NAME = "DemoDB";

    private static final String TABLE_NAME = "Demo";

    public static final String KEY_ID = "_id";
    public static final String KEY_NAME = "NAME";
    public static final String KEY_COMPANY = "COMPANY";

    private static final String[] COLUMNS = {KEY_ID, KEY_NAME, KEY_COMPANY};

    public MySQLiteHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);

    public void onCreate(SQLiteDatabase db) {

        // The Database Create Query
                + KEY_ID + " INTEGER primary key AUTOINCREMENT,"
                + KEY_NAME + " TEXT,"
                + KEY_COMPANY + " TEXT);";

        // Execute the Query

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

      Add Records to the Database
    public void addItem(DemoItem item) {

        // Get reference to writable DB
        SQLiteDatabase db = this.getWritableDatabase();

        // Create ContentValues to add key "column"/value
        ContentValues values = new ContentValues();
        values.put(KEY_NAME, item.getName()); // get title
        values.put(KEY_COMPANY, item.getCompany()); // get author

        // Do Insert
        db.insert(TABLE_NAME, null, values);

        // Close the DB


        Get all records from the Database
    public Cursor getAllItemsCursor() {

        String query = "SELECT  * FROM " + TABLE_NAME;

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(query, null);

        return cursor;

Now we will write our Custom Loader for Loading values from the SqliteDatabase.

Create a new Class called “MyLoader” and copy this contents to it.

package com.coderzheaven.myapplication;

import android.content.AsyncTaskLoader;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;

public class MyLoader extends AsyncTaskLoader<Cursor> {

    public static final String TAG = "MyLoader";

    // Database Helper Class
    MySQLiteHelper mySQLiteHelper;

    Cursor cursor;

    // We hold a reference to the Loader’s data here.
    private Cursor mData;

    Context ctx;

    public MyLoader(Context ctx) {
        this.ctx = ctx;

    public Cursor loadInBackground() {
        // This method is called on a background thread and should generate a
        // new set of data to be delivered back to the client.

        // Initialize Database Helper Class
        mySQLiteHelper = new MySQLiteHelper(ctx);

        // Get all records from the Database
        cursor = mySQLiteHelper.getAllItemsCursor();

        return cursor;

    public void deliverResult(Cursor data) {
        if (isReset()) {
            // The Loader has been reset; ignore the result and invalidate the data.

        // Hold a reference to the old data so it doesn't get garbage collected.
        // We must protect it until the new data has been delivered.
        Cursor oldData = mData;
        mData = data;

        if (isStarted()) {
            // If the Loader is in a started state, deliver the results to the
            // client. The superclass method does this for us.

        // Invalidate the old data as we don't need it any more.
        if (oldData != null && oldData != data) {

    protected void onStartLoading() {
        if (mData != null) {
            // Deliver any previously loaded data immediately.

        if (takeContentChanged() || mData == null) {
            // When the observer detects a change, it should call onContentChanged()
            // on the Loader, which will cause the next call to takeContentChanged()
            // to return true. If this is ever the case (or if the current data is
            // null), we force a new load.
            Intent intent = new Intent("my-event");
            intent.putExtra("message", "message");

    protected void onStopLoading() {
        // The Loader is in a stopped state, so we should attempt to cancel the
        // current load (if there is one).

        // Note that we leave the observer as is. Loaders in a stopped state
        // should still monitor the data source for changes so that the Loader
        // will know to force a new load if it is ever started again.

    protected void onReset() {
        // Ensure the loader has been stopped.

        // At this point we can release the resources associated with 'mData'.
        if (mData != null) {
            mData = null;

//        // The Loader is being reset, so we should stop monitoring for changes.
//        if (mObserver != null) {
//            try {
//                getContext().unregisterReceiver(mObserver);
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//            mObserver = null;
//        }

    public void onCanceled(Cursor data) {
        // Attempt to cancel the current asynchronous load.

        // The load has been canceled, so we should release the resources
        // associated with 'data'.

    private void releaseResources(Cursor data) {
        // For a simple List, there is nothing to do. For something like a Cursor, we
        // would close it in this method. All resources associated with the Loader
        // should be released here.


Now we have My Custom SimpleCursorAdapter for loading data in ListView.

package com.coderzheaven.myapplication;

import android.content.Context;
import android.database.Cursor;
import android.view.View;
import android.view.ViewGroup;
import android.widget.SimpleCursorAdapter;

public class MyCursorAdapter extends SimpleCursorAdapter {

    public MyCursorAdapter(Context context, int layout, Cursor c,
                           String[] from, int[] to, int flags) {
        super(context, layout, c, from, to, flags);

    public View getView(int position, View convertView, ViewGroup parent) {

        //get reference to the row
        View view = super.getView(position, convertView, parent);

        return view;


Now will go into the implementation.

To initialize a Loader, you could simply call..

   getLoaderManager().initLoader(LOADER_ID, null, this);

You need to implement LoaderManager.LoaderCallbacks to work with Loaders.

The methods you have to implement are:

  • onCreateLoader() – The LoaderManager calls this method when you call initLoader() for the first time. As mentioned, the manager only calls this method if no loader for the given ID exists.
  • onLoadFinished() – Here you update the UI based on the results of your query.
  • onLoadReset() – Release any resources you hold, so that the Loader can free them.

Below is the Fragment that implements the Above Loader.

package com.coderzheaven.myapplication;

import android.content.Context;
import android.content.Loader;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

public class MainActivityFragment extends Fragment implements LoaderCallbacks<Cursor>, View.OnClickListener {

    private static final String TAG = "MainActivityFragment";
    private static final int LOADER_ID = 1;
    Context context;
    MySQLiteHelper m;
    MyLoader myLoader;
    ListView mList;
    MyCursorAdapter simpleCursorAdapter;
    FloatingActionButton fab;

    public MainActivityFragment() {
        this.context = getActivity();

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_main, container, false);

        fab = (FloatingActionButton) view.findViewById(;

        mList = (ListView) view.findViewById(;

        // Initialize the Database Helper Class
        m = new MySQLiteHelper(getActivity());

        // Initialize our Loader
        getLoaderManager().initLoader(LOADER_ID, null, this);

        // Get all the records from the database in a Cursor
        Cursor cursor = m.getAllItemsCursor();

        // The desired columns to be bound
        String[] columns = new String[]{

        // The XML defined views which the data will be bound to
        int[] to = new int[]{

        // Initialize our Cursor Adapter
        simpleCursorAdapter = new MyCursorAdapter(

        // Set the adapter to our ListView

        // Return the view for the fragment.
        return view;

     * Add the data to the database
    public void add() {

        // Create new Item and add Values
        DemoItem d = new DemoItem();
        d.set("CoderzHeaven", "Company");

        // Insert the item to the Database

        // Call whenever content is changed for the Loader

    This function will be called when you initalize a Loader
    public Loader<Cursor> onCreateLoader(int id, Bundle args) {

        // Initialize our Custom Loader
        myLoader = new MyLoader(getActivity());
        return myLoader;

      When the cursor is finally available you have to add it. You do this by calling         
      swapCursor() on your adapter and passing in the cursor object of your callback method
    public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
        Log.i(TAG, "onLoadFinished " + cursor.getCount());
        // Notify the adapter to change the values
        //Set the Selection to the last row in the ListView.
        mList.setSelection(cursor.getCount() - 1);

    public void onLoaderReset(Loader<Cursor> loader) {
        Log.i(TAG, "onLoaderReset");

    public void onClick(View v) {
        if (v == fab) {

When not to use Loaders

  • You shouldn’t use Loaders if you need the background tasks to complete.
  • Android destroys Loaders together with the Activities/Fragments they belong to.
  • If you want to do some tasks, that have to run until completion even after your application/Activity is destroyed, do not use Loaders. You should use services for this kind of stuff instead.

You can download the complete Android Studio Source code from here.


by James at May 20, 2016 03:42 PM

And the winners of the Google Play Awards are…

Posted by Purnima Kochikar, Director, Apps and Games Business Development, Google Play

During a special ceremony last tonight at Google I/O, we honored ten apps and games for their outstanding achievements as part of the inaugural Google Play Awards.

As we shared onstage, when you look at how Google Play has evolved over the years, it’s pretty amazing. We’re now reaching over 1 billion users every month and there’s literally something for everyone. From real-time multiplayer to beautiful Indie games, industry changing startups to innovative uses of mobile technology, developers like you continue to push the boundaries of what apps can do.

Congrats to the following developers in each category!

by Reto Meier ( at May 20, 2016 02:15 PM

May 19, 2016

Android Studio 2.2 Preview - New UI Designer & Constraint Layout

By Jamal Eason, Product Manager, Android

This week at Google I/O 2016 we launched Android Studio 2.2 Preview. This release is a large update that builds upon our focus to create a fast and productive integrated development environment (IDE) for Android. Developed in sync with the Android platform, Android Studio allows you to develop with the latest Android APIs and features. Since launching Android Studio at Google I/O just 3 years ago, we received great feedback from on you on what features you want the most. Today 92% of the top 125 apps & game developers on Google Play, plus millions of developers worldwide, use Android Studio. We want to continue to build features that will continue to make you more efficient when developing for Android and more productive.
Android Studio 2.2 Preview includes a portfolio of new features along the spectrum of developments, ranging from designing user interfaces to building and debugging your app in new ways. This preview includes the following new categories of features:
  • Layout Editor: A new user interface designer that helps you visually design the layouts in your app. Features like blueprint mode and the new properties panel allow you to quickly edit layouts and widgets faster.
  • Constraint Layout: A new powerful and flexible Android layout that allows you to express complex UIs without nesting multiple layouts. 
  • Layout Inspector: Debug a snapshot of your app layout running on the Android Emulator or device. Inspect the view hierarchy and corresponding attributes.

  • Firebase Plugin: Explore and integrate the suite of services offered by Firebase inside of Android Studio. Adding services like Analytics, Authentication, Notifications, and AdMob are just a few clicks away.
  • Enhanced Code Analysis: Android Studio checks the quality of your Android app code. In addition to 260 Android lint and code inspections, this release includes new code quality checks for Java 8 language usage and a new inspection infrastructure for more cross-file analysis.
  • Samples Browser: Referencing Android sample code is now even easier. Within the code editor window, find occurrences of your app code snippets in Google Android sample code to help jump start your app development.
  • Improved C++ Support: Android Studio 2.2 improves C++ development with the ability to edit, build, and debug pre-existing Android projects that use ndk-build or CMake rather than Gradle. Additionally, the existing lldb C++ debugger is now even better with project type auto-detection and a Java language aware C++ mode that lets you use a single debugger process to inspect both Java language and C++ runtimes.
  • IntelliJ 2016.1: Android Studio 2.2 includes all the latest updates from the underlying JetBrains product platforms IntelliJ.

  • Jack Compiler Improvements: For those using the new Jack compiler, Android Studio 2.2 adds support for annotation processing, as well as incremental builds for reduced build times.
  • Merged Manifest Viewer: Diagnose how your AndroidManifest.xml merges with your app dependences across your project build variants. 

  • Espresso Test Recorder: Record Espresso UI tests simply by using your app as a normal user. As you click through your app UI, reusable and editable test code is then generated for you. You can run the generated tests locally, in your Continuous Integration environment, or in Firebase Test lab
  • APK Analyzer: Drill into your APK to help you reduce your APK size, debug 64K method limit issues, view contents of Dex files and more.

Google I/O ‘16: What’s New in Android Development Tools

Deeper Dive into the New Features 

  • Layout Editor: Android Studio 2.2 features a new user interface designer. There are many enhancements but some of the highlights include: 
    • Drag-and-drop widgets from the palette to the design surface or the component tree view of your app.
    • Design surface has a blueprint mode to inspect the spacing and arrangement of your layout. 
    • Properties panel now shows a curated set of properties for quick widget edits with a full sheet of advanced properties one click away.
    • UI builder can edit menu and system preference files. 
The new Layout Editor in Android Studio 2.2 Preview
Edit Menus in the new Layout Editor

  • Constraint Layout: This new layout is a flexible layout manager for your app that allows you to create dynamic user interfaces without nesting multiple layouts. It is distributed as a support library that is tightly coupled with Android Studio and backwards compatible to API Level 9. 
At first glance, Constraint Layout is similar to RelativeLayout. However, the Constraint Layout was designed to be used in Studio and it can efficiently express your app design so that you rely on fewer layouts like LinearLayout, FrameLayout, TableLayout, or GridLayout. Lastly, with the built-in automatic constraints inference engine. You can freely design your UI to your liking and let Android Studio do the hard work.

To help you get started, the built-in templates in the New Project Wizard in Android Studio 2.2 Preview now generate  a Constraint Layout. Alternately, you can right click on any layout in the new Layout Editor and select the Convert to ConstraintLayout option.

This is an early preview of the UI designer and Constraint Layout, and we will rapidly add enchantments in upcoming releases. Learn more on the Android Studio tools site.

    Constraint Layout

    Start Layout Inspector
    • Layout Inspector: For new and existing layouts, many times you may want to debug your app UI to determine if your layout is rendering as expected. With the new Layout Inspector, you can drill into the view hierarchy of your app and analyze the attributes of each component of UI on the screen. 
    To use the tool, just click on Layout Inspector Icon in the Android Monitor Window, and then Android Studio creates a snapshot of the current view hierarchy of your app for you to inspect.
    Layout Inspector

    • Firebase Plugin: Firebase is the new suite of developers services that can help you develop high-quality apps, grow your user base, and earn more money. Inside of Android Studio, you can add Firebase to a new or existing Android app with the new Assistant window. To access the Firebase features click on the Tools menu and then select Firebase. You will want to first setup the brand new Firebase Analytics as the foundation as you explore other Firebase services like Firebase Cloud Messaging or Firease Crash Reporting to add your application. Learn more about the Firebase integration inside Android Studio here.

    Firebase Plugin for Android Studio
    • Code Sample Browser: In addition to importing Android Samples, the Code Sample Browser is a menu option inside Android Studio 2.2 Preview that allows you to find high-quality, Google-provided Android code samples based on the currently highlighted symbol in your project. To use the feature, highlight a Variables, Types and Methods in your code then Right Click to show a context menu for Find Sample Code. The results are displayed in a bottom output box.   
    Code Sample Browser
    • CMake and NDK-Build: For those of you using the Android NDK, Android Studio now supports building CMake and NDK-Build Android app projects by pointing Gradle at your existing build files. Once you’ve added your cmake or ndk-build project to Gradle, Android Studio will automatically open your relevant Android code files for editing and debugging in Studio.

    For CMake users, just add the path to your CMList.txt file in the externalNativeBuild section of your Gradle file:
    CMake Build in Android Studio

    For NDK-Build Users, just add the path to your *.mk file in the section of your Gradle file:
    NDK-Build in Android Studio

    • Improved Jack Tools: The new Jack Toolchain compiles your Java language source into Android dex bytecode. The Jack compiler allows some Java 8 language features, like lambdas, to be used on all versions of Android. This release adds incremental build and full support for annotation processing, so you can explore using Java 8 language features in your existing projects.
    To use incremental build with Jack add the following to your build.gradle file:

    Enable Jack Incremental Compile Option
    Jack will automatically apply annotations processors in your classpath. To use an annotation processor at compile-time without bundling it in your apk, use the new annotationProcessor dependency scope:
    Enable Jack Annotation Processing
    • Merged Manifest Viewer: Figuring out how your AndroidManifest merges with your project dependencies based on build types, flavors and variants is now easier with Android Studio. Navigate to your AndroidManifest.xml and click on the new Merged Manifest bottom tab. Explore how each node of your AndroidManifest resolves with various project dependencies.  
    Merged Manifest Viewer

    • Espresso Test Recorder: Sometimes writing UI tests can be tedious. With the Record Espresso UI tests feature, creating tests is now as easy as just using your app. Android Studio will capture all your UI interactions  and convert them into a fully reusable Espresso Test that you can run locally or even on Firebase Test lab. To use the recorder, go to the Run menu and select Record Espresso Test.

    Espresso Test Recorder

    • APK Analyzer: The new APK Analyzer helps you understand the contents and the sizes of different components in your APK. You can also use it to avoid 64K referenced method limit issues with your Dex files, diagnose ProGuard configuration issues, view merged AndroidManifest.xml file, and inspect the compiled resources file (resources.arsc). This can help you reduce your APK size and ensure your APK contains exactly the things you expect.
    The APK Analyzer shows you both the raw file size as well as the download size of various components in your APK. The download size is the estimated size users need to download when the APK is served from Google Play. This information should help you prioritize where to focus in your size reduction efforts.

    To use this new feature, click on the Build menu and select Analyze APK… Then, select any APK that you want to analyze.

    APK Analyzer

    • Java-aware C++ Debugger:  When debugging C++ code on targets running N and above, you can now use a single, Java language aware lldb instance. This debugger continues to support great lldb features like fast steps and memory watchpoints while also allowing you to stop on Java language breakpoints and view your Java language memory contents.

    • Auto Debugger Selection: Android Studio apps can now use debugger type “Auto.” This will automatically enable the appropriate debugger -- the Java language aware C++ debugger if enabled and otherwise the hybrid debugger for C++ projects.  Projects exclusively using the Java language will continue to use the Java language debugger.

    Enable Auto Debugger for C++

    What's Next 


    If you are using a previous version of Android Studio, you can check for updates on the Canary channel from the navigation menu (Help → Check for Update [Windows/Linux] , Android Studio → Check for Updates [OS X]). This update will download a new version, and not patch your existing copy of Android Studio. You can also download Android Studio 2.2 Preview from canary release site.

    For the Android Studio 2.2 Preview, we recommend you run a stable version alongside the new canary. Check out the tools site on how to run two versions at the same time.

    We appreciate any feedback on things you like, issues or features you would like to see. Connect with us -- the Android Studio development team -- on our Google+ page or on Twitter

    by Reto Meier ( at May 19, 2016 10:00 PM

    May 13, 2016

    Filtering a RecyclerView with Custom Objects.

    This demo will show you how you can filter a RecyclerView with your Custom Objects.

    If you are new to RecyclerView, then please go through this post to get a glance.

    Check out the Demo Video ( 7 seconds)

    RecyclerView Filter

    Here I am using a CustomClass called “ListItem” which has three members.

    package com.coderzheaven.filterlistview;
    public class ListItem {
        String name, place;
        int logo;
        public void setData(String name, String place, int logo) {
   = name;
   = place;
            this.logo = logo;

    package com.coderzheaven.filterlistview;
    import android.os.Bundle;
    import java.util.ArrayList;
    public class MainActivity extends AppCompatActivity implements SearchView.OnQueryTextListener {
        private static final String TAG = "MainActivity";
        private ArrayList<ListItem> allList;
        private RecyclerView mRecyclerView;
        private MyRecyclerAdapter adapter;
        private SearchView mSearchView;
        protected void onCreate(Bundle savedInstanceState) {
            mSearchView = (SearchView) findViewById(;
            mRecyclerView = (RecyclerView) findViewById(;
            mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
            adapter = new MyRecyclerAdapter(this, allList);
        public void setList() {
            allList = new ArrayList<ListItem>();
            ListItem item = new ListItem();
            item.setData("Google", "USA",;
            item = new ListItem();
            item.setData("Apple", "USA",;
            item = new ListItem();
            item.setData("Samsung", "Korea",;
            item = new ListItem();
            item.setData("Sony", "Japan",;
            item = new ListItem();
            item.setData("HTC", "Taiwan",;
            for (int i = 0; i < 10000; i++) {
                item = new ListItem();
                item.setData("Google " + i, "USA " + i,;
        private void setupSearchView() {
            mSearchView.setQueryHint("Search Here");
        public boolean onQueryTextChange(String newText) {
            return true;
        public boolean onQueryTextSubmit(String query) {
            return false;

    We have added around 10000 custom items in the RecyclerView for searching.

    Now we will see the “RecyclerView” which also includes searching.

    package com.coderzheaven.filterlistview;
    import android.content.Context;
    import android.text.TextUtils;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import java.util.ArrayList;
    import java.util.List;
    public class MyRecyclerAdapter extends RecyclerView.Adapter<MyCustomViewHolder> {
        private List<ListItem> listItems, filterList;
        private Context mContext;
        public MyRecyclerAdapter(Context context, List<ListItem> listItems) {
            this.listItems = listItems;
            this.mContext = context;
            this.filterList = new ArrayList<ListItem>();
            // we copy the original list to the filter list and use it for setting row values
        public MyCustomViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
            View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_item, null);
            MyCustomViewHolder viewHolder = new MyCustomViewHolder(view);
            return viewHolder;
        public void onBindViewHolder(MyCustomViewHolder customViewHolder, int position) {
            ListItem listItem = filterList.get(position);
        public int getItemCount() {
            return (null != filterList ? filterList.size() : 0);
        // Do Search...
        public void filter(final String text) {
            // Searching could be we will dispatch it to a different thread...
            new Thread(new Runnable() {
                public void run() {
                    // Clear the filter list
                    // If there is no search value, then add all original list items to filter list
                    if (TextUtils.isEmpty(text)) {
                    } else {
                        // Iterate in the original List and add it to filter list...
                        for (ListItem item : listItems) {
                            if ( ||
                                // Adding Matched items
                    // Set on UI Thread
                    ((Activity) mContext).runOnUiThread(new Runnable() {
                        public void run() {
                            // Notify the List that the DataSet has changed...

    package com.coderzheaven.filterlistview;
    import android.view.View;
    import android.widget.ImageView;
    import android.widget.TextView;
    public class MyCustomViewHolder extends RecyclerView.ViewHolder {
        protected ImageView imageView;
        protected TextView tvName, tvPlace;
        protected ImageView imgThumb;
        public MyCustomViewHolder(View view) {
            this.tvName = (TextView) view.findViewById(;
            this.tvPlace = (TextView) view.findViewById(;
            this.imgThumb = (ImageView) view.findViewById(;

    You could check my RecyclerView post to check the layout XMLs and update the layout ids as well.

    Download the complete Android Studio Source Code from here.

    by James at May 13, 2016 04:51 PM

    May 03, 2016

    Three Tips to Make Your Mobile Video Collaboration Effective

    Video conferencing has made both personal and professional life easy. According to Pew Research Center, one in five Americans make video calls. Researchers have found that seven percent of cell phone users and 23 percent of Internet users had participated in video calls. Video conferencing can save time and money for IT departments as well if an organization trains their employees to use the video conferencing smartly.

    Many people think it is easy to video conference, but the reality is different. If people don’t understand few basics, the way they use could affect the quality of video conferencing compromising the video and audio aspects. If the quality of the video and audio is not good, then the advantage of video conferencing is lost, and employees will stop using it. To make use of the video conferencing using mobiles the following tips should be kept in mind.


    Tips to Make Mobile Video Collaboration A Success

    Though video conferencing was done on desktops for almost a decade, the use of mobile devices for video conferencing is a recent phenomenon. As recorded by Wainhouse Research over 50 percent of workers use mobile devices at work instead of getting stuck in front of their desks. The participation in video conference through a mobile device is not same as desktops. You need to keep in mind certain aspects for effective video conferencing while using mobile devices.


    Prepare Your Environment

    Video conference becomes successful only in the right environment. Unless background noise and internet speed, and other aspects are taken care, it cannot be a success. Setting up a favorable environment is a standard procedure that you have to consider to start a video conference. You need to be aware of the situation especially when using mobile devices. It is true that you can video conference from anywhere with mobile devices, but ensure sufficient lighting for clear visuals.

    – Using natural light is best. If not, use bright overhead light for perfect visuals

    – Modern mobile devices can capture wider screen area, unlike webcam so you should adjust accordingly

    – Avoid distracting backgrounds for productive conferencing

    – You can test the visuals in a “selfie mode” and change color and light as needed

    – It is best to avoid backlighting and focus light on the face to ensure better visibility

    – It is a good etiquette to sit upright in the chair while video conferencing rather than be on the bed or slouching on a table.

    – You should always get ready in advance with all the reference materials if needed instead of running around during the conference. It will save time and bandwidth which saves money in the process.


    Make Use of Technology to Save Money

    There is no doubt that video conferencing saves money. However, use of the right hardware and software can increase savings and make video conference an affordable experience.

    You have to choose the right tools and set the configuration to make video conferencing smooth. These tools should be readily compatible with the existing hardware and software available on the mobile devices. According to Blue Jeans, making use of android video conferencing for IT is one of the best things you can do for quicker reach as most professionals today – in the IT sector and otherwise – would like to use a mobile device rather than a desktop or laptop. It becomes all the more necessary when individuals travel frequently. Choose professional services and research all the options before making a choice to invest on a video conferencing device. It is the best thing to do to save money.


    Placement of Mobile Device

    A simple tactic for smooth video conferencing while using a mobile device is to keep it in a stable area. It makes a huge difference for your video conferencing presentation. It is not right to hold the device in your hand while conferencing, although most make the mistake of holding it in their hands.

    You can make use of convertible cradles that often come with mobile devices. It helps to keep the device at an angle and also avoid shaking during the presentations. Always place the mobile device to show the viewers a visual from your shoulders up. The more the body language viewers see, the more efficient the video conferencing can be. If you need some height, then you can use necessary tools to increase the height.

    A significant advantage of video conferencing through mobile devices is the ability to attend IT meetings from anywhere. The mobile makes it transportable and provides opportunities to work and solve IT issues even when you are on the move. It is one of the significant advances in business technology as it increases productivity while cutting costs. You need to be aware of the importance of setting up your mobile device for productive meetings. If you use the mobile device in the right way, participating in a video conferencing can become a smooth and enjoyable activity.


    The post Three Tips to Make Your Mobile Video Collaboration Effective appeared first on Android Apps.

    by Matty Selbst at May 03, 2016 06:51 AM

    May 01, 2016

    Galaxy Tab S2 CM12 download: Download cyanogen mod 12.1 for the Samsung Tab S2

    The post Galaxy Tab S2 CM12 download: Download cyanogen mod 12.1 for the Samsung Tab S2 appeared first on galaxytabreview.

    Galaxy Tab S2 CM12 is here finally thanks to folks at XDA and installation instruction for downloading and installing CM12 aka cyanogen mod 12.1 for the Samsung Tab S2 are given below. It shall be noted that while almost everything except MTP and microphone is working, this cyanogen mod 12.1 for the Samsung Tab S2 […]

    by Galaxy Tab Review at May 01, 2016 09:48 AM

    April 25, 2016

    Download MIUI7 for Galaxy Tab 3 7.0 (sm-t217t)

    The post Download MIUI7 for Galaxy Tab 3 7.0 (sm-t217t) appeared first on galaxytabreview.

    Samsung Galaxy Tab 3 7.0 SM-t217t gets MIUI7 and you can download it from here. The firmware is very stable and has multi language support. Its super fast, quick to boot, and offers great user interface. What so great about it is the fact you can find lot of MIUI themed icons from the playstore […]

    by Galaxy Tab Review at April 25, 2016 09:23 AM

    April 22, 2016

    3 Tips for Conducting Large Scale International Employee Training

    With employees wearing more hats than ever in the workplace today, it’s imperative that proper training sessions be implemented. Workers in the 21st century are expected to show bigger results with less resources, know more with less educational opportunities, and work faster with less time. Basically, the more skills you can provide your employees with, the more effective they’ll be at tackling these substantial challenges. This is the reality of the workforce after the recession, but there’s no reason that you can’t utilize the latest technology in business communication to make sure that all of your employees are highly trained and skilled in a cost effective manner. This is where live streaming comes in, which allows employers to broadcast training to hundreds, if not thousands, of teams all around the globe. Whether your staff is international or interstate, live streaming technology is one of the most revolutionary innovations to hit the video conferencing industry in recent memory. Here are four tips on how to maximize its effectiveness for your business.

    1. Finding The Right Space

    As you develop an employee training program, AllBusiness highlights the importance of finding the right space, such as allowing participants to spread out materials and ensuring a room is equipped with the proper technology for the materials that you’re presenting. However, when it comes to using video conferencing, you can follow this advice while taking it up a notch into the virtual space.


    While there are many free live streaming services, if you’re really serious, you need a professional like BlueJeans. BlueJeans primetime was announced last year as one of the newest services from the well known video conferencing company, and it delivers. This is the type of virtual space that you’ll need to give the most effective training, which ensures that information won’t be lost over a faulty connection or due to poor resolution. Using a professional video conferencing provider with extra features for presentations arms you with all the tools necessary to ensure that your training sessions will have maximum impact.


    2. Know Who You’re Training

    While many businesses currently go after the much sought after talents of Millennials, you can’t forget about your loyal mainstays. Business News Daily advises that you need to be aware of generational differences in your staff. This is a great way to not only take some time to understand the dynamics of your team, especially for employees who are spread out over wide distances, but also encourage them to assist each other. There’s no better way to encourage team building than to have your employees help one another and overlap different skill sets. The older generation has a wealth of knowledge based on irreplaceable real life experience, whereas the younger, entry level part of your staff may have a superior grasp on technology. This is the perfect opportunity to have a meaningful exchange of information that will benefit your workplace in the long run and strengthen coworker bonds.


    3. Bring In Guest Speakers and Experts

    Training Mag recommends that in addition to standard employee training, video conferencing in particular can also be used to deliver presentations by guest speakers and experts that can be broadcast across a wide channel to your staff. While at one time bringing in experts to provide training sessions may have been cost prohibitive due to expenses such as accommodation and airfare in addition to any speaker fees, using live streaming makes it possible to amplify an expert’s presentation across multiple channels. This is a chance to provide your staff with the rare opportunity to take advantage of the knowledge of a leader in your industry, which may otherwise have been inaccessible. Knowledge is very valuable, and using this type of technology also makes it affordable.


    Make sure you also encourage your staff to ask questions. Part of the revolutionary part of live streaming technology is its participatory nature. Whereas it was once impossible to try and interact with a large group of people via a presentation on camera being delivered to a huge group, you can now use the more dynamic platforms that exist to address questions from participants. Live streaming technology basically not only helps you to amplify information across a distances, but also makes it a more meaningful experience by encouraging employees to actively engage with the training itself.


    Once you have live streaming technology at your fingertips, the key to using it effectively is mastering the different options and features offered. While broadcasting a training session to hundreds of people may sound impressive to begin with, you need to go above and beyond. Just as you would with a traditional training session, make sure that your presentation materials are engaging. Use visuals and voice, and invite participation at appropriate junctures. The bottom line of effective employee training, with or without live streaming, is engagement. However, with the combination of live streaming technology and exciting training material, you’ll be able to give your staff the ultimate edge.


    The post 3 Tips for Conducting Large Scale International Employee Training appeared first on Android Apps.

    by Matty Selbst at April 22, 2016 10:43 PM

    April 20, 2016

    Creating apps for emerging markets


    At Mutual Mobile, we work on a variety of digital products, from banking and contactless payments to smart homes and wearables. Each one comes with its own set of challenges, but every so often, we encounter something new.

    FastFilmz had a vision to stream HD movies in India, over slow and unreliable networks, with low cost plans. We partnered with them to help bring their over-the-top (OTT) solution to market. As you can imagine, this is not exactly easy. We were thrilled to help them accomplish it.

    Now that the app is available and the celebrations are over, we’d like to share what we learned. Creating products for emerging markets presents unique challenges.

    Building for low-end devices

    FastFilmz launched first on the Android platform, as it is the most popular mobile OS in India. India is the 2nd largest smartphone market in the world after China, recently surpassing the US. This growth is fueled by low-end phones sold at competitive prices by both local and international OEMs. This presents a challenge as we had to design solutions that run well on devices with limited resources.

    Picking test devices

    Android always gets a bad rep for fragmentation, requiring testing on lots and lots of devices. In our experience, you can efficiently test an application by picking the right set of devices. The key is to understand the target audience. You don’t need to test your app on every device out there.

    We worked with FastFilmz to come up with a short list. It was an ideal combination of platform versions, screen sizes, hardware configuration, and manufacturers. We validated the list through data gathered in an extensive user-research exercise. Also, during beta testing, we made sure the app was tested on devices not on our original list to catch any rogue, device-specific bugs.

    Running buttery-smooth animations

    Achieving 60fps on popular Android phones is hard enough. Imagine trying to do that on phones with around half a Gigabyte of RAM. On low-end devices, it is common practice to disable complex animations or run simpler ones instead. If most of your users have low-end hardware, this option just goes out the window.

    Our engineers worked side-by-side with our designers to try different ideas for navigation and transitions. We tested them on real devices, tweaked them if something worked well, or went back to the drawing board and repeated the whole process. It was definitely challenging, but totally worth it.

    A common advice for engineers is to use low-end hardware while building apps. We not only did that but went a step further. To simulate a real world environment, we installed the most popular apps used by our target customer. This is important. On a device with constrained resources, bad citizens can degrade the overall performance, including your app. This was critical in making sure our animations work well for all customers.

    Dealing with slow and unreliable networks

    Despite the exponential growth of smartphone usage, the state of cellular networks in India is terrible. 4G is just rolling out, and 3G coverage is spotty, even in major cities. Even when there is 3G coverage, devices regularly get bumped down to 2G, especially when indoors. If the users cannot quickly browse the catalog, they won’t be able to use the app.

    Making content always available, even when offline

    Our goal was to create an experience with no progress bars. That means users should rarely see loading indicators, irrespective of the quality of the network or even when they are offline.

    There are multiple ways to achieve this, and we’ve written custom implementations in the past. However, we were impressed with the capabilities of Firebase. Though it is primarily a real-time database, it has nice offline capabilities, and it syncs fast, even in bad network conditions. What if we could use Firebase to fetch and store the catalog data locally, so we can render it fast, even when the app is offline? We wrote a quick prototype to see if that’s feasible, even on slow networks in small towns. It worked better than we expected.

    We used a mix of Firebase and RESTful APIs to power the app. Catalog metadata that must be available to the user both instantly and offline resides in Firebase. Everything else is on servers that provide standard APIs to access it. The key is deciding what data goes where. Putting everything in Firebase would increase the memory the app would consume on users’ devices. We wanted to be considerate of this and not cause customers to uninstall our app to create space.

    We were able to leverage the power of Firebase, while keeping the server costs low. It also allows the curation team to add new content or feature content easily by using the Firebase backend. The updates are instantly pushed to all customers.

    Since Firebase stores data in JSON format, it has limitations to how you can query it. For instance, you can’t query data that is over 2 levels deep. To work around this, we designed the schema by flattening it as much as possible, while reducing duplication. Overall, we are happy with the way it is working.

    For RESTful APIs, we followed the usual best practices, using gzip compression to reduce payload size, implemented HTTP response caching, along with exponential back off and retry. For images, we used WebP to reduce load times and memory consumption.

    The key thing to note, while providing offline capability in any app, is how much time and effort will go into implementing and maintaining it. Modern frameworks, like Firebase, support most of the use cases and are affordable, even for start-ups. However, there will be use cases where they don’t work. In that case, you may need to roll your own solution.

    Streaming video with little or no buffering

    It’s no fun to watch your favorite movie when it keeps buffering all the time. Fortunately, FastFilmz partnered exclusively with V-Nova to deploy their award-winning video compression technology, Perseus™. One of the world’s leading video compression technologies, it works well on slow networks, while keeping the data costs down. During our testing, we found it enables quality playback at almost 1/4th the data consumed compared to other similar services.

    We also allow customers to download full movies and store them offline. They can watch them anytime. Digital Rights Management is fully supported to prevent piracy.

    Choosing the right payment mechanism

    Monetization is an important aspect of any business, and it is critical to provide an easy way for customers to pay. As per 2015 reports, only 4-6% of Indian consumers have access to mobile payments and most simply don’t trust online payment services.

    To work around this, we implemented carrier billing as an exclusive way to accept payments, i.e., allowing consumers to pay with their mobile carrier balance. Based on the feedback we’ve received, customers love the convenience and are more than willing to purchase and renew their subscription using this option.


    Creating apps for emerging markets introduces some unique challenges. Fortunately, once you know the issues, they are not difficult to solve. To recap, always remember to:

    1. Pick the right target devices, based on user research.
    2. Use real devices, not simulators, daily and set them up to mimic a real user scenario.
    3. Work closely with designers to iterate on different options for animations and transitions.
    4. Use the WebP format for images.
    5. Provide a compelling offline experience using technologies like Firebase.
    6. Choose the right payment platform for your target audience.

    We love solving new problems and based on the results in the market, customers are loving the result. We hope this was helpful and always welcome questions and comments.

    The post Creating apps for emerging markets appeared first on Mutual Mobile.

    by Mutual Mobile at April 20, 2016 09:06 PM

    March 11, 2016

    Tasker Week: Utilize NFC Triggers!


    So you picked up some NFC tags or are considering doing so, but what’s next? You could, of course, set them for boring things such as storing your WiFi password or logging into your phone with Trusted Devices. Or you can set them to trigger just about anything through Tasker!

    Here are just a few of the best and most useful day to day tasks you can automate using Tasker and NFC tags.


    Set up
    Wake On Lan
    Driving Mode
    Display Custom App Menu

    Set up

    All the Tasker profiles below require an NFC Tasker Plugin; I use and recommend Locale NFC Plugin for ease of use. You will of course also need an NFC tag per profile. The first step for all these will be the same so I will cover it just once now. If you are using Locale you can stop the phone asking which app you would like to use to read the tag by writing bad://access/development as a custom URL to it, this will ensure that only the Locale plugin can access the app. To do this I recommend the NFC Tools app and the entire process should take just a few seconds (see right).  Once you have your tag ready head to Tasker and set up a new profile by tapping the + at the bottom of the page, then press State > Plugin > Locale NFC Plugin. Finally, on the new screen tap the pen by configuration and scan your tag, tick “allow repetitive scan” and you are ready to go!

    1 2



    You get home knowing fine well that one of the first things to do will be to turn on your PC, you’ll have to wait for it to boot, but what if you computer turned on as you walked in the door, ready for when you get to it. Here’s how.

    You will require a Wake-On-Lan Tasker Plugin for this, again I use and recommend the Wake On Lan app, it follows Material Design and is incredibly easy to set up. Once you have installed it, open the app and tap the Floating Action Button, this should start to display all the devices on the same network as you, when you see the PC you want to wake’s MAC or IP (which can be found in Windows using the command “ipconfig” in terminal), tap and name it. Back in Tasker add a new task to the profile you created earlier and add a new action: Plugin > Wake On Lan, again tap the pen icon and select the PC you named in the app earlier. You will want to ensure that your PC has Wake on Lan enabled in the bios and finally place your NFC tag near your door. In my case it sits by my key bowl, the first place I go upon entering my house.

    Image 174


    Driving Mode

    This one is brilliant if you have a phone holder or dock in your car, you can stick the NFC tag to the back of it and it will run whenever you place your phone in it, just be sure to deselect repetitive scan when setting up the tag. This profile will vary from person to person depending on their media and navigation app preferences and even on whether your car has Bluetooth built in, but I will share mine here and you can adjust as you need. Add a tag to a new profile and select new task, you will want to add the following which I have split in to three parts here to make it easier to follow:

    Turn on Bluetooth and GPS and turn off WiFi (This will require the Secure Settings Plugin)

    1. Net > BlueTooth and then set to On in the dropdown,
    2. Net > WiFi and then set to Off in the dropdown,
    3. Plugin > Secure Settings > Configure > System+ Actions > GPS > On > Save

    Turn up Media Volume

    1. Audio > Media Volume > Select a volume you are happy with

    Open navigation and select media when you have chosen a destination

    1. App > Launch App > Maps (or your preferred navigation app)
    2. Location > Get Location
    3. Plugin > Secure Settings > Configuration > Actions > Launch Activity > Google App > [Voice Search] .VoiceSearchActivity > Save

    In the new screen, tap the + by IF  and in the variable box type 4.4, then select the ~ and change it to “Maths: Less Than”, finally select the value box and type “%LOCSPD”.

    This last command will wait until you are driving above 4.4m/s (10 mph) and then launch the Google Now activity, allowing you to say “Play <insert band, playlist or song of your choice here>” You can change the 4.4 variable to the speed of your choice (the units are metres per second) however please be sure to remain safe when driving.


    Display Custom App Menu When at Your Desk

    This will display an on-screen menu with the apps best suited for you and will also keep your display on when fully charged, place the assigned tag on your desk within reach of you charger and simply plug your phone in and lay it on the tag when you sit down.

    Set up the menu overlay

    1. Alert > Menu > Slide timeout to the right until it says “Never”
    2. Layout > Icon Grid Menu
    3. Items > grid > Application Icon > select your chosen app
    4. Repeat for all desired apps

    Keep display on when fully charged

    1. Display > Display Timeout > Set a desired time, I use 4 hours
    2. IF > 100% = %BATT

    I find this helps me beat procrastination by keeping me focused on just the apps I require for work, selecting an app will close the menu until you place the phone on the tag again.

    Screenshot 2016-03-10 at 23.49.51 

    Of course you can set any Tasker Profile to trigger from an NFC tag here were just a few of the ones I use everyday.

    And be sure to check XDA/Android Podcast Episode 15: “Swipe N a Tap and You’ve Got Two Apps” for the chance to win one of 5 LeEco One Pro (SD810)!!!

    Do you use NFC tags with Tasker? Leave a comment below


    by Mathew Brack at March 11, 2016 12:25 AM

    March 10, 2016

    How do I get started developing apps for Alexa?

    iOS Engineer, Ron Lisle shows us the ropes of developing an app for Amazon’s voice assistant, Alexa.

    New to development or a pro who needs help? Just tweet your question to #AskADev. We’ll pick the best ones and have a developer answer them.

    Want to read along?

    Hi I’m Ron Lisle, welcome back to Ask a Dev. Today’s question is from Don. He asks “How do I get started developing apps for Alexa?”

    That’s a great question, Don. Alexa is the speech recognition system running on Amazon’s Echo device. What’s really cool is that a developer can expand Alexa’s speech capabilities by creating what is called a “Skill”. It actually isn’t very hard to do, and the entire process is free. You could even do so without owning an Echo device, but that wouldn’t be as much fun.

    What does creating an Alexa Skill allow us to do? Well, you can design conversations that you can have with Alexa. This allows you to say something to Alexa that will cause it to run a program in the cloud. That program could then access other web services to do just about anything you can imagine.

    For example, in one of Skills I’ve written, I’m having it access the web service to communicate with the devices that control the lights in my RV: “Alexa, tell My RV to dim the kitchen lights.” The Skill that you create can have Alexa respond to you verbally with the results of having run that program, or possibly with information returned by it.

    The really nice part of this is that Alexa handles the difficult tasks of converting and parsing what is said. You define the words and sentences for Alexa to listen for when you define the Skill. Alexa then passes the words to your program to do whatever you want with them.

    So how does this work? There are two main components of a Skill: The Alexa Skills Kit definition The service endpoint

    The Alexa Skills Kit definition defines the words that a user would say to Alexa using the new skill, and the service endpoint is the programming that handles responding to those words.

    To access the Alexa Skills Kit, you’ll need to setup a free developer account on the Amazon Developer Portal.

    For creating a service endpoint, you could create and use your own web service, but Amazon makes this easy using what is called a Lambda Function. This part may sound a bit intimidating, but there are templates available to make this process pretty easy.

    There is a very good getting started tutorial on the Amazon developer website. Go to and select “Alexa”. The tutorial is called “Build a Skill in 60 minutes”.

    The post How do I get started developing apps for Alexa? appeared first on Mutual Mobile.

    by Ask A Dev at March 10, 2016 04:28 PM

    March 03, 2016

    More on the Thirty Second Hook

    With so many games out there, you have to hook players right away. Double Star has a setting that let's you choose between short and long training. My hope was that the short training would get players into the real game faster. Any thoughts? Did it work for you? ... More on the "thirty second hook" here ... Continue reading

    by Bill Lahti at March 03, 2016 02:42 PM

    March 02, 2016

    Android phone as weather station

    The previous post was about a low-cost Bluetooth Low Energy sensor (really, one sensor unit that includes the BLE-enabled microcontroller too costs less than 15 USD and that's just a single prototype, economies of scale come on top of that) and its accompanying Android app that allows obtaining sensor reading manually. That's not bad but manually reading data is sort of inconvenient. If you want to know, what the temperature and humidity was in the dawn, you have to be awake in that early hour. Personally, I prefer to sleep then so I decided to automate the whole process.

    Click here to download the sources of the Android application. The content of the archive is the app/src/main subtree of an Android Studio project. In addition to extracting the sources into the app/src/main subtree, update app/build.gradle like this:

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.jjoe64:graphview:4.0.1'

    The project depends on Jonas Gehring's GraphView project, hence this new dependency.

    So what can we expect from this new app? In case of the app that came with the sensor in the previous post, you started a manual scan and if the sensor was in range, you got the humidity/temperature data. The new app scans and stores data in the background. Once it is started, it sets up a periodic timer (default timeout is 1 hour but can be changed in the settings menu) and when the timer fires, it makes a scan. If it finds a BLE node whose advertisement fits our criteria (e.g. it advertises services with the UUID I allocated) then it extracts the measurement data from the advertisement message and stores it in a database on the device. This variant does not yet upload the data to a server, that may come later. However, it can visualize the measurements on simple graphs, hence the dependency on GraphView. Like this:

    Let's see the interesting bits of this app.

    First and foremost, it is an interesting feature of this application that the BLE layer is used in such a way that reading the sensor is not an extra cost for the sensor. As the measurement data is embedded into the advertisement packets that the device broadcasts anyway, it does not matter if 1 or 1000 phones read and store data. So this sort of sensor network can grow into an entire ecosystem - the more phone users install and use the app, the more precisely the measured quantity will be available once the phones upload their catch to the server.

    If you observe, how the data is stored (, you can recognize an important shortcut that I made: the database structure depends on the sensor being used. This provider depends on the fact that DHT-22 (the actual measurement device) provides temperature and humidity data in the same reading. A different sensor (like the Bosch BME280 sensors sitting in my drawer waiting for their turn) will require a new provider and also a modification of the visualization part. So there's significant development potential in making the app more flexible when it comes to adding a new sensor type.

    The actual sampling of the service happens in BLESensorGWService using the AlarmManager to trigger the scan. Now getting the device awake if it was just sleeping is not a simple business. Observe in the list below, that even though there's always an hourly reading, there's a significant variation when the reading happens.

    In case of our weather reading, it was not a problem but some sensors may have more variable data. A large number of devices reading and uploading would solve the problem of reading time variations.

    GraphMeasurementActivity is the activity that depends on Jonas Gehring's GraphView.  The graphs are very simple so if you have another favourite graph view component, just replace it there.

    So we are at the point that we added sensors to our Android device using Bluetooth Low Energy and created an application that samples them producing nice weather-related data series. The next step will be the integration of a cloud-based data analysis. I am still thinking, which one to go for.

    And finally, the picture of the sensor, in its "weather-resistant" box.

    by Gabor Paller ( at March 02, 2016 07:52 PM

    February 22, 2016

    Double Star game for Android

    Many of you know that I have been working on an Android game. Well, it took me almost 4 years, but it's finally done. Yay! ... The game is called Double Star. It is a space war game --- you against the aliens. The game is turn-based, which means you get a turn, then the aliens get a turn. It's not a game where your reaction time matters. Here's a little preview video: ... Double Star is available in the Google Play store. Continue reading

    by Bill Lahti at February 22, 2016 10:36 PM

    Android as a Prototyping Platform - a Case Study

    I've not been writing much lately here. The reason is twofold:
    1) Android has gotten much better lately and there's much less to complain about. Companies are starting to understand the value of understanding Android design and doing it right. Well.. mostly.. What's up with the new G+ app??
    2) And this is the big one. I've been working to turn my long time passion hobby project into a real product. Me and my friends have been working on a new type of hybrid miniature game called Lands of Ruin which combines two of my passions. Android and miniature gaming!

    We're currently running a Kickstarter campaign for the Lands of Ruin project. Check out the campaign here:

    Anyways, this post is not just a marketing blurb about our Kickstarter (although all support and sharing is much appreciated!).

    During the last 3+ years I've been building the digital part of Lands of Ruin as an Android app prototype. It turns out that Android is an amazing platform for rapid prototyping simply by using native code!

    Background - Process

    Before I jump into explaining how we did what we did let me first explain what it is that we're doing. 

    Lands of Ruin is a tabletop miniature game with a companion tablet app (is that the geekiest thing you've ever heard or what?). It is also something that has not been done before. While there's been couple of hybrid gaming attempts they have been very different nature. In short, what we wanted to is to create a smooth interaction between the physical game and the digital world. How do you do something like that? We had no prior examples we can pull from or ideas to copy. We had to create the interaction from scratch.

    Step 1 - Paper

    Like on any great design project everything always starts with pen & paper. Pen and paper is an invaluable tool for rapid prototyping. You get an understanding what is needed without having to write any code. And best of all you can do it together with others. Two heads is better than the sum of its parts!

    In our case the earliest paper prototypes didn't even try to represent tablet UI. Instead with the pen and paper combination we explored what needed to be tracked and what needed to be automated. Even talking about user interfaces at this point would have been way too early. First, we had to figure out "what" before we could start talking about the "how".

    Unfortunately, I don't have any of the early paper experiments left so I could show you. But in short they mostly reminded spreadsheets on paper.

    Regular iterations

    Very quickly at the beginning of the project we understood that we had to iterate a lot. We had to establish a working routine that worked for an after-work-hobby project. To us the solution was to set a certain night of the week aside for play testing. We decided on Thursday nights and that became the routine for the next 3 years. Every Thursday we played a game with the current prototype and after the game we discussed ideas of improvements and what to do next. Then we set the goals for the next Thursday and separated. We worked through the week to achieve the set goal as well as had brainstorming sessions (usually in a bar) to solve problems we ran into during the week. That has worked really well!

    Not-so-coincidentally we still play every Thursday. Nowadays the game night is usually for guests who come to play the game into our office and enjoy a beer or two. The improvement interactions are still there though. Problems found during these game sessions are noted and hopefully fixed before the next Thursday.

    Step 2 - Functional "What" Prototype - or Proof of Concept

    After the initial paper phase I wrote the very first Lands of Ruin companion app. At this point very little thought was spent on the UI and how it should function. The first prototype was still for understanding what the app needed to do.

    When building something completely new there's one question that is worth answering: 
    "why hasn't anyone done this before?"
    There's approximately three answers to the question:
    1. It's a stupid idea and not worth doing.
    2. Nobody thought about it.
    3. The technology hasn't been there to do it before.

    If you think the answer is #2 you're probably deceiving yourself. There's a lot of people on this planet. A lot of smart people, many of them smarter than you or me.

    To answer the question we decided that we need a proof of concept. That's where the coding started and the result was this:

    Now, the result was far from good UI or intuitive experience but that was never the aim of this prototype. This prototype allowed us to actually play the game for the first time. The limited ruleset and functionality of the app was well defined enough that it allowed us to elaborate how the complete product would feel. 

    Another important step with this prototype was that we were able to get others to play the game. Naturally, the very first play testers needed a lot of help navigating the app and game itself but the experience was invaluable. We were able to get an understanding of the strength of the concept and decided to move ahead.

    I spend around two weeks evenings coding this app. The UI was bare minimum but the core there. Game characters existed, actions were available to be performed and the players' tablets talked to each other over WiFi. 

    Step 3 - Quick Prototype

    Once we had a good enough understanding what we wanted to build it was worth starting to think how to build it. It was finally time to start thinking about the real UI. We had probably around 15 test games under our belts.

    There were still many parts we didn't understand about the interaction. Especially tricky part was the connection of digital world and the tabletop. Our game design required that the app knew approximately where the characters were on the battlefield. 

    We needed more information. The proof of concept prototype didn't provide us any way to test the most difficult design ideas. It was time to spend more time on the app.

    This was the first time we sat down and drew what we wanted on paper. After quick pen & paper iteration it was time to open up Omnigraffle and draw something more concrete.

    At this point it was no longer feasible to play the game with the paper prototype. The Omnigraffle wireframes were discussed in the team and the decision was that it was worth trying.

    The result was this:

    The app was still far from intuitive or beautiful but it had all the functionality the game required in graphical form. The game map was there and it worked. This was the very first time the game was played in the way we intended. We were now 6 months into the project.


    Now that we had more fidelity in our prototype we started finally understand problems we had. While the solutions were still far away the first step was understanding the problem's cause.

    At this point it became painfully clear that handing the characters wasn't easy or pleasant... and if an interaction in a game is not pleasant it's not really a good game at all.

    We started iterating over the design. Not visually - but functionally. We wanted to find enough space on the small 7" screen to have all the components easily accessible. We added sliding drawers for more details and view pagers for easier access to the characters.

    Here's one of the iterations:

    And the next iteration:
    And the next one:

    We kept moving things around, changing sizes, rearranging them. Each step felt like we were closer to the goal. More and more playtesters came by to play the game and the feedback felt better after each game.

    Fragments are awesome

    At this point I want to point out one thing. Unlike you might have heard Android fragments are awesome and very powerful for prototyping.

    Our game UI is completely native Android code still today. As an android developer that's what I know the best and that's the environment I get the best result fastest. Each part of the UI you see in the screenshots is an independent fragment. In the screenshot above there are 5-7 fragments visible at the time. Each fragment knows what they need to show and are subscribed to changes in the central game state. None of the fragments talk directly to each other. All communication is decoupled using an event bus approach.

    This architecture allowed us to iterate extremely fast. The fragment showing a charter always knows how to display that character in the current gamestate no matter where it is located or what other fragments are visible.

    This decoupling and event bus architecture allowed me completely change one part of the UI from one prototype to another without having to worry about breaking anything else as well as completely rearrange the UI and the game would remain playable from one build to another.

    Step 4 - Design

    We had finally enough test games and data that we wanted to take the next step. The current prototype was simply too ugly to show anywhere public. At the same time we saw an opportunity to go to a local maker event, Make Munich, to show the game to the public.

    This was the kick we needed. We decided that the Make Munich event will be our launch event and we would put the app into the Google Play Store for closed beta and hopefully get more people outside our team to try the game. Bring in the Photoshop and visual design.

    Rick, the artist in the LoR team, got the challenge to do our visual design. The resulting UI is here:

    With this UI we proudly went to the Make Munich event and issued a press release telling about the release of the game. This was in the April of 2014.

    Step 5 - Reality strikes back

    After the Make Munich event we evaluated the response we got from the audience and from other play testers. There was no going around the fact that the game wasn't very good. There were several complex rule mechanisms that made the interaction difficult. The app UI was too clunky in many use cases forcing the players to focus too much on the tablet instead of the tabletop and the opponent. 

    As one of our design principles was that the game MUST feel like a tabletop miniature game and the focus of the players should be on the miniatures, terrain and tabletop this was a clear state of failure.

    We had failed on our design goals. What next?

    Well. Back to the drawing board! It was still clear to us that the concept was viable but our implementation was bad. Something had to be done!

    Even though we spent a lot of time on both asset production and design as well as on development we simply had to let go and scrap the current app version. It wasn't what we set to create.

    Step 6 - Try something completely different

    The big problem in the design was that the characters were difficult to access. 

    We had couple of beers and brainstormed what could be done. An idea about drawers popped up and we decided to give it a try.

    A complete reshuffle of the game UI ended up looking like this:

    While the UI looks completely different the power of Android fragments actually allowed me to create this configuration in one evening. All the functional components were still same as before but where they were was different. Due to the fragment architecture and event bus approach no other changes was needed. The game was playable again the next day.

    Unfortunately this wasn't good either and we ended up abandoning this approach very quickly.

    Step 7 - Cards before cards were cool

    The UI just didn't work. The game concept was kept back by the app. We didn't want to make more noise about our game as we weren't happy about the way it felt. It felt wrong. A radical new approach was needed. simple rearranging of component wasn't enough anymore.

    Cards! A lot of tabletop games use cards to represent characters. Maybe a familiar concept would make more sense. There's also many games that handle digital cards. We can find the games we like and see how good interaction is done.

    The first prototype with cards in non-functional state looked like this:

    While we were in unplayable state at this time the concept felt promising. It felt like this could actually solve the issues we were having. It was worth putting the extra time in to see how this works as a game.

    It worked! We were onto something. Week or two later when the game was in playable state we felt that things are finally starting to feel the way we wanted it to feel.

    Step 8 - Making things look polished

    We couldn't go back to releasing an app that looked like it was a complete prototype so after quick iterations with the card concept we decided to do proper design for visuals as well. Rick was forced into asset production mode again.

    The first results were:
    Finally! The app started to feel like it's close to what we wanted. In test games the difference was MASSIVE. The tablet has finally become secondary on the gameplay.. it has became an extension of the tabletop game we had. This was exactly what we set out to create!

    This wasn't to say that the app was perfect but we were finally, after 3 years of development, getting there. This approach was worth polishing.

    In the next iterations we changed the card orientation to better for the vertical stack we used and started providing more information to the players at the right time. 

    Here's what we had:

    Step 9 - Getting ready to launch

    The app now had all the core features of our basic gameplay. We also have a good understanding how to build the advanced features we've been promising on top of this solid core. However, the visuals in the app weren't satisfactory.  Rick, who had done the assets until now, had his hands full on other tasks related to our impending Kickstarter and event demos.

    We reached out to get support from abroad. We hired my girlfriend's sister Natalia Kovalchuk to get the game design up to par and in shape to be displayed in events and in Kickstarter.

    Here is the result of this design iteration:

    Step 10 - Kickstarter

    And here we are. More than 3 years after the initial idea we are trying to get the game into public's attention. We're currently running a kickstarter campaign trying to fund creating the physical component of tabletop miniature gaming.. the miniatures.

    Check out our Kickstarter promo video as well:
    You can see the app in action in the video.

    I would really appreciate if you'd also considered backing our Kickstarter campaign. Even if you're not a gamer dropping a £1 is actually very useful as Kickstarter likes to promote campaigns with higher backer numbers. But why not to get into tabletop gaming with Lands of Ruin? It's never been this easy! 

    I much appreciate your support!

    Please share our Kickstarter page link and help us to make our dream reality. 

    I hope to get back to normal writing after the Kickstarter is over. There are couple of Android apps that have design that needs to get some attention!

    by Juhani Lehtimäki ( at February 22, 2016 06:16 PM

    February 19, 2016

    WallFlix Brings Smooth HD Videos to Your Wallpaper, Now Lets You Add Yours


    We’re always on the lookout for apps made by active XDA community members! If you’ve made such an app, let us know by contacting any portal writer.

    We’ve featured VidWall by XDA Senior Member Flyview in the beginning of the year, but the recent updates have added several improvements and new features. Now called WallFlix, this app still aims to provide you with a collection of HD videos to use as smooth, live wallpapers.

    While live wallpaper apps are not a novel concept, WallFlix distinguishes itself by offering high quality and more lengthy videos instead of shorter loops. All wallpapers also come in two versions: one optimized for portrait orientation, the other for landscape orientation. This means that whichever video you pick will fill your screen regardless of the orientation. If you only use one orientation for your launcher, an option is provided to disable fetching portrait or landscape versions in order to save bandwidth.

    WallFlix currently comes with 13 free and 8 paid wallpapers, though a recent update has also added the ability to use your own videos as live wallpapers for a small fee (sadly). If you want to support the developer, you can purchase that option or subscribe to gain access to all paid wallpapers. A new feature also lets you shuffle through the downloaded wallpapers, either at fixed intervals of time or by single, double or triple tapping your home screen.


    Two important aspects for live wallpapers are smooth playback and battery usage. Fortunately, WallFlix does well on both counts: I’ve noticed no additional battery drain and I’ve been using it for weeks, and playback very rarely stutters even on my three years old flagship, the Samsung Galaxy S4. Of course, that’s not to say WallFlix magically uses no power at all — but rest assured it’s well-optimized not to have any noticeable impact unless you watch your launcher for prolonged periods of time. If you’re still uncertain about using it on your main device, you might consider putting it on mounted devices instead.

    WallFlix Premium Options WallFlix Preview WallFlix Settings
    WallFlix is also free of ads, and has an active developer and community. Head over to the WallFlix forum thread if you’re interested in trying it out, and make sure to leave any feedback or suggestions you might have!

    by GermainZ at February 19, 2016 07:04 PM

    February 02, 2016

    Thermometer application with nRF51822 and Android

    I built quite many prototypes on this blog with RFDuino based on Nordic Semiconductor's nRF51822 and I can still recommend that small development board to people who want to get initiated quickly and painlessly into the world of Bluetooth Low Energy programming. The limitations of RFDuino became apparent quite soon and it was time to get deeper. On the other hand, I wanted to stay with the excellent nRF51822 so I looked for a breakout board - as simple as possible.

    This is how I stumbled into Florian Echtler's page about low-cost BLE development environment based on the nRF51822 and the Bus Pirate programming tool. So I quickly ordered a no-name variant of Waveshare's Core51822 breakout board, a Bus Pirate tool and a bunch of DHT-22 sensors (because I wanted to measure something in the environment). Also note that the breakout board has a connector with 2 mm pin spacing which is not the usual 0.1 inch pitch. It helps if you have a prototyping board with both 2 mm and 0.1 inch pitch like this one which cannot be found in every store.

    Generally speaking, following the instructions on Florian's page was easy enough. I ran into two issues. First, I had no success with the SWD programming software he refers to but Florian's fork (which is based on an earlier version of the programming software) worked well for me. Second, I experienced instability if the GND pins of the breakout are not connected (there are 2 of them).

    First about the hardware. The schematic below show only the parts that are connected to the pins of the breakout board, the schematic of the breakout board itself is not included.


    • DHT-22 is connected to P0.17 which is both input and output depending on the communication phase.
    • P0.21 LED provides a feedback about the BLE activities. This is a convention coming from the PCA10028 dev board that we lied to the Nordic tool chain that we have. You can omit this LED if you want to save some energy.
    • SV1 header is a TTL serial port where the example program emits some debug messages. You can omit this header if you are extremely confident. I use a level converter like this to connect this port to a standard RS232C port. The UART operates on P0.18 (RxD) and P0.20 (TxD).
    • SV2 header goes to the Bus Pirate. Check out Florian's document about the connection. Make sure that this cable is as short as possible.
    Here is how the board looks in all its glory, the Bus Pirate and the RS232C level converter boards in the background. These are of course not needed for deployment, the board runs standalone after the testing is successful.

    Click here ( (nRF51822), (Android)) to download the example programs related to this blog post.

    Let's start with the code that goes into the nRF51822 which can be found in The assumption is that you completed Florian's instructions, including the upload of the S110 soft device. Then unzip and do the following modifications:

    • Edit Makefile and make sure that the RF51_SDK_PATH variable points to the location where you installed the Nordic SDK.
    • Edit and make sure that the paths point to the location where you installed Florian's version of the SWD programmer. Also, make sure that the USB device is correct (/dev/ttyUSB0 by default).
    Now you can say "make" and then "". If all goes well, the code is installed in the nRF51822 and you get debug messages on the serial port. At this moment, the nRF51822 is already advertising the measurements it obtained from the DHT-22 sensor. You can check the content of the advertisements with this test tool.

    The code looks quite frightening compared to the super-simple RFDuino equivalent but most of it is just template. My highlights:
    • Check out in advertising_init(), how the advertisement packet is set up. We transfer the measurements in a service data GAP field and I took the liberty to allocate a 16-bit UUID for it (quite far from the standard service UUIDs).
    • Check out timers_init(), timers_start() and sampler_timer_handler() methods how the periodic reading of the sensor and the update of the advertisement packet is accomplished.
    • DHT-22 sensor handling is done in dht22.c. This sensor has a somewhat peculiar 1-wire interface. Read this document and the code will be easy to understand.

    Regarding the Android code: this is just the app/src part of the source tree of an Android Studio project. I adopted this rather primitive export method as this super-advanced IDE still does not have code export option that its obsolete predecessor, the Eclipse IDE used to have. Check out onLeScan method in to see, how the BLE GAP parser introduced in this blog post is used to take apart the advertisement message and filter BLE nodes that advertise DHT-22 measurements.

    The outcome looks like this:

    Note that each sensor is identified by a 64-bit unique ID (a service of the nRF51822). Now this data just needs to be uploaded into some sort of service and then the big data analysis can start ;-). More about that later.

    by Gabor Paller ( at February 02, 2016 05:37 PM

    January 28, 2016

    honor 5X XDA Review: The Current Vanguard of the Mid-Range Segment

    Screenshot 2016-01-25 09.03.14

    The honor 5X is a device that attempts to push the boundaries of design for the mid-range smartphone segment. For a relatively small sum, it promises plenty of features untraditional of its budgeted competitors. Can the honor 5X deliver the premium value at the small price it promises?

    In this review, we’ll take an in-depth dive into the honor 5X. Rather than listing specs and talking about how the experience felt, this feature attempts to provide a thorough look with contents relevant to our reader base. At XDA, our reviews are not meant to tell a user whether a phone is worth buying or not — instead, we try to lend you the phone through our words and help you come to the decision by yourself. Before getting started, let’s get the specification sheet out of the way:

    Android Version: 5.1.1 Lollipop Model Name: honor 5X (KIW-L24)
    Dimensions: 151.3 x 76.3 x 8.2 mm

    (5.96 x 3.00 x 0.32 in)

    Screen size
    & screen ratio:
    5.5 inches (~72.2% screen-to-body ratio)
    Primary Camera: 13MP f/2.0 Secondary Camera: 5MP f/2.4
    Screen Type & Resolution: LCD, 1080 x 1920, 401 ppi Chipset: Snapdragon 615
    Internal Storage: 16 GB CPU: Quad-core 1.5 GHz Cortex-A53

    Quad-core 1.2 GHz Cortex-A53

    Card Slot: MicroSD GPU: Adreno 405
    RAM: 2GB Battery: Li-Poly 3,000mAh
    NFC: No USB: Micro USB v2.0 (no QC)


    Design ^

    The honor 5X’s most sought-after feature is, without a doubt, its design. For a device that costs only $200, you will not find a phone of this build quality in the United States, and perhaps even in the global market, yet it offers a better all-around package than most phones that go for all-flash and no substance, too. But leaving the substance for later, it’s nigh impossible to deny that this phone has flash — as much flash as $200 can get you right now.

    Screenshot 2016-01-11 12.00.18

    The honor 5X is far from the $200 phone we are accustomed to

    The back of the phone is made of an aluminum alloy with a brushed look that is absolutely smooth to the touch. The device itself doesn’t see much in the way of curves, with only a slight deviation near the sides.

    Nevertheless, the back of the phone is a pleasure to touch and a beauty to behold — it’s simply not something we are used to eyeing or holding in a device of this price bracket. On the back you’ll also find the honor branding, as well as some FCC and manufacturing details. The camera does not protrude more than 2mm, and the bands spanning across the top and bottom are slightly raised as well. This makes the device rock slightly when it is operated while laying on a surface, but not enough to make typing impractical.


    The back of the device also hosts a fingerprint scanner in a slight depression, with some shiny edges . This is a theme all around the phone — the edges on the sides are chamfered, cut and polished with precision akin to the diamond-cut results of the Nexus 6P. The camera, too, has a shiny edge around it. In the honor 5X’s case, they don’t look tacky and compliment the overall design, and the metal back, pretty well. If anything, the only part that looks off are the top and bottom bands, which do not reflect light in the same way the rest of the phone does.


    The front of the device is where the phone makes a radical change, as it goes for an all-white clear look with no capacitive keys nor other distractions, excluding the top earpiece, camera and sensors. The bezels to the sides look exquisitely small at a first glance, but only because of the all-too-common trick of placing a black border around the actual screen. Once the display is on, the side bezel doubles in size. The top and bottom bezel are also not symmetrical, a common pet peeve that Chinese OEMs in particular seem to transgress upon. The bottom feels particularly tall, and with the black frame around the screen even moreso, and very empty (there are no capactive keys). The top does host a decent number of things without having them stick out much. In fact, you will simply not see the notification LED unless it’s blinking, as it is very well hidden despite the white color choice.

    The minute detail and construction are what we expected of premium flagships not long ago

    The sides of the device are where the white front and the metal back mix, and it’s a bit disjointed given that on the bottom you have shiny chamfered edges, but on the top you have the more plasticky white. This doesn’t take much away from the overall quality, though — the buttons, in particular, are some probably the best in this price-range, as they feel clicky, mostly solid, and even have a minute texture. Both the volume rocker and the power button are on the right side, while the left side hosts two slots, one for a micro SIM, and the other one for both a micro SIM and a microSD or nano SIM. This gives you a lot of options and versatility, and the microSD support is particularly welcome given the measly 16GB of storage.


    At the top you will find a noise cancellation mic and a headphone jack that is off centered in both axes, much like most of the details on the sides, and slightly blends into the back, but not in a way that makes it uncomfortable to touch (I am looking at you, Nexus 5X). The bottom hosts a traditional microUSB port, perfectly centered in both axes (only exempt item), the only two screws you’ll find, and the two speaker grills, of which only the right speaker actually does anything (another common trick found in plenty of devices nowadays).

    A few final points on the design: this phone is much larger than it seems in pictures, and the body almost matches up to that of the Galaxy Note5, despite the smaller screen. While it is bigger than it looks, it feels thinner as well, and overall it is comfortable to hold as the edges are not sharp. The lack of a curve, however, makes a noticeable difference — despite similar dimensions to the Note5, the honor 5X doesn’t allow for nearly the same amount of grip (hand-wrapping). Another thing worth noting is that your finger will rest on the volume rocker, not the power button, and even if you use a tap-to-sleep solution on the status bar, you might need to re-position the device to reach it properly. The corners are rounded and I have had no issues putting this in my pockets. Finally, the device comes with a screen protector by default.

    Software — User Interface ^

    The honor 5X comes with Emotion UI running on top of Lollipop 5.1.1, but an update to Marshmallow has been promised. This skin is completely different from what you’d find on most devices in the West, as like many other Chinese-based OEMs, Huawei designed a UI that resembles Android’s competition more than it resembles Android itself. The result is bound to be polarizing, and you will clearly see why in short.

    Lockscreen Homescreen Blurred Toggles Recents Menu

    It is a colorful UI by default, with plenty bright and saturated wallpapers and mellow icons. The launcher itself retains the all-too familiar setup, but without the app drawer we’ve come to appreciate out of traditional OEMs. There are a few options in the default launcher to customize the layout, the transitions between pages, and to allow for loop scrolling. The icons themselves can have badges indicating the amount of pending notifications, a nifty feature that is sadly limited to a handful of system apps. Other than that, there is an auto-alignment as well as a “shake to realign” gesture, which is borderline gimmicky. If you are anything like me, you’ll likely switch to something like Nova pretty early on.


    The system UI has an unconventional look as it completely abandons Material Design, and every aspect of it, for a glass-like UI full of transparencies, blurs, and white and blue outlines. It’s easy to see where Huawei drew inspiration from, and the similarities in philosophy stretch to every corner of the OS. The many features are rounded and the status bar icons are completely redesigned, with a horizontal battery icon and other icons longer than usual. The result is a status bar that is easily crowded on both sides.

    Screenshot_2016-01-25-10-43-59The notification shade is one of the least conventional ones in today’s Android. Incoming notifications are put next to a timeline that specifies the time it was received, and a delete button appears on the bottom to clear all notifications. It’s a strange approach, and the notifications can get crowded. The blur in the background is an effect many like, and that has its own Xposed module to replicate on any device. The effect is convincing, but unlike Samsung’s and Apple’s blurs, it is static, meaning media in the background will not animate (this is likely done to save battery life).

    The tab at the top leads to shortcuts, which you can edit as well. There are many usful toggles, such as mobile data, 4G, a handful of built-in features, hotspot, screencast, and battery saving… even a screenshot button. You’ll also find the brightness bar as well as an auto brightness toggle. The status bar does not theme like it does in most Android devices, as I’ve spotted some odd behavior on apps that do not theme by default, such as Chrome.

    The recents menu completely foregoes the cardstack for a more HTC-like UI, with windows organized in a 2 x 2 grid with the top-left app being the most recent, and with the ability to scroll, lock applications in memory by flicking down and clearing all (unlocked) applications by flicking up. This recents menu also has a RAM counter so that you can keep track of how much memory you have left — a nice little addition that means virtually nothing in the face of the phone’s low-retention abilities.

    General (no battery!?) All of them Stock Android color leftovers Some menus are plain

    The settings menu is spread into two settings — General, which has the stuff you are more likely to use, and All, which has the many, many options out there. This is a good way to not confuse users, as the General tab is quick and simple, and the Settings app remembers your last tab as well. The only odd part is that the Battery menu, by far one of the most frequently accessed part of the Settings, is not in the General tab. The colorful settings menu has many options, with a handy search on top that includes recent searches for good measure. The insane amount of features will be detailed in the section after this one, but I must say that for a ROM this feature packed, honor did a good job at classifying the features and making sure their menus make sense.

    EMUI’s lockscreen is an odd one, with the lockscreen notifications not being set up by default on all notifications. Once you enable them, it becomes more pleasant to use, though, although different themes have different unlock styles, and some are more efficient than others. By default, you swipe to the left side to unlock, and swipe up for a list of quick toggles, like music controls, a calculator, a flashlight… very much like a certain fruity competitor’s.

    Screenshot_2016-01-13-10-00-00 The dark glass can look sleek Not Material Dark Still colorful, but improved

    Last but not last, EMUI allows for theming, albeit not in the same capacity other theme engines offer. The themes are mostly relegated to the palettes of system apps and various UI hues, but getting rid of the base look of the system is not something you should expect. While you can make TouchWiz adopt a more Material Design look, the honor 5X will simply never look like a proper Android device under this ROM. This doesn’t mean you can’t find a nice theme to suit your style, however, and while the clash between a glass and blurry UI and material apps will never be remedied, at the very least EMUI is mostly consistent (excluding the odd Material left-overs) in its design philosophy, unlike Samsung and LG which can’t quite make up their minds.

    Software – Features & UX ^

    The honor 5X is, to put it bluntly, one of the most feature-packed devices I have ever tested. And the fact that all of this comes on such a cheap package is surprisingly to say the least. As far as features go, this device gives Samsung and others a run for their money, as not only does it offer plenty of the same, but the overall execution is well thought-out, and there are some unexpected, innovative jewel-features in there.

    Let’s start with my favorite part: the honor 5X has one of the best fingerprint scanner implementations to date, but not because it’s particularly good at scanning fingers. In fact, the fingerprint scanner is significantly slower (yet not impractical) than the Nexus imprint, Samsung’s Note5 scanner, and that of the OnePlus 2 as well. Rather than use it for just your fingerprint, though, honor tried something unusual and turned the fingerprint scanner into a trackpad that can detect the orientation of your swipes, as well as the duration of your press.

    You can tap swipe on the fingerprint scanner to access your notifications or the recents menu

    To integrate this into the UX, honor has included fingerprint gestures that allow you to swipe down on the scanner to bring down the notification panel — a great feature on a phone this large. You can also swipe up to access the recents menu, making it much easier to switch applications without reaching to the very bottom of the phone (also difficult with one hand). Finally, you can tap it to go back a screen (extremely useful) and long-press the scanner to access your homescreen, but given it’s on at all times, it leads to accidental touches and long-presses, so you might want to enable these contextually.

    There are also screen-off gestures: the beloved double-tap to wake is available, and you can use a custom-solution for your preferred tap-to-sleep gesture to replicate the popular feature-combo. Sadly, it’s not as fast as it is on many other devices, and the fingerprint scanner of the back will likely be your preferred unlocking method anyway (but it is good to have with smartlock). That’s not all, though, as you also have customizable screen-off gestures and shortcuts, which allow for quick application launching, including a fast way to launch the camera. But if you don’t want to do a gesture through the screen, the honor 5X also allows you to double-tap the volume-down button to take a picture without unlocking the phone — after it’s done, it’ll show the picture and the time it took to take, usually between 1.2 and 1.6 seconds.

    The honor 5X also comes with a handy one-handed mode, easily accessible by swiping across the navigation bar. This implementation is readily available and unobtrusive, unlike past atrocities like Samsung’s awkward double-swipe-trigger. There is also a one-handed option for character input, also available in PINs in case you must swiftly unlock the lockscreen with one hand. And if that’s not enough for one-handed usability, EMUI includes a PIE controls clone, activated by tapping a floating bubble rather than swiping from the edge, that can easily be enabled in the quick toggles without digging through settings.

    The settings menus are well sorted, and feature discovery is unobtrusive

    There is also some navigation bar customization apart from the theming, allowing you to configure your navigation keys order and add a notification-bar dropdown button as well. The home button can of course be long-pressed to access Google, but the recents menu can also be long-pressed to go back to the most recent application. This is a beloved feature in many custom ROMs, so it’s nice to see it implemented by default, especially considering the overall UI navigation performance in this phone is lacking (more on that below).


    The settings menus are well sorted, and feature discovery is unobtrusive. Because of the sheer plentitude, there are many you are likely to not stumble upon with a single read-through, but they are tucked away in the “more” sections, or properly distributed among specific sub-menus. There are other small things worth pointing out: you can prevent applications from automatically launching, and customize their notifications (where they show up, and how they show up). You can also lock applications so that clearing all recents won’t get rid of them, and if you don’t want to see them again, you can completely uninstall Huawei apps (but not System apps). The status bar’s bluetooth icon shows the battery of the gadget you are connected to, which is useful with bluetooth headsets and the like. There is also a pocketmode that uses the proximity sensor to prevent accidental touches inside your pocket. The few issues I found with features I found with built-in applications, many of which are redundant (mirror apps? really?), and others which I instantly replaced.

    Looking past that, EMUI packs plenty in a packaged that does not seem nearly as cramped as other UIs like TouchWiz and ZenUI. Many of the features found here are the kind of things enthusiasts flash and root for, so it’s nice to see them by default, even if they come with things not many will use and with such a polarizing user interface.


    The Snapdragon 615 inside the honor 5X was already met with plenty of disapproval in earlier devices, namely the Xiaomi Mi 4 and the Moto X Play. Both of those, and others with the 615, have faced criticism of throttling and overheating, on top of the SoC not being as powerful as older flagship chipsets like the Snapdragon 800 and 801. The Snapdragon 615 initially lured consumers because of an 64-bit octa-core configuration — on it’s face, this can sound impressive, but it’s also worth considering that unlike the other big.LITTLE chipsets of 2015, the 615 only has A53 cores, and no A57 high-power cores. This is, in my opinion, an important detail worth noting and I believe you’ll see why it’s relevant in the sections ahead.

    The Snapdragon 615 is designed to be a mid-range chip and it simply cannot presume to be more than that. The fact that this device exclusively uses differently-clocked A53 cores would mean that, in theory, the power-efficiency of this device would take a front seat, as it sacrifices performance by offering no powerful cores in its clusters. My results seem to confirm that the Snapdragon 615 does, in fact, offer less performance but surprising battery results.

    CPU & System ^

    As stated above, the Snapdragon 615 sports eight cores, spread among two clusters, one clocked at 1.5GHz and the other one clocked at 1.2GHz. With there being no big architectural  difference between the clusters, one mustn’t worry about cluster migration nearly as much as on other devices like the OnePlus 2, where a switch to the A53 cores meant a huge sacrifice in performance. In my results I found this translated to more consistency, but obviously lower maximums. The Snapdragon 615 as seen on the honor 5X offers a different experience, which I’ll expand on shortly. First, let’s look at some numbers.

    PCMark (Photo Editing) PCMark (Video) PCMark (Web) PCMark (Writing)

    PCMark (Overall)
    The standard set of benchmarks shows that the Snapdragon 615 on the honor 5X falls below all 2015 flagships, and also below plenty of 2014 and even 2013 phones. That being said, it does outcompete the Snapdragon 410 found in many other budget devices, and also the MT6753 processor favored by plenty of phones within this price-range on CPU and GPU metrics. Sadly, alternative 2015 “mid-range” processors like the Atom Z3580 absolutely outperform this device in terms of both theoretical performance and real-world performance as well (more on that below). The scores we see here are nothing to write home about, but at the very least they are higher than what most phones at this range can muster.

    Onto throttling: due to the issues regarding throttling and performance on previous 615 devices, I came to testing the 615 with low expectations That being said, I’ve been surprised with the overall resilience of this device. Honor has achieved something unexpected with the honor 5X, as even when pushing it to its limits, the device has not throttled significantly, and certainly not nearly as much as higher-end Qualcomm-bearing devices I’ve tested.

    20160123_212237 20160123_212248 20160123_212301 20160123_212334

    Even 30 minutes of continuous Geekbench, a strenuous test that submitted devices like the OnePlus 2 and Nexus 5X, produced no significant nor clearly-stratified drop in results, and the temperature didn’t exceed 40 degrees Celsius in the body, with the top of the device generating more heat due to the SoC location, yet the bottom being almost as cold as it was when the test began. From this testing I infer that the metal body of the honor 5X, as well as the internal configuration, allows the device to not hit the infamous temperatures other Snapdragon devices have reached under the same testing and similar conditions, and also avoid the consequences.

    GPU & Gaming ^

    The Adreno 405 found in the honor 5X might have a higher number than what we saw in chipsets such as the Snapdragon 801 and its Adreno 330, but that shouldn’t fool you. In fact, high-performance tests such as GFXBench’s Manhattan ES3.0 output about half the frames-per-second of devices like the M8, which also runs at the same resolution. The same disparity carries onto other tests like T-Rex on both on-screen and off-screen results. And as expected, 3DMark scores and all of the graphics breakdowns of every other benchmark also put the Adreno 405 way below old flagship chipsets.

    GFBench Onscreen GFBench Offscreen

    But putting the GPU into proper perspective — that is, against the competing GPUs of other budget chipsets, shows that it is still ahead of the output from the Mali T720 and other lower-end GPUs. This is also not to say that the Adreno 405 doesn’t produce decent graphics results. Indeed, this chipset is still running 1080p. Even though the GPU underperforms in comparison to the chipsets that arguably mastered this resolution, it actually is comparable to the generation before that (the Adreno 320 of the Galaxy S4 and HTC One M7) in raw output, closely matching the results in GFXBench scores and GameBench.

    Asphalt 8 Modern Combat 5 Modern Combat 5 GTA: San Andreas (max settings) Dead Trigger 2 GTA:SA Usage

    Speaking of gaming, the honor 5X is nothing to be surprised by, but it still shows competency in the “high-graphics” games we routinely test. Games like Asphalt 8 and Modern Combat 5, despite their popularity as the “ultimate game benchmarks”, are rather optimized and most phones have no trouble hitting 30FPS (a popular cap). The honor 5X does indeed hit the 30FPS average on Asphalt 8 (and the framerate jumps above, something not seen in clearly-capped test runs I have submitted in other reviews).

    gta sa framerate

    Around 10 minutes of GTA: San Andreas (maximum settings)

    Modern Combat 5 comes close to the 30FPS cutoff, while Dead Trigger 2 and GTA:SA (max settings), more demanding games, significantly underperform in comparison to 2015 flagships, with the former hitting half the framerate of 810 and Exynos 7420 devices, and the second less than half. That being said, I have found no clear-cut throttling even in lengthy GTA sessions, a stark contrast to the 3-minute throttle I found on the OnePlus 2 and Nexus 5X.

    As a side note, and to back up my claims about the honor 5X being below the threshold of required graphics output for a smooth 1080p experience, I downgraded the resolution to 720p using adb and shell commands (unrooted) and re-did the benchmarks. The on-screen results of GFXBench doubled (from 6FPS to 12FPS), and overall UI performance was smoother (not faster) with significantly fewer framedrops. The ROM’s more-consistent framedrop instances remained, however, suggesting that the issues surrounding this phone’s performance have to do with both the processor and the unoptimized EMUI.

    Storage & RAM ^

    storageThe honor 5X comes with just 16GB of storage, a number that is significantly lower than the current standard of 32GB, and even more-so when you consider the significant space the OS itself takes. That being said, the honor 5X does come with a microSD slot which you can use to expand upon the low base amount. I personally hit the 16GB cap twice during my two-week review period; once when downloading benchmarks to test the device, and another near the end of the run, as the space just got filled with media and other downloads.

    It’d be nice to see a higher base-amount, and I hope that Huawei considers 32GB for whatever next mid-range comes along. The microSD is useful, but considering the honor 5X comes with Lollipop and not Marshmallow (for integration), it’s limited in comparison to what Android can offer on other devices.


    Oh, the irony

    As far as speed goes, the storage is rather slow, even when compared to other inexpensive devices we’ve reviewed. As it stands, sequential read and write are close to half the speed of the faster storage solutions we’ve reviewed. Random read and write are closer to the 2014 standard than that of 2015, and close to two times slower than the UFS2.0 record marked by the Note5. I haven’t found this to be a significant issue in day-to-day operations, but I know those that expect a pleasant ROM scene on any device would prefer faster storage.

    honor 5X honor 5x Elephone M2 Elephone M2 OnePlus 2 OnePlus 2 Note 4 Note 4

    The RAM amount of the honor 5X is a simple 2GB, well-below the current standard of 3GB, and half the 4GB amount that will cement itself as the new average in 2016 flagships. For a mid-ranger, it’s not bad at all, and only a handful of Chinese devices managed to cram in more at the same price-point. Without open applications, the available memory is close to 1.25GB, and EMUI does offer the ability to disable app auto-launching, and to lock apps into the recents menu. There is a handy RAM-count in the recents panel as well, but despite seeing a high amount of open RAM, this number is as misleading as it is on other devices, given the app cut-off seems to be around 5 running apps before one must be re-loaded.

    Real World Performance ^

    Note: Unlike in other reviews, I am not able to provide many screen-recorded samples because when using screen recording services, this devices drops more frames than usual. I assume this has to do with graphics performance, but I was unable to confirm.

    cpuspyIn a nutshell, the only way to describe the Honor 5X’s real-world performance is “acceptable”. For a device competing in the mid-range space, while it doesn’t offer anything comparable to a flagship, it is certainly better than many if not most of it’s similarly-priced competitors. That being said, it’s still not as good as a performance-per-dollar as older mid-range devices that are better optimized, like those found in the Moto G line. I’d also say that in terms of overall performance, devices like the ZenFone 2 (2GB) give it a serious run for its money.

    This is likely because of both the Snapdragon 615 and the UI that’s present here. To be fair, performance issues have been found on many Snapdragon 615 devices, and this one is not the exception. But the heavy UI certainly doesn’t help, and given the lack of clear throttling or heat generation in the benchmarking and gaming tests I did, it’s likely more about the software than the processor.

    To cite some examples of performance issues, there is not just the typical stutters and framedrops, but also extremely consistent framedrops and animation lag in the recents menu and certain UI transitions; an example is the framedrops in the recents button press animation, as it happens every single time.

    Screenshot (01-13PM, Jan 25, 2016)This makes the overall experience feel janky at times, but not to the point where it is unusable. In any case, I’ve found that rebooting the phone was a quick way to re-establish some performance that is lost after much uptime. The honor 5X also provides many memory-cleaning and performance-optimizing options and settings, but none are able to change much. Keep in mind that the device comes on a power-saver profile by default, but this review was done under the balanced profile.

    While the animations are janky, the overall speed of the phone is not bad — in fact, I found the phone much more pleasant to use after disabling all animations, which made summoning apps in-memory instant, and also sped up launching them cold a little more. The recents menu is still not as fast as fluid as on other phones under this state, including the similarly affordable ZenFone 2 (2GB). That being said, if you are not planning on doing heavy multitasking and productivity-oriented tasks, the honor 5X is as good as any other phone under $300. It’s only when you try to push the phone a little more that you find issues:

    Under heavy usage, the honor 5X does not compare to higher-end devices, or the more optimized mid-rangers we’ve seen last year. While no mid-ranger smartphone is going to give you a productivity powerhouse, I found the honor 5X impossible to use for editing on the fly, for browsing docs and sheets, or for heavy web apps. This was in part due to the apps themselves, but mostly due to the unpleasant delays in app-switching — even when the multi-tasking menu decides to launch swiftly, it won’t instantly respond to touch, meaning I often must click a second time. As far as web-browsing goes, you might want to use the built-in web browser if you plan on using a heavy web app or otherwise doing resource-intensive navigation. If you want to use your phone without frustration for prolonged periods of time, the honor 5X will likely make you wait

    Display ^

    The screen of the honor 5X is typical for a phone these days — 5.5 inches diagonally, 1080p resolution, IPS LCD. Typically is not the only word to describe it, as it’s fairly average as well. At a first glance, and on my first few moments with the device, the screen looked fairly beautiful, but that’s the intention behind every OEM’s first impression with the device. After changing the wallpaper from the carefully-picked and beautiful stock images, designed to show the display’s best strengths, I came to realise the screen is the standard offering for inexpensive phones.


    In terms of brightness, it does a fair job in the real world, and I had no issues even with the hyper-reflective snow of Minneapolis on the sunnier days. It doesn’t get as bright as the latest generation of AMOLED panels, particularly when they go past their regular cap on auto-mode, but text was readable under the most intense sunlight I came across. That being said, I certainly can’t help but doubt it’d hold up as well as other screens in very sunny regions. It’s also worth pointing out that auto-brightness is adaptive, so you can adjust the slider.

    20160125_141048 (1)

    Screenshot 2016-01-25 06.50.04As for the display itself, the colors are a bit more saturated than I personally enjoy, with a clear contrast against the well-tuned AMOLED Basic mode of the Note5. This does help the stock wallpapers, and plenty of content, look very pleasant, and I know many appreciate the look — but the difference is there. Luckily there is not much distortion when looking at most colors at an angle, with blue having the clearest casting. The whites look nicer and colder than the Note5’s Basic Mode, and you can also adjust the color-temperature, so I don’t have many complaints on that regard.

    There is no light-bleed on my unit, and the screen is consistent all across. The biggest downside comes with darker colors and blacks, which are pretty bad even for an LCD, and the issue is only reinforced by the black borders surrounding the screen. Black is also the worst part about the display at an angle, with most other colors seeing less of a variation and making that of the navigation keys and other black regions stand out significantly. Because of this, the average contrast of the honor 5X takes a hit when you look at the screen from an angle.


    The blacks don’t hold up at an angle

    Overall, it’s an average screen. I personally think that a more Stock-based color palette would do it a better service, as EMUI is too colorful by default and even with themes, the blur does not look as good as the solid colors of material design, under a palette that benefits all sorts of screens.

    Camera ^

    The camera on the honor 5X might have the same sensor as affordable but brilliant smartphone cameras like that of the OnePlus One, but after using it for two weeks, I must say its results are rather underwhelming, especially when factoring in the user experience. The camera has a UI that seems simplistic, with the ability to slide to the side and arrive to a Good Food mode and a Beauty mode on the gimmicky side, and video and time-lapse on the useful side. There is a gallery shortcut, and a bunch of filters. There are more features tucked behind the menu button, though, including HDR (why would they put it there?), a mode to adjust focus after the picture’s taking, slow-mo, Panorama, and Best Photo.

    The fact that HDR is tucked away is secondary to ISO, white balance and other image adjustment settings hiding after yet another menu, making on-the-fly tuning much harder. This is not to say that the camera software has no merit: you can customize the actions of volume buttons, there is decent object tracking, it can automatically capture smiles, and there is an “ultra snapshot” mode that allows you to take a picture from deep sleep by double-pressing the volume down button, resulting in snaps in less than 1.5 seconds. All of this is nice to have, but as seen above, focusing and picture taking is not very fast, and the actual results vary too much.

    One thing I’ve noticed, and that you can also see in the UI video above, is that the post-processing makes colors either too cold or too warm depending on where you tap to focus, and this makes for some awkwardly distorted colors. Beauty mode and Food mode also completely distort images, and while that’s kind of the point, the results are very unrealistic and not too pleasing. The camera can pick up a good amount of detail, but the exposure usually plays against it by not generating enough contrast to make it stand out.

    Natural light Natural light Natural light Natural light Dusk Indoors Indoors Don't judge me Foodie Mode Medium natural light Medium natural light HDR Detail Detail (Note 5) Detail Detail (Note 5) Detail Low light

    Low light photos are also really blurry, and middle-to-low light and indoors shots have noticeable noise in grey and dark areas. But when you grab some good natural lighting, the camera can output some pretty nice shots, with just the right exposure and background blur. I found that I managed to get better shots of objects than landscapes, but I admit I am not the best smartphone photographer. A good way to pick up more detail on the honor 5X is with HDR, which luckily does not over-saturate colors and in my testing has properly brought out more detail from shadows (as you can see in the picture of the red house).

    Video is OK, and perhaps the most limited part of this device. It can record 1080p at 30 frames per second with no hardware stabilization, and you can judge the results in the video above. It’s also good enough for filming puppies indoors, for whatever that’s worth. There is not much to write home about here, but it gets the job done without merit nor shame in a space where few competitors like the Moto G (3rd Gen) can claim to provide an above-average camera experience.

    Audio ^

    The bottom speaker of the 5X is one of the more underwhelming aspects of the phone as it is extremely average in terms of performance. First of all, despite two speaker grills, only the one on the right produces any sound — an all-too-common trick that even big manufacturers succumb to. That said, the device doesn’t need two speakers to get loud. The phone can produce some high-volume output, but not without sacrificing some quality. As the sample before shows, using the Note5’s speaker as a reference for both volume and clarity (same conditions), the honor 5X shows similar volume but significantly different clarity.

    The headphone experience with this phone isn’t too bad, though, and the microphone is decent for regular phone calls as well. I haven’t received any complaints on the other end, and I’ve used it at least an hour every day for calls, although it is clearly not noise-free. You can find a microphone sample below, with the Note5 playing the reference again under the same conditions. Do notice the slight to medium noise in the quieter moments and on top of my voice.

    Battery Life & Charging ^

    The honor 5X’s battery life was perhaps the most surprising part of my testing period. Simply put, the device completely surpassed my expectations by delivering insane amounts of screen-on-time and idle time, even during the days that I played heavy 3D games or tried pushing the phone to its limits. While a 3,000mAh Li-Poly battery might sound puny in an age where many are venturing past 3,500mAh, the honor 5X has offered me some of the best battery results I have tested so far.


    Not only did it average over 8 hours on PCMark, but it also did so with remarkable efficiency

    I can only speculate why this is; the phone does only employ A53 cores, which are power-efficient and usually focused on battery-saving. It also has no shortage of battery saving options, but I never actually used the power-saving profile nor the ultra power saving mode. In fact, the device came on a battery-friendly profile which I changed away from as soon as I found it during my first hour of usage. That being said, I suspect that the phone doesn’t sync as often as other devices, even when running the balanced profile, but I was no able to determine this with absolute certainty.

    PCMark (Battery Life)

    The battery benchmarks I did on this device show the expected results, with PCMark outputting a beastly 8 hour average, a score only rivaled by efficiency-juggernauts like the Note5 (similar score) or phones with massive batteries. Video playback on the honor 5X also allowed for over 10 hours of movies and 7 hours of youtube.

    Example 1 total Example 1 SOT Example 2 total Example 2 SOT Idle Time Overnight

    I never managed to fully kill the phone with a single day, usually hitting around 4 hours of SOT by the time I got to bed with close to 40% battery life left. I simply haven’t been able to deplete it, not even with heavy usage, gaming and benchmarking. My regular usage mostly consists of Reddit, Youtube, Chrome, all of the Google Docs suite (which as I mentioned earlier, I didn’t use too much given the phone’s productivity-crippling UI performance), navigation and games (Crashlands!). Idle times were also excellent, with slightly above 1.2% battery drain per hour on LTE, and a surprisingly-low 0.4 to 0.6% drain per hour while sitting overnight on wi-fi. I haven’t had any issues with wakelocks, and I honestly never worried about this phone’s longevity during the day. Which is good, considering the phone has really limited charging options.

    ampereThe honor 5X foregoes both fast charging solutions and wireless charging (as one would expect), which means that charging this phone is nowhere near as quick as some phones get, and with Quick Charge 3.0 coming with the Snapdragon 820, the gap between the honor 5X’s charging time and the fastest out there will significantly widen. Using Ampere, I found that the battery would only take close to the 1A it is supposed to take even with fast chargers (2A), and significantly less on high-percentages. If it wasn’t for the surprising battery performance of this device, such prospect would be troubling.

    Thoughts on Development & Future Proofing ^

    Because this device practically just launched, we still haven’t seen much of an impact in terms of development, and at the moment there is very little we know about its future support by the community — if you want to help or discuss, please visit the official forum. What we do know is that the honor 5X will receive OEM support. Firstly, the kernel sources have already been released, allowing interested developers to take a peek and tinker. Huawei also allows bootloader unlocking by downloading a tool in their EMUI site. Finally, we know that the device will receive updates including Marshmallow, and it has already received a security patch (I have not installed it yet) in preparation for launch.

    It’s also worth noting that there has been some development for other Huawei and Honor devices that has brought AOSP-based ROMs to them. The honor 4X, for example, has unofficial CM builds despite its Kirin processor. Considering the honor 5X has a friendlier Qualcomm chipset, chances are someone will get an AOSP ROM (or otherwise, a CyanogenMod port) running on it. I personally hope that’s the case, because a ROM that’s more akin to stock would, in my opinion, tremendously increase this phone’s value to western power users.

    The biggest future-proofing constraints come at the hand of the phone’s hardware, a sad state of affairs as they cannot be circumvented by OEM support or the cleverness of XDA developers. The phone has no NFC, meaning you won’t be able to use it with the ever-growing Android Pay. It also lacks a gyroscope, which limits some of its Virtual Reality potential. There is no band 12 for T-mobile, and there is also no 5GHz wi-fi. The phone’s battery is non-removable, it lacks wireless charging, and it simply isn’t a fast charger when wired either, at a time where manufacturers are trying to out-do each other in charging times.

    Conclusion ^

    The honor 5X is a device that tries to do too much and asks little for it. This phone is now the vanguard of the mid-range segment, and I don’t think I am going on a limb when I state that it is, perhaps, the most “valuable” affordable smartphone, especially against other $200 phones and when much of its competition still has not caught up to it in terms of physical design and hardware. This is one of the cheaper devices to offer a fingerprint scanner and a metal body (especially in the west), and given it packs both, it’s no wonder that this combination makes for the slogan of the phone’s marketing campaign.

    The device does have its shortcomings, and it is certainly well-behind what we come to expect from flagships in almost every aspect. Because of this, it does not fall in the “affordable flagship” category, but in that of a “premium mid-ranger”; frankly, I feel that the line between these two labels blurs with every release. But for now it is a crucial distinction, because saying this is a traditional flagship would be a lie, yet just calling it a mid-ranger would be a severe understatement. I cannot avoid admitting that because I primarily look for productivity, I am not within the target demographic of this device. Its performance and resulting user-experience are very different from what I’ve grown accustomed to. Yet I do see a lot of potential in the actual features of EMUI, and the phone itself is one of the most pleasant devices I’ve looked at, ever.

    It’s simply unbelievable that this phone is $200, and everyone I showed it to expected the price-tag to be much higher. One would also expect the low cost to come at the expense of plenty of hardware, but other than excluded components such as NFC and gyroscope, the phone is around the standard or above the average in almost every aspect when compared to competitors in the same bracket. For less than the price of the latest Moto G, you get a better screen and a significantly bigger battery with good results. The audio and storage come off as the weaker points in terms of hardware, but cheap phones are not traditionally renowned for good storage or audio either.

    By far the most polarizing aspect of this device is its user interface, which I’ve seen many people dub an “instant turn-off”. Again, I must say that the overall UX of EMUI is not my cup of tea. I welcome the useful features the UI brings, but I do question whether the sacrifices in performance and aesthetics make the usefulness a worthy trade-off for those looking to use this device for more serious use-cases.

    I am inclined to say no, but I know for a fact that many users, particularly those looking for a phone in this segment, would be enthused to have so many of the features this phone has – again, plenty of which is the kind of stuff we root our phones for – and in such a stunning chassis to boot. But on that note, the future development for this device is still uncertain. We know it’ll be officially supported, that sources will be available, and that the processor is one of the friendlier ones. The activity on XDA will ultimately be determined by the impact this phone has on the market, particularly among the demographics it targets.

    One thing is certain: this phone packs incredible value for just $199, and anyone that wants a beautiful phone chock-full of features for a steal should consider the honor 5X and the immense amount of things it offers. Those that are looking for a more traditional, solid experience and are willing to fork out a few extra hundred, though, have many options to consider.

    Be sure to check out our contest to win a honor 5X!

    Check Out XDA’s honor 5X Forum >>

    We thank honor for providing XDA with review units of the 5X. While we worked with honor to help promote the honor 5X on XDA, this review, and all content you’ve seen about the device, was unaltered and uninfluenced by them.

    by Mario Tomás Serrafero at January 28, 2016 02:52 PM

    January 04, 2016

    VidWall Sets HD Videos as Smooth Wallpapers


    We’re always on the lookout for apps made by active XDA community members! If you’ve made such an app, let us know by contacting any portal writer.

    Android gives us plenty of ways to customize our devices, which many of us have turned into a hobby by constantly trying to find the best custom ROMs, themes, third-party launchers, icon packs and wallpapers. The last is the easiest to modify, but still provides one of the biggest changes.

    Live wallpapers take it a notch further by allowing you to have animated (and sometimes interactive) wallpapers. XDA Senior Member Flyview decided to leverage this Android feature and make VidWall, an application that offers a set of high quality videos for you to use as live wallpapers. It sets itself apart from the competition by offering full HD and more lengthy videos instead of only short loops. The clips do not loop perfectly, though, but the cutoff is good enough to be both convincing and pleasant.

    Despite this, the playback was still very smooth even on a three years old flagship (Samsung Galaxy S4). The available selection is still somewhat limited at the moment with six videos you can choose from for free, but it’s still growing and more videos will be added in the future.

    It’s also worth mentioning that both portrait and landscape orientations are supported: except for the Christmas wallpaper, whichever video you pick will fill your screen regardless of the orientation. Battery usage is also minimal, and you’re unlikely to notice decreased battery life while operating your device normally.

    Last but not least, VidWall is free and without ads. If you’d like to support the developer, one additional paid wallpaper is also available for purchase. Simply head over to the VidWall forum thread if you’re interested in trying it out, and let the developer know about any suggestions or comments you might have!

    by GermainZ at January 04, 2016 05:22 PM

    December 27, 2015

    Jide Remix Ultra Tablet Review: Multi-window Done Right


    Jide may not be the OEM that first spring to mind when considering a new tablet, but the crowdfunding-born company produce one of the best productivity tablets available. Renowned for their heavily customised version of Android, Remix OS brings a level of multi-tasking never seen before on Android. Their massive Ultra tablet has had time to receive many updates and bug fixes by now, so lets take a look at what it has to offer.


    Model: Jide Remix Ultra Tablet
    Display 11.6” Full HD IPS 1920 x 1080p
    CPU NVIDIA Tegra 4*1 A15 Processor 1.81GHz
    GPU Tegra GPU GeForce ULP 72
    Storage 64GB
    SD Card Support Yes
    Size 189mm x 295mm x 9.5mm
    Weight 860g
    Battery 8100 mAh
    Camera Front: 5MP Rear: 5MP


    Design & Build Quality ^

    When I received the tablet from Jide I was taken aback by the effort that had gone into the packaging. I have received many devices in plain brown card boxes with nothing but a product name and serial number before and that is not something that bothers me in the slightest. Removing this tablet from the shipping material I felt something I haven’t experienced for a long time, excitement the box itself was very much like a gift. A large white box made of a thick white cardboard, in the top was the word “REMIX” embossed and inlaid in silver, the bright blue seam running at angles to the box around the edge. This is certainly not something I require from my devices, but is it something I appreciate? Yes.

    The glass front of the device is a standard affair, a thick black bezel surrounds the 11.6 inch IPS display broken only by the camera and microphone in the top center and the Jide logo center of the bottom. Beware fingerprints do stand out incredibly well. The left side of the unit features a nice wide black volume rocker with a silver chamfered edge and a large 3 part speaker grill. The right side of the device is note-worthy, alongside the 2nd speaker grill, micro USB port and headphone jack is the proprietary magnetic charging port a long narrow slot with 4 gold pins. Usually I dislike proprietary chargers however in this case it charges much faster than the micro USB alternative, frees up said USB port for an

    OTG device and the addition of magnets allow for a more nonchalant approach to charging. It is perfectly feasible to move your tablet in the direction of the charger give a little shake and it will happily snap into place. The back of the device features a classy sheet of aluminium which not only looks and feels great but also does a spectacular job of heat dispersion. This is broken by a hinge at the 1/3 point to provide an adjustable kickstand that will rest at both 40 degrees and 80 degrees.

    IMG_20151222_171834 (1)
    IMG_20151222_171845 (1) 

    The units most noticeable feature upon picking it up is the weight, weighing in at 860g/1.9 lbs, this means that you will be making use of that kickstand as most people will be uncomfortable holding it without support for extended periods.

    Remix_05The tablet ships with a detachable magnetic keyboard, featuring 81 keys with a travel distance of 1.2mm meaning that typing is very tactile. Most of the standard shortcuts are supported including Ctrl+C, Ctrl+V, and Ctrl+X. The keyboard easily folds up over the screen acting as a cover when the device is not in use and a soft felt finish to the palm rest and trackpad ensure that the screen is not scratched by the keys when closed. When being carried around the keyboard can be attached in reverse, covering the rear of the tablet and keeping it out of the way. A few noteworthy points are that the keyboard only ships with the U.S. configuration meaning that users in other countries may have to become accustomed to the different key placing. Secondly, to use the keyboard the tablet must have the kickstand out or be laid flat meaning that work on your lap is difficult due to space requirements.




    Software, UI & Features ^

    I have never been a strong advocate for multi-window in Android before, I have certainly used it but have always stopped using it after a short while. I felt that it was an unnecessary feature that was until I used it in Remix OS, resizable windows that can be minimised and brought back with a touch may not be something that I could ever feel the need for on a phone but on a tablet it just feels right and is certainly something that should be integrated on Android devices with larger screens.


    The UI is closer to that of a desktop than most Android tablets. The taskbar allows app management in a manner that will feel familiar to desktop users with app pinning, switching and minimisation available with just one click. The ability to resize and freely move apps really allows for mostly flawless multi-tasking and therefore increase productivity significantly.  As can be seen in the screenshots, opening a song detection app while watching TV, reading guides while playing games, or discussing media as you watch are all simple tasks. With some minor bug fixes (see below) I could happily see myself using Remix OS on a desktop instead of my current ChromeOS.

    Screenshot_2015-10-14-15-51-59 (1)

    RemixOS itself is very different from stock, the major alterations to the system have necessitated some changes such as the addition of a task bar. The notification drawer has been changed to make use of the space better and the settings menu has been skinned to look like Windows. This also means that you are unable to use a 3rd party launcher (we tried and failed to find one that would run).

    Screenshot_2015-12-26-22-41-34 (1)

    I did note a few issues:

    • Chrome for Android is automatically set to display the mobile version of sites, which means many sites will not display correctly on such a large screen. This can be fixed easily enough though and is an issue with Chrome not Remix OS.
    • Some apps refuse to work and can even necessitate a reboot, Hangouts for instance will not open in windowed mode but will instead remain open in the system but disappear from view, as the tablet will then remember that you wanted it opening in windowed mode you will have to uninstall hangouts and reinstall in order to use it again.
    • Inbox by Google will open, but the bar allowing you to move the window around doesn’t appear with it so it’s stuck taking up the centre of your screen.
    • apps that need to run in the background in order to provide you with notifications such as: social media apps, messaging and email. Will not function correctly out the box, I realised quickly that unless an app was open I would not receive notifications and could not find a solution. After a lengthy search of the Jide forums and searching through the countless threads of people with the same issue I came across a simple answer. Apps were automatically not allowed to run in the background, the solution lies inside the “power manager” app, where you can whitelist apps.
    • Some apps such as Hangouts (again) have issues with scaling on a device with an 11.6″ display, meaning that because the app must be run in full screen most of the screen will be blank space.
    • For some reason if you have Google Play Movies open you are unable to access the notification tray, and any attempt to do so will result in the tablet crashing and booting you to your lockscreen. This means that if you want to quickly check if you have messages or if a file has finished downloading you are unable.

    Performance & Memory ^

    Screenshot_2015-12-27-00-46-42 Screenshot_2015-12-27-00-38-24

    The device as can be seen from the specs is certainly not a gaming tablet, it is designed for efficiency through multi-tasking and work. If gaming is your thing games do look glorious on the 11.6″ display and the vast majority will run fine, but you may notice occasional lag and frame skips. AnTuTu returns a mid range score of 41341 while Basemark OS II placed the device just below the 2014 Samsung Galaxy A5 Duos, a little disappointing for spec addicts like many of us, but not something that I actually noticed that much. To explain it simply, I would say it was adequate for day to day usage, and more than sufficient for working, whether it be in the office or the classroom. Apps such as Microsoft Word and Google Docs work great alongside others such as chrome, Remix OS does a great job of handling multiple apps at the same time even with 2GB of DDR3 RAM.

    PCMark places the device right above the ASUS Memo Pad 7

    GFXBench places the tablet alongside devices such as the LG G4 Stylus, the Zenfone 5 and the Nokia Lumia 1520 on the high-level tests. However on the low-level tests the device is placed with the HTC One M9 and the Galaxy Note 10.1 and Pro 12.2.


    The User experience of the tablet is harboured on occasion by seemingly random crashes and other such errors as can be seen below. On occasion closing a full-screen app will reveal a black screen, with no access to the taskbar or app drawer requiring a reboot in order to use the tablet again. I have seen that from time to time unlocking the tablet will result in a “process system isn’t responding” notice followed by being booted back to the lock screen, rebooting tends to rectify this issue. These issues appear to have been rectified in recent updates.


    Display & Audio ^

    The full HD display is a clear and bright outfit and at 11.6 inches is perfect for gaming and movies while at the same striking a balance with battery consumption that is vital with a screen of this size. Faint ghost images of previous apps can be seen at times however, this is more likely due to a software issue than hardware. Colours are well balanced and saturation is not too high.

    The stereo speakers are both the largest and best I have seen on a device, audio is fantastically clear and even on full volume there is no distortion. These are easily one of my favorite features of the tablet with audio being easy to hear even with moderate background noise. I have on a few occasions now set the tablet down and decided that the benefit gained from plugging in the tablet to my office’s speakers was simply not necessary when in the same room.

    Audio recording comparison of the Jide tablet to a Xiaomi Mi Note:

    Camera ^

    Both cameras are of the same quality and are capable of 1080P videos and 5MP, 2560 x 1920 photos. The significant size of the tablet almost surely means you are not likely to be carrying it around with you ready to take photos of day to day occurrences when you have your phone with you. Meaning that the camera here is likely intended for video calls and the like, the lack of flash can be an issue in low light situations and pictures usually end up with mild distortion or lines running across them. Even in well-lit areas images can appear muted with a significant lack of colour. I reiterate, if you are just wanting to make a call on Hangouts or Skype, it should be fine. If you are hoping to take amazing landscape shots, be sure to pack your phone.

    IMG_20151227_034120 IMG_20151227_034006 IMG_20151227_033932 IMG_20151227_034052~01

    Battery Life ^

    Battery life is incredibly varied on this device, the system handles basic tasks well but more advanced tasks kill the battery very quickly. I have been able to have Microsoft word, Powerpoint and Chrome for Android open for the majority of 6 hours on a regular basis. However you will probably need to plug your tablet in if you intend on streaming more than 2 hours of video while on full brightness. Charging on a daily basis is something you will have to do if you are using the tablet regularly as it is easy to get carried away and have several battery draining apps running on screen at once. I have tried to charge the device with a power bank with micro-USB but with an 8100 mAh battery this is going to be a long and laborious process.

    Rootability & Future Proofing ^

    Root has been reported by many as achievable easily with KingRoot, however with an OTA for Remix OS 2.0 (Android 6.0) arriving in the coming months, you may wish to hold off for now as rooting will disable OTAs such as the one demonstrated in the video below.
    Regarding the future proofing of the device, I have had the impression since day one that this is a tablet designed for general office work and productivity for which the specs are more than adequate and will continue to be so for a long time coming. High-end games and intensive apps may stutter now, but we have yet to see how the next big update will affect them although the chances of stretching the specs further seem unlikely. When asked about the possibility of a 2nd Ultra tablet with improved specs, Jide informed me that “We do have exciting announcements in the works and we’ll share in a timely fashion. Please stay tuned!” So of course, keep an eye on the portal and we will let you know if anything interesting turns up. With a little extra RAM and a larger battery this tablet could really stand out from the crowd as a near perfect tablet for productivity.

    Final Thoughts ^

    The software is exceptional while many of the issues currently being reported are said to have been fixed in the coming update which should roll out in early 2016. The thought of having Remix OS 2.0 run on a device like the Pixel C is an exciting prospect and not entirely unlikely as the OS is already officially available for several Nexus tablets through their site. When all is said and done, the tablet is a perfect example of what can be done when an OEM focuses on a problem like multitasking and achieves something that leaves you thinking it should be readily available in some form on stock Android. If you are interested in picking up a Remix Ultra Tablet we negotiated a $50 off voucher and free shipping if you head to their store via the link below!

      $50 off and free shipping
    Be sure to keep an eye out for our review of the Remix Mini, a tiny Android PC running Remix OS 2.0 which is coming in the next few days.

    by Mathew Brack at December 27, 2015 04:53 AM

    November 06, 2015

    FULLY automated wireless timing system using Android

    Check out the new video for Wylas Timing. Doesn't it just eek the pared down Android form factor. Commodity hardware delivering superior and affordable functionality. All through the power of software delivered on an open framework like Android.

    This is where mankind is getting great value for dollar now. Well considered open systems that provide clear integration points for others to connect to and build on top of. Reinventing the wheel each time is a sure road to obsolescence.

    If you are associated with a swimming or athletics club you can sign up for a free trial at

    by William Ferguson ( at November 06, 2015 12:27 AM

    October 29, 2015

    Measuring Activity Startup Time

    In recent talks I've given, as well as the Developing for Android series, I talk about the need to launch quickly, and about how to ensure that you're testing the right launch speed (cold start, like after reboot and (mostly) after killing a task, vs. warm start, which is way faster because the activity just has to be brought to the foreground).

    Then someone asked me, quite reasonably, "So how do I get my app's launch time?"

    Then I paused and wondered the same thing...

    Whenever I've done this kind of benchmarking on framework code, I've had the ability to instrument exactly the bits I needed to. But how can non-framework developers get the information they need from just running the normal build?

    Fortunately, this information exists, and has since API 19. So if you're running on any release later than 4.4 (Kitkat), you should be set.

    All you have to do is launch your activity and look in logcat for something like this:

    ActivityManager: Displayed +768ms

    This information is output whenever an activity window is first drawn, after it goes through all of the startup stuff. This time includes the entire time that it took to launch the process, until the application ran layout and drew for the first time. This is basically the main information you need. It doesn't include the amount of time it took between the user clicking your app icon and the system getting ready to launch your activity, which is fine, because you cannot (as an app developer) affect that time, so there's no need to measure it. Instead, it includes all of the time it took to load your code, initialize your classes that are used at start time, run layout, and draw your app that first time. All of which is really what you want to measure, because that's what you can and should try to optimize.

    There's an additional option to be aware of. The 'Displayed' time is automatically reported, to give you a quick measure of how long that initial launch took. But what if you are also loading in some other content asynchronously and want to know how long it took for everything to be loaded, drawn, and ready to go? In that case, you'll want to additionally call Activity.onReportFullyDrawn(), which will then report, in the log, the time between that initial apk start (the same time as that used for the Displayed time) and the time when you call the onReportFullyDrawn() method. This secondary time is a superset of the initial one (assuming you call it after the initial launch time, which is preferred), giving you the additional information about how long it took to do everything, including the follow-on work after the app was first displayed.

    There is another way of measuring startup time which is worth mentioning for completeness, especially since it uses my favorite device tool, screenrecord. This technique involves recording the entire experience of tapping on your app's icon to launch it and waiting until your app window is up and ready to go.

    First, start screenrecord with the --bugreport option (which adds timestamps to the frames - this was a feature added in L. I think):
    $ adb shell screenrecord --bugreport /sdcard/launch.mp4

    Then tap your app icon, wait until your app is displayed, ctrl-C screenrecord, and pull the file up onto your host system with adb pull:
    $ adb pull /sdcard/launch.mp4

    Now you can open the resulting video and see what's happening when. To do this effectively, you'll need to have a video player that allows you to step frame-by-frame (Quicktime does this, not sure what the best player with this feature is on other OSs). Now step through the frames, noticing that there's a frame timestamp at the top of the video window.

    Step forward until you see the app icon highlighted - this happens after the system has processed the click event on the icon and has started to launch the app. Note the frame time when this happened. Now frame-step forward until you see the first frame that your application's full UI begins to be visible. Depending on your launch experience (whether you have a starting window, a splash screen, etc.), the exact sequence of events and windows may vary. For a simple application you'll see the starting window come up first, then a cross-fade with the real UI in your application when it's ready. You want to note the first frame where you see any of the real UI content of your app. This happens when your app has finished layout and drawn itself, and is now ready to be shown. Note the time at this frame as well.

    Now subtract the two times ((UI displayed) - (icon tapped)); this is the full time that it took for your app to go all the way from the initial user tap to being drawn and ready. It is a superset of the "Displayed" log described above, since it includes time before the process launches and after that first rendering (when the system starts the cross-fade animation), but it is at least something that you can use for comparison purposes with other launches after you make things faster and want to see how much better it is.

    As with any performance testing, it's good to try to run your tests in similar situations multiple times (including making sure you're testing 'cold start' as noted above), as various things can happen to vary the results on any one run.

    Now that you know how to figure out your launch times, whichever approach you use, go make it faster.

    by Chet Haase ( at October 29, 2015 04:45 PM

    September 01, 2015

    Another Oneplus 2 update rolls out from today

    Another Oneplus 2 update rolls out from today

    I guess one of the advantages of having a handset made by a company with so few products is that their developers get to spend a whole heap of time fixing any bugs. Today Oneplus have started rolling out a second incremental update for their latest device with a promise of a more substantial update to come mid September.


    In OxygenOS 2.0.2, you’ll find the following:

    • Improvements to fingerprint recognition accuracy
    • Resolves a bug that could cause volume to be muted unexpectedly
    • Stability improvements to the front facing camera
    • Camera preview UX improvements

    A 2.1 update with more significant improvements is on its way and currently scheduled for mid-September.

    As well as today’s update the company has started working through the invite backlog with a bit of vigor this week, with 24 account linked invites hitting ordinary customers emails.

    Land of Droid -

    by UbuntuBhoy at September 01, 2015 03:15 PM

    Kazam Trooper 450L Review

    Kazam Trooper 450L Review

    The Kazam Trouper 450L is not so much a phone as a package. You don’t buy just a handset, but rather you are buying a service that comes with a handset. I will cover the ins and outs of the service later but for now lets look at the phone.

    In the last year or so budget handsets have started to become a real alternative for those not wanting to break the bank on a flagship. No longer are they small slow units that exasperate more than they please. Kazam however have managed to let all that pass over them. To say the Trouper 450L is disappointing would be like saying losing a league title on the last day of the season to your bitterest rivals is only mildly upsetting. The Trouper is like a mid range handset from three years ago, not a device trying to be better than the sum of it’s specification sheet. The main specifications are below and they are as underwhelming in the hand as they are to read.

    Specifications aside, how does the Trouper perform?

    The Trouper runs a slightly skinned version of AOSP 4.4.4 so isn’t too far behind the curve in that respect, but the skin ‘enhancements’ are very dated looking, making the whole OS look more akin to Ice Cream Sandwich, and even Ginger Bread at times. Pull down the navigation bar and there are quick settings reminiscent of Touch Wiz of old with a sickly green colour by default. The whole effect with the default wallpaper is dull and dank, yet the settings panel is a far more pleasant white and light green, if only they had carried this through to the whole theme. Luckily Android is a versatile beast so by installing your favourite launcher from the Play Store some of these ills can be quickly remedied.

    wpid-screenshot_2014-01-01-00-05-20.png wpid-screenshot_2015-07-07-18-46-17.png wpid-screenshot_2015-07-07-18-46-47.png wpid-screenshot_2015-07-07-18-45-57.png wpid-screenshot_2015-07-07-19-01-15.png wpid-screenshot_2015-06-15-18-42-15.png wpid-screenshot_2015-06-15-13-17-59.png wpid-screenshot_2015-07-01-15-16-54.png wpid-screenshot_2015-07-07-19-01-24.png wpid-screenshot_2015-06-29-20-23-39.png wpid-screenshot_2015-06-15-14-08-58.png wpid-screenshot_2015-06-15-12-13-02.png wpid-screenshot_2015-06-15-12-12-55.png

    In use you pretty much get what you would expect, a phone that can easily handle everyday tasks like calling, messaging and emailing but takes a little more time with slightly heavier tasks such as web page loading or playing YouTube video. Audio is muted and tinny sounding through the internal speaker and not recommended for more than little snippets. The screen I found to be the biggest disappointment and probably the source of my feeling for the device as a whole. There is little that an average user uses their smartphone for that doesn’t require more than an odd flick or press of the screen, so when it bombs, the phone bombs. The Trouper 450L has a very low resolution for a 5” display, a lot lower than we have become accustomed to. 240 dpi no longer cuts the mustard, and to make things worse I found it to either look washed out, or over saturated. The bottom edge always seemed to look duller than the rest of the screen to me, possibly to do with the way the back lighting is implemented.

    Neither the front or back camera’s offer anything to shout about with the paltry 0.3 MP FFC being a step back in time that doesn’t glow with nostalgia. In the modern world of selfies and Snapchat I predict a lot more mirror shots from 450L users. The main camera isn’t as disappointing, with its budget standard 5.0 MP sensor, and shots don’t look too bad when viewed on a device that isn’t the 450L (the screen kills everything), just don’t expect a fast focus or great low light images. Overall the front camera is a waste of time and budget with the rear camera being more than adequate for gran or grandpa to snap the odd shot of little Tim.

    wpid-img_20150806_202611.jpg wpid-img_20150701_134823.jpg wpid-img_20150701_135900-nopm-.jpg wpid-img_20150615_161249.jpg wpid-img_20150615_140558-nopm-.jpg wpid-screenshot_2015-07-01-13-57-49.png

    Everything about the design of the Kazam is cheap and it shows. The back and sides are encased in a metallic silver piece of plastic that would not look out of place on a pound shop kids toy, but at least it has grip thanks to a slightly ribbed effect. On top sits the audio jack just left of centre, with the USB port slightly to the right of centre on the bottom edge. A Volume rocker slightly protrudes on the upper left leaving the power button to sit alone of the upper right edge, just slightly too high for my thumb to comfortably reach while resting the phone on my pinkie (we all hold phones like that, right?). the front face is all glass with capacitive recent/menu, home and back keys on the bottom and a speaker grill, camera and light sensor at the top. The back cover pops off to give access to the SIM tray, an SD card slot and removable battery. Maybe their will be an option to buy a cover that’s not so cheap looking as well.

    wpid-p_20150807_125441.jpg wpid-p_20150807_125556.jpg wpid-p_20150807_125541.jpg wpid-p_20150807_125504.jpg wpid-p_20150807_125518.jpg wpid-p_20150807_125419.jpg wpid-p_20150807_125405.jpg wpid-p_20150807_125521.jpg

    Now to part 2 of the Trouper 450L package, the interesting bit. I said earlier that Kazam were not so much selling a phone as giving you a phone and selling you a service, and this is where the package comes into it’s own. Kazam have looked at the Android market and decided that in the UK nobody is catering for the technophobe or the clumsy oaf. We all see HTC offering free screen replacement in the US and ask why we can’t cut the same deal, well Kazam are offering free screen replacement on the 450L for accidental damage within the first year. As standard Kazam offer a 2 year warranty package but this can be extended by another year if the user installs 5 partner apps from the likes of Kindle, Amazon and McAfee (watch out for that last one). But rather than just rest on their laurels with the screen they are also offering technical support as well.

    One of the few apps that Kazam have added is the Rescue app, which will allow a Kazam technician to take control of your device and sort any settings that may need adjusted (secured with a 6 digit pin that the user must enter to grant access). Kazam are effectively stepping into the role of the family/friend ‘technical’ person, the poor sod who gets a phone call every time Internet Explorer shows more tool bars than web content. Think of it, no more calls from your mum or dad asking how to change their wallpaper. For those tech savvy folk out their it may seem pointless, but the Trouper 450L isn’t aimed at them, it’s for the grandpa’s and grannies I mentioned earlier who still look for a pull dial on a phone and think a video call is sci-fi fantasy. For them, they just call Kazam and if the technician on the other end needs to change something he takes control of the phone and does what needs doing. Other OEM’s have support apps installed as standard, but none that I have come across offer anything near this level.

    The big pity with the Trouper 450L is that Kazam didn’t up the price a little to make the handset a little better. A better screen and a little work on the default theme could make this a cracking package to recommend to it’s target audience but even with the exceptional support I could not, in all honesty tell a family member or friend to buy one. If this is the first step in bring this level of service to more capable units then it will definitely be worth watching.

    Land of Droid -

    by John McKenzie at September 01, 2015 12:46 PM

    August 30, 2015

    Fully FINA and US Swimming compliant wireless timing system on Android released by XandarMob

    XandarMob have just released Wylas Timing® 1.7.0, their wireless timing system for swimming and athletics and have added the ability to record, display and export split times.

    This now brings Wylas Timing into full compliance will all FINA and US Swimming regulations.

    If you are looking for an affordable and efficient wireless timing and display system for your swimming or athletics club, then Wylas Timing® is your number one choice.

    Full details at Wylas Timing 1.7.0 Release Notes

    by William Ferguson ( at August 30, 2015 02:48 PM

    August 16, 2015

    Large update to Gem Miner 2 arriving tonight

    The main features are new levels and the hard difficulty added for the Rainforest expansion.

    Complete change list:

    • Added 3 new expeditions
    • Added hard difficulty to Rainforest pack
    • Fixed tech mine freeplay not loading
    • Improved stamina display – it now extends to better indicate additional stamina from upgrades
    • All expedition difficulties are unlocked from start
    • Retouched UI – thinner borders
    • Added a page turn animation in menus
    • Various menu pages rearranged slightly
    • New loading screen
    • Fixed bug where dirt chips from digging would sometimes appear above you
    • Fixed spelling mistake on rainforest level
    • Fixed conversation icon for Jimjam/Tiktok
    • Fixed various bugs in Rainforest level 9 (Lost)
    • Fixed a bug at the end of Rainforest temple 1
    • Fixed lift and crane sound bug in tech mine
    • Fixed bug where mosquitos could be captured
    • Fixed objective sparkles in the wrong place
    • Fixed star overlay in camp menu
    • Ladders now destroy very quickly in lava to encourage walkway use
    • Fixed the ability to destroy the scientist!

    by Psym at August 16, 2015 07:12 AM

    August 10, 2015

    Splash screen with any other name is still a splash screen - and they suck!

    For some unfathomable reason Google decided to add Splash Screens to their design guidelines. While they now call it a "Launch screen" it's the same thing. A screen that is shown to the user while the app is loading.

    Unsurprisingly, this started a lot of (unhappy) discussion in the Android community. I recently added my opinion as well. In all the discussions there's a common theme. Overwhelming majority of people seems to be against the use of splash screens. Then again truth is not democratic so paying attention to the arguments for usage of splash screen makes sense as well. In almost all of the discussions the same arguments arise. Until now I've not seen a single argument that I'd completely agree with.

    As the discussion in G+ has been spread into multiple separate threads already instead of trying to reply to them separately I'm writing my answers to the common arguments here.

    Argument: Splash screen is better than staring at an empty screen.
    This is one of the most common arguments what I've seen posted in the comments. If your app's landing screen takes a long time to load your app is broken. While arguably Android has become slower over years Activity startup times are still very fast. Inflating the main layout and showing a UI without any dynamic data should be very fast. If that's not the case in your app you should fix it by making it fast to load instead of adding a splash screen that will then guarantee that your app is always launching slow.

    We have to remember that mobile apps are used in short bursts. Sometimes a use session might last only for few seconds as user checks something or searches for an answer. If your app uses 3-5 sec to even show a UI to your user you're already wasting user's time.

    Argument: Splash screen is better than not having any information if the app is launching other than the launcher button getting pressed.
    While technically this argument is true the root cause of the issue is not solved by adding a splash screen. Some apps do indeed take ages to even show up and lock the UI while they're trying to do everything to show user something. These apps need to be fixed! The app is running something in the UI thread that it shouldn't. The app developer needs to take care of the threading to fix the app. "Fixing" it with a splash screen is like adding gaffer tape over a leak hoping it'll go away.

    Argument: My app's data takes a long time to load. A splash screen is better than a loading indicator. This especially with slow internet speeds.
    This argument is also very common but I feel that there's a fundamental flaw in it. This argument assumes that the users always want to start with the data that is being shown on the app's landing screen.

    The reason I argue against splash screens in this case is twofold:

    1. If you show your app's UI to the user first and then load the data into it you allow user to orient to the UI and they're immediately ready to go when the data comes in.
    2. Users don't always want to interact with the data on the app's landing screen. Let the user get on with their task without forcing them to load the first screen's data. This is very important especially on a slow internet connection. Let user interact with your app while the data is loading. In many cases they might not care about the data you're loading by default.

    Argument: Splash screen is needed to help brand presence.
    If the design can't display the brand without an extra screen the design sucks. You can't rely on a screen that is shown to the user once in the start of an app to convey an important message.

    Argument: Splash Screen can be implemented correctly.

    I'm saving the big one to the last. This is the argument Google's Dev Advocates keep brining up (I love you guys but in this one, you're wrong).

    To me this boils down to three main things:

    This is a slippery slope. 
    Yep, a slippery slope argument is a logical fallacy. Unfortunately, I believe this being actually a slippery slope in our industry. I've been part of many software teams and seen many from far. The problem is that a lot of uninformed decisions get made in the teams. It is unfortunate situation but happens more often than we'd like to believe that people without knowledge or understanding to make a decision make decisions about things they shouldn't even be part of discussing. Brand design in an app is one of these. A product owner often want the brand more visible without understanding the impact to the users. While they selfishly simply want their logo to be visible everywhere they don't understand the harm they cause to the app's UX this way directly harming the brand image. 

    Previously we, as the devs and designers who want to create the best possible app, have had another logical fallacy in our toolbelt to fight this. The Authority Fallacy. We have been able to argue that Google says that splash screens should not be used. That usually convinced these decision makers who would ignore arguments from their own experts. What will happen now? In the same discussion they can pull out any Google app and point to it and say that "Google is doing this, so will we".

    The big problems will come once the decision is made and all the sudden there's one extra screen for people to add junk on. Nearly an empty screen to play with. At this point it doesn't matter if we, the devs, start explaining how it is just a theme background image and not an actual screen. The battle is already over. I know this will happen. I've been in these meetings. I've worked with these people. Google has stripped us from our weapons in this battle. 

    Dear Google Dev Advocates, you live in a different world than we do... Say hello to ads on splash screens...

    Trying to do a splash screen right is like polishing a turd.
    The pattern is flawed. Fundamentally flawed. When you premise is wrong it doesn't matter how well you do something it'll still end up being wrong.

    Google's version of splash screen is just a themed background shown while the app inflates it's UI. While it sounds like a nice idea it really isn't. A small graphical component certainly loads so fast that it doesn't slow down the UI inflation but why would you do that. If your app's UI inflation takes seconds you're already doing something wrong. If it doesn't take seconds only thing you're doing is flashing some graphic to the user that they don't really catch. Quickly flashing graphic is worse than no graphic at all.

    Then there's the problem of this kind of splash screen not being able to convey any progress. It's just a static screen. If something takes longer how do I communicate that to the user? You know that the first thing any designer wants to add to this is a loading indicator and a nice transition out of the splash, right? This leads into a situation where we now have to use an Activity instead of the screen background. Should we then use a splash screen while we're loading our splash screen?

    Showing splash only on "cold launch" exposes users to OS internals.
    Android OS was designed to hide OS functionality from users and developers work hard on making the users feel like the app is always there and they can continue from where they left off whenever they come back. We do this because users shouldn't have to understand what happens when the phone runs out of memory and the apps are cleaned from the memory.

    Now we introduce different functionality on "cold launch". It makes perfect sense to us, the devs, but it doesn't for regular users. To a regular user this functionality will only be confusing. The app sometimes shows this strange logo screen and sometimes it doesn't. What's the difference? Do I need to do something different?

    This is such a bad idea. Consistent and predictable behaviour is important! Let's not force users to start figuring out what's going on under the hood.

    So. NO. Do not add splash screens to your app. Simply make sure your app launches to the main UI fast and let users get on with what they want to do.

    by Juhani Lehtimäki ( at August 10, 2015 10:30 AM

    June 24, 2015

    Beato Bezel Adds an Extra Control Method to the Moto 360


    One of the most popular choices in the world of the smartwatch is last year’s Moto 360, although with a successor expected sometime this year, it’s starting to feel a little long in the tooth. However, a project by Michael Lo over on Kickstarter has its sights set on breathing some new life into this aging wearable by adding an entirely new control method.


    Lo’s Beato Bezel adds an extra stainless-steel bezel on top of the existing one, like a case, which the user can rotate to select different areas of the display. It uses a transparent conductive film to transfer touch information to the watch’s display, without adding significant bulk to the device. The page itself shows renders and images of the bezel, and a video of it in action, showing at least that a prototype exists and does seem to function as described. No battery is required, and importantly no SDK is either, due to the simple nature of the design. The other advantage here is that the Beato Bezel isn’t too expensive when you consider that it could add a whole raft of functionality to your Moto 360, coming in at $29 for one bezel as part of ‘Early Bird Special’, $39 once the campaign has ended, or $59 for a package of both black and silver versions.




    Unfortunately however, this all boils down to what use you can actually get out of this device. Do you really need a new way of interacting with your smartwatch? Android Wear of course isn’t designed to work properly with a rotational selection method, and annoyingly, something like scrolling through lists is the kind of situation where this sort of functionality could be useful. There is potentially influence from the Digital Crown on the Apple Watch here (along with more traditional timepieces), but without the benefit of an operating system that expects that kind of control, we are struggling to think of any immediate benefit from this new control layer.




    Although Michael’s own point about being able to choose something on-screen without covering it with your finger is a good one, we left physical scroll-controls behind in the HTC Desire-era, and generally with good reason. Once again, this success of the Beato Bezel will entirely depend on developers dreaming up and implementing a compelling reason to use this $29 control method beyond the vague ‘games’ possibilities that are highlighted in the pitch. As much as the absence of an SDK is useful for quick adoption, perhaps an accompanying app or two to demonstrate its possible uses would be beneficial to those who are on the fence.



    Don’t be put off though, you might have thought of something that we haven’t! Head on over to the Kickstarter page to check out all the details and decide for yourself.

    What do you think of the Beato Bezel?  Let us know in the comments!

    The post Beato Bezel Adds an Extra Control Method to the Moto 360 appeared first on xda-developers.

    by Jack Jennings at June 24, 2015 12:00 PM

    June 18, 2015

    Where are the vogella example projects at Github?

    On a regular basis I get the question where people can find the example code of our tutorials. There are on Github but Github is big, so we created this vogella Source code page to make it easier to find the correct repository.

    Lets the Pull Request be coming. :-)

    by Lars Vogel at June 18, 2015 04:03 PM

    June 09, 2015

    Developing for Android

    A series of articles have been posted on the Google Developers publication on that explain the constraints of mobile applications and a set of rules to keep in mind in order to develop good, well-performing Android applications.

    I: Understanding the Mobile Context
    II: Memory
    III: Performance
    IV: Networking
    V: Language & Libraries
    VI: Storage
    VII: Framework
    VIII: The Rules: User Interface
    IX: Tools

    by Chet Haase ( at June 09, 2015 04:02 PM

    May 29, 2015

    Android Design Support Library

    Posted by Ian Lake, Developer Advocate

    Android 5.0 Lollipop was one of the most significant Android releases ever, in no small part due to the introduction of material design, a new design language that refreshed the entire Android experience. Our detailed spec is a great place to start to adopt material design, but we understand that it can be a challenge for developers, particularly ones concerned with backward compatibility. With a little help from the new Android Design Support Library, we’re bringing a number of important material design components to all developers and to all Android 2.1 or higher devices. You’ll find a navigation drawer view, floating labels for editing text, a floating action button, snackbar, tabs, and a motion and scroll framework to tie them together.

    Navigation View

    The navigation drawer can be an important focal point for identity and navigation within your app and consistency in the design here can make a considerable difference in how easy your app is to navigate, particularly for first time users. NavigationView makes this easier by providing the framework you need for the navigation drawer as well as the ability to inflate your navigation items through a menu resource.

    You use NavigationView as DrawerLayout’s drawer content view with a layout such as:

        <!-- your content layout -->

    You’ll note two attributes for NavigationView: app:headerLayout controls the (optional) layout used for the header. app:menu is the menu resource inflated for the navigation items (which can also be updated at runtime). NavigationView takes care of the scrim protection of the status bar for you, ensuring that your NavigationView interacts with the status bar appropriately on API21+ devices.

    The simplest drawer menus will be a collection of checkable menu items:

    <group android:checkableBehavior="single">

    The checked item will appear highlighted in the navigation drawer, ensuring the user knows which navigation item is currently selected.

    You can also use subheaders in your menu to separate groups of items:


    You’ll get callbacks on selected items by setting a OnNavigationItemSelectedListener using setNavigationItemSelectedListener(). This provides you with the MenuItem that was clicked, allowing you to handle selection events, changed the checked status, load new content, programmatically close the drawer, or any other actions you may want.

    Floating labels for editing text

    Even the humble EditText has room to improve in material design. While an EditText alone will hide the hint text after the first character is typed, you can now wrap it in a TextInputLayout, causing the hint text to become a floating label above the EditText, ensuring that users never lose context in what they are entering.

    In addition to showing hints, you can also display an error message below the EditText by calling setError().

    Floating Action Button

    A floating action button is a round button denoting a primary action on your interface. The Design library’s FloatingActionButton gives you a single consistent implementation, by default colored using the colorAccent from your theme.

    In addition to the normal size floating action button, it also supports the mini size (fabSize="mini") when visual continuity with other elements is critical. As FloatingActionButton extends ImageView, you’ll use android:src or any of the methods such as setImageDrawable() to control the icon shown within the FloatingActionButton.


    Providing lightweight, quick feedback about an operation is a perfect opportunity to use a snackbar. Snackbars are shown on the bottom of the screen and contain text with an optional single action. They automatically time out after the given time length by animating off the screen. In addition, users can swipe them away before the timeout.

    By including the ability to interact with the Snackbar through swiping it away or actions, these are considerably more powerful than toasts, another lightweight feedback mechanism. However, you’ll find the API very familiar:

      .make(parentLayout, R.string.snackbar_text, Snackbar.LENGTH_LONG)
      .setAction(R.string.snackbar_action, myOnClickListener)
      .show(); // Don’t forget to show!

    You’ll note the use of a View as the first parameter to make() - Snackbar will attempt to find an appropriate parent of the Snackbar’s view to ensure that it is anchored to the bottom.


    Switching between different views in your app via tabs is not a new concept to material design and they are equally at home as a top level navigation pattern or for organizing different groupings of content within your app (say, different genres of music).

    The Design library’s TabLayout implements both fixed tabs, where the view’s width is divided equally between all of the tabs, as well as scrollable tabs, where the tabs are not a uniform size and can scroll horizontally. Tabs can be added programmatically:

    TabLayout tabLayout = ...;
    tabLayout.addTab(tabLayout.newTab().setText("Tab 1"));

    However, if you are using a ViewPager for horizontal paging between tabs, you can create tabs directly from your PagerAdapter’s getPageTitle() and then connect the two together using setupWithViewPager(). This ensures that tab selection events update the ViewPager and page changes update the selected tab.

    CoordinatorLayout, motion, and scrolling

    Distinctive visuals are only one part of material design: motion is also an important part of making a great material designed app. While there are a lot of parts of motion in material design including touch ripples and meaningful transitions, the Design library introduces CoordinatorLayout, a layout which provides an additional level of control over touch events between child views, something which many of the components in the Design library take advantage of.

    CoordinatorLayout and floating action buttons

    A great example of this is when you add a FloatingActionButton as a child of your CoordinatorLayout and then pass that CoordinatorLayout to your Snackbar.make() call - instead of the snackbar displaying over the floating action button, the FloatingActionButton takes advantage of additional callbacks provided by CoordinatorLayout to automatically move upward as the snackbar animates in and returns to its position when the snackbar animates out on Android 3.0 and higher devices - no extra code required.

    CoordinatorLayout also provides an layout_anchor attribute which, along with layout_anchorGravity, can be used to place floating views, such as the FloatingActionButton, relative to other views.

    CoordinatorLayout and the app bar

    The other main use case for the CoordinatorLayout concerns the app bar (formerly action bar) and scrolling techniques. You may already be using a Toolbar in your layout, allowing you to more easily customize the look and integration of that iconic part of an app with the rest of your layout. The Design library takes this to the next level: using an AppBarLayout allows your Toolbar and other views (such as tabs provided by TabLayout) to react to scroll events in a sibling view marked with a ScrollingViewBehavior. Therefore you can create a layout such as:

         <! -- Your Scrollable View -->
                app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    Now, as the user scrolls the RecyclerView, the AppBarLayout can respond to those events by using the children’s scroll flags to control how they enter (scroll on screen) and exit (scroll off screen). Flags include:

    • scroll: this flag should be set for all views that want to scroll off the screen - for views that do not use this flag, they’ll remain pinned to the top of the screen
    • enterAlways: this flag ensures that any downward scroll will cause this view to become visible, enabling the ‘quick return’ pattern
    • enterAlwaysCollapsed: When your view has declared a minHeight and you use this flag, your View will only enter at its minimum height (i.e., ‘collapsed’), only re-expanding to its full height when the scrolling view has reached it’s top.
    • exitUntilCollapsed: this flag causes the view to scroll off until it is ‘collapsed’ (its minHeight) before exiting

    One note: all views using the scroll flag must be declared before views that do not use the flag. This ensures that all views exit from the top, leaving the fixed elements behind.

    Collapsing Toolbars

    Adding a Toolbar directly to an AppBarLayout gives you access to the enterAlwaysCollapsed and exitUntilCollapsed scroll flags, but not the detailed control on how different elements react to collapsing. For that, you can use CollapsingToolbarLayout:


    This setup uses CollapsingToolbarLayout’s app:layout_collapseMode="pin" to ensure that the Toolbar itself remains pinned to the top of the screen while the view collapses. Even better, when you use CollapsingToolbarLayout and Toolbar together, the title will automatically appear larger when the layout is fully visible, then transition to its default size as it is collapsed. Note that in those cases, you should call setTitle() on the CollapsingToolbarLayout, rather than on the Toolbar itself.

    In addition to pinning a view, you can use app:layout_collapseMode="parallax" (and optionally app:layout_collapseParallaxMultiplier="0.7" to set the parallax multiplier) to implement parallax scrolling (say of a sibling ImageView within the CollapsingToolbarLayout). This use case pairs nicely with the app:contentScrim="?attr/colorPrimary" attribute for CollapsingToolbarLayout, adding a full bleed scrim when the view is collapsed.

    CoordinatorLayout and custom views

    One thing that is important to note is that CoordinatorLayout doesn’t have any innate understanding of a FloatingActionButton or AppBarLayout work - it just provides an additional API in the form of a Coordinator.Behavior, which allows child views to better control touch events and gestures as well as declare dependencies between each other and receive callbacks via onDependentViewChanged().

    Views can declare a default Behavior by using the CoordinatorLayout.DefaultBehavior(YourView.Behavior.class) annotation,or set it in your layout files by with the app:layout_behavior="$Behavior" attribute. This framework makes it possible for any view to integrate with CoordinatorLayout.

    Available now!

    The Design library is available now, so make sure to update the Android Support Repository in the SDK Manager. You can then start using the Design library with a single new dependency:

     compile ''

    Note that as the Design library depends on the Support v4 and AppCompat Support Libraries, those will be included automatically when you add the Design library dependency. We also took care that these new widgets are usable in the Android Studio Layout Editor’s Design view (find them under CustomView), giving you an easier way to preview some of these new components.

    The Design library, AppCompat, and all of the Android Support Library are important tools in providing the building blocks needed to build a modern, great looking Android app without building everything from scratch.

    by Reto Meier ( at May 29, 2015 05:43 PM

    May 04, 2015

    Samsung Galaxy Tab S2 to be announced in June

    According to SamMobile, the Samsung Galaxy Tab S2 will be announced this coming June. There will apparently be four variants of the tablet. There will be an 8-inch model and a 9.7-inch model, with both having WiFi and WiFi + LTE respectively, for a total of 4 variants.

    They will apparently be released worldwide, including the US, Canada, European markets, China, Latin America, Hong Kong, Korea, and India, though this information seems to be unconfirmed.

    The Galaxy Tab S2 will have a 4:3 aspect ratio and will be even more thin than the iPad Air.

    The post Samsung Galaxy Tab S2 to be announced in June appeared first on Galaxy Tabs.

    by Jordan Smith at May 04, 2015 03:39 PM

    April 29, 2015

    Wallpaper Wednesday – Foggy Mountain Pass

    This week’s wallpaper is called Foggy Mountain Pass.

    This wallpaper will work great on any Galaxy Tab, Galaxy Note, or Galaxy S. Click here to download.

    The post Wallpaper Wednesday – Foggy Mountain Pass appeared first on Galaxy Tabs.

    by Kyle Dornblaser at April 29, 2015 03:50 PM

    March 30, 2015

    Building and Distributing Android SDK Add-Ons

    Since Google Play Services took much of the thunder away from the Google APIs SDK targets, SDK Add-ons have fallen a bit out of the mainstream thought of Android developers. However, if you are an OEM of an Android-based product (especially one that may not be in the consumer space), then SDK Add-ons are worth another look.

    by Dave Smith at March 30, 2015 09:16 PM

    March 25, 2015

    Android Performance Case Study Follow-up

    Two years ago, I published an articled titled Android Performance Case Study to help Android developers understand what tools and technique can be used to identify, track down, and fix performance issues.

    This article focused on Falcon Pro, a Twitter client designed and developed by Joaquim Vergès. Joaquim was kind enough to let me use his application in my article and quickly addressed all the issues I found. All was well until Joaquim started working on Falcon Pro 3, written from scratch. Shortly before releasing his new application, Joaquim contacted me because he needed help figuring out a performance problem that was affecting scrolling (and once again, I did not have access to the source code).

    Joaquim used all the right tools and was able to quickly determine what was not causing the issue. For instance, he found that overdraw was not an issue. He was however able to narrow down the problem to the use of a ViewPager. He sent me the following screenshots:

    Falcon Pro 3

    Joaquim used the system’s on-screen GPU profiling tool to detect framerate drops. The screenshot on the left shows the performance of scrolling a timeline without a ViewPager and the screenshot on the right shows performance with a ViewPager (he used a 2014 Moto X to capture this data). The root cause seems pretty obvious.

    My first idea was to see whether the ViewPager was somehow misusing hardware layers. The performance issue we observed could have been caused by a hardware layer updated on every frame by the list’s scroll. The system’s hardware layers updates debugging tool did not reveal anything. I double checked with HierarchyViewer and I was satisfied that the ViewPager was behaving correctly (the contrary was unlikely anyway and would have been troublesome).

    I then turned to another powerful, seldom used, tool called Tracer for OpenGL. My previous article explains how the tool works in more details. All you need to know is that this tool collects all the drawing commands sent by the UI toolkit to the GPU.

    Android 4.3 and up: Tracer has unfortunately become a little more difficult to use since Android 4.3 when we introduced reordering and merging of drawing commands. It’s an amazingly useful optimization but it prevents Tracer from grouping drawing commands by view. You can restore the old behavior by disabling display lists optimization using the following command (before you start your application):

    adb shell setprop debug.hwui.disable_draw_reorder true

    Reading OpenGL traces: Commands shown in blue are GL operations that draw pixels on screen. All other commands are used to transfer data or set state and can easily be ignored. Every time you click on one of the blue commands, Tracer will update the Details tab and show you the content of the current render target right after the command you clicked is executed. You can thus reconstruct a frame by clicking on each blue command one after another. It’s pretty much how I analyze performance issues with Tracer. Seeing how a frame is rendered gives a lot of insight on what the application is doing.

    While perusing the traces collected during a scroll in Falcon Pro I was surprised to see a series of SaveLayer/ComposeLayer blocks of commands (click the picture to enlarge):

    Tracer for OpenGL

    These blocks indicate the creation and composition of a temporary hardware layer. These temporary layers are created by the different variants of Canvas.saveLayer(). The UI toolkit uses Canvas.saveLayer() to draw Views with an alpha < 1 (see View.setAlpha()) when specific conditions are met:

    Chet and I explained in several presentations why you should use alpha with care. Every time the UI toolkit has to use a temporary layer, drawing commands are sent to a different render target, and switching render target is an expensive operation for the GPU. GPUs using a tiling/deferred architecture (ImaginationTech’s SGX, Qualcomm’s Adreno, etc.) are particularly hurt by this behavior. Direct rendering architectures such as Nvidia’s fare better. Since the Moto X 2014 devices Joaquim and I were working with use a Qualcomm Adreno GPU, the use of multiple temporary hardware layers was most likely the root cause of our performance problem.

    The big question thus become: what is creating all these temporary layers? Tracer gave us the answer. If you look at the screenshot of Tracer you can see that the only drawing command in the SaveLayer group of OpenGL operations renders what appears to be a circle in a small render target (the tool magnifies the result). Now let’s look at a screenshot of the application:

    Falcon Pro 3

    Do you see these little circles at the top? That’s a ViewPager indicator, used to show the user her position. Joaquim was using a third party library (I don’t remember which one) to draw these indicators. What’s interesting is how that library draws the indicator: the current page is indicated by a white circle, the other pages with what appears to be a gray circle. I say “what appears to be a gray” because the circles are actually translucent white circles. The library uses a View for each circle (which is in itself wasteful) and calls setAlpha() to change their color.

    There are several solutions to fix this problem:

    • Use a customizable “inactive” color instead of setting an opacity on the View
    • Return false from hasOverlappingRendering() and the framework will set the proper alpha on the Paint for you
    • Return true from onSetAlpha() and set an alpha on the Paint used to draw the “gray” circles

    The easiest solution is the second one but it is only available from API level 16. If you must support older versions of Android, use one of the other two solutions. I believe Joaquim simply ditched the third party library and used his own indicator.

    I hope this article makes it clear that performance issues can arise from what appears to be innocent and harmless operations. So remember: don’t make assumptions, measure!

    by Romain Guy at March 25, 2015 06:32 PM

    AOSP Sources in the IDE

    We get asked a lot about the proper way to integrate the AOSP sources into an integrated development environment (IDE). This tutorial shows you how to use the integrated IDEGen scripts to do the job.

    by Dave Smith at March 25, 2015 02:24 AM

    February 24, 2015

    AcDisplay and HeadsUp: Better Notification Handling

    AcDisplay & HeadsUp

    We’ve featured both HeadsUp and AcDisplay by XDA Recognized Developer AChep in the past. Both have been constantly improved since they were released, and with the recent updates for better Lollipop support and material design, we figured it would be a good time for a double feature.

    The two apps are excellent for handling your notifications, each in their own and distinct manner.


    AcDisplay informs you of new notifications you receive while your screen is off, by showing you a minimal overview allowing you to view, clear or action the notification.

    Many customization options are provided: you can set the minimum and maximum priority of notifications to be shown (this is useful so that your screen doesn’t wake up for weather updates, for example) or even configure AcDisplay on a per app basis, choosing a custom wallpaper (or dynamically picking the notification’s icon/artwork), using the system font (as opposed to Roboto) and more. Inactive hours can also be defined to disable AcDisplay entirely during your sleep.

    Two additional modes are also available, giving you the choice to use AcDisplay as your lockscreen, or automatically activating it when you pick your device up. Both of these options can also be dynamically disabled when no notifications are available.


    HeadsUp, on the other hand, is more comparable to the feature introduced in Lollipop, though it adds many needed features and customization options to it.

    When it comes to looks, you can select from two themes (dark and light). That’s not all, though: you also have the option to configure the heads up’s position, having it show at the top or bottom of the screen, and optionally overlaying the status bar. Emoji can also be enabled, as well as using the system font (mostly useful for non AOSP ROMs).

    Swiping to the right or left can either dismiss the notification or hide the heads up — this is configurable by the user. Swiping up always hides all heads up notifications. Naturally, you can disable or enable HeadsUp for each app individually. A neat addition over the stock heads up system is that multiple notifications can be displayed at once, instead of replacing the previous one.

    (If you’re on Lollipop and your ROM doesn’t allow you to disable the stock heads up system, you may want to try the Restore notification ticker on Lollipop Xposed module by XDA Recognized Developer MohammadAG.)

    Both are compatible with all devices running Android 4.1 or later, though 4.3+ is recommended as it introduces notification listeners (giving third-party apps the ability to clear notifications and letting them know when one is cleared).

    What’s New?

    Versions 3.x have been out for a few weeks (with the latest releases coming out just yesterday), with bugs being squashed along the way and some features making it in. They should be fully usable now, with many changes since the 2.x releases.

    For those who haven’t been following their development, here’s what’s new in 3.x for AcDisplay:

    • Material design!
    • Basic JellyBean (4.1&4.2) support.
    • Options to show emoji instead of text smileys, for overriding system fonts and better privacy features when Android’s secure lock is enabled.
    • Many other improvements, bug fixes and translation updates.

    … and for HeadsUp:

    • Material design!
    • Options to make heads up overlap the status bar, show at the bottom of the screen or on the lockscreen, and to disable the timeout entirely. The behavior when swiping to the left or right can also be customized.
    • Users can swipe up to hide all heads up.
    • Many other improvements, bug fixes and translation updates.

    (You can view the full changelog for HeadsUp here, and for AcDisplay here.)




    Get Them Now!

    AcDisplay and HeadsUp are both open source and published under the GPLv2+. You’re welcome to check them out or contribute: HeadsUp GitHub repo, AcDisplay GitHub repo.

    Interested? Make sure to visit the HeadsUp forum thread and AcDisplay forum thread for more info, downloads and support!

    The post AcDisplay and HeadsUp: Better Notification Handling appeared first on xda-developers.

    by GermainZ at February 24, 2015 05:50 PM

    February 05, 2015

    Guide: In-Depth Look at the Best Android Keyboards


    Many keyboards are available on Android, but not all of them are equal. Some try to be the best keyboard for all users, others target a niche market – whatever you’re looking for, you’re likely to find one that suits your needs.

    To help you find the keyboard you want, we’re going to review a dozen (based on your comments here, plus some popular choices) by taking a look at several aspects:

    • Input:
      • Input modes (e.g. typing and swiping) and accuracy.
      • Input related gestures, if any.
      • Ease of use for numbers/symbols input.
      • Gestures, if any.
      • Text shortcuts and emoji.
    • Multiple languages:
      • Ease of switching between languages and dual language input.
      • Custom layouts for languages.
    • Correcting input and predictions:
      • Suggestions/auto-corrections.
      • Correcting input (undoing mistakes, controlling the cursor for precision, etc).
      • Custom dictionaries.
      • Next word predictions.
    • Themes/Customizability.
    • Other features.
    • Privacy. (Note: We’ll only link to the keyboard’s privacy policy for reference, and note if an Internet connection is necessary for some features. The choice is up to you.)

    A short screencast will also be shown for each, to give you a quick idea of how easy it is to use (we’ll use an unknown word and punctuation by typing “Hello,!”).

    Here’s the list of keyboards we’ll check. You can use it to quickly jump to those you’re interested in, or check the summary table at the end and come back for additional details:



    Fleksy looks like your average keyboard, but it’s got some neat features to set it apart. It comes with some intuitive gestures you can use to quickly perform common actions. You can swipe to the right to insert a space, or to the left to delete the last word. Other gestures are also present, which we’ll discuss later.

    Inputting numbers and symbols is usually done by switching to the secondary pane (they’re not shown at all in the primary pane). This can be done in multiple ways: you can press the “123” button, swipe from it, or long press any key. However, you can also activate “extensions” for additional functionality, such as adding a numbers row. Common punctuation marks are also offered as suggestions after every word, and you can cycle through them by swiping up and down.

    Another extension allows you to define text shortcuts, which can come in handy for typing common phrases, emails or phone numbers quickly. Emoji and text emoticons input is also present, and can even be extended to insert GIFs (which is especially useful in Hangouts) using another extension.

    One of the few annoyances with Fleksy is that it has a tendency to insert a space after every word or punctuation when smart spaces are enabled (even when returning to a new line — the previous one will end with a space). This could probably be made smarter, but you can fortunately turn it off if it bothers you.

    Multiple languages

    If you regularly type in more than one language, switching between them is easy enough — you just need to swipe the space bar left or right. You’re also able to change the layout of the keyboard for any language, and choose from the usual layouts as well as Colemak and Dvorak.

    Fans of dual language input will be slightly disappointed, however, as there is no way to get corrections in another language without switching to it.

    Correcting input and predictions

    Fleksy heavily relies on its auto-correction. The goal is to provide reliable corrections without requiring a high level of accuracy, and it seems to work most of the time. When it doesn’t, you can just swipe up to undo the last correction (you can also swipe up or down to go through the list of corrections, if the first one isn’t accurate). This also makes typing foreign, technical or swear words easier, and makes auto-correction slightly less frustrating when you don’t need it.

    The “Editor” extension allows you to move the cursor left and right by dragging a bar at the top of your screen. It also adds buttons to quickly cut, copy, select and paste content, although you’ll still have to select the text the usual way.

    Another plus is that this keyboard is able to import your contacts’ names, as well as words you use in your social accounts, emails and SMS messages. Unfortunately, Fleksy doesn’t seem to respect the system wide personal dictionaries, which can make switching from/between some keyboards a bit of a hassle. On the other hand, adding and removing words is pretty easy — you just need to swipe up once more after undoing a correction.

    Themes and customizability

    You are able to choose from a variety of themes: some will change the colors, others will also set an image background for the keyboard. While you’re not able to create your own themes, the available selection covers a wide range. Some extensions also provide additional eye candy, like “Rainbow Pops” which makes key pops colored.

    The keyboard’s size can also be reduced to free up some screen space, if you find it too big. You can also hide the bottom bar (which contains the space bar, emoji and return button — the other buttons’ functions can be accessed using alternate methods) on the go by swiping down with two fingers (to show it again, you just need to do the opposite).

    Other features

    The “Launcher” extension might prove to be useful to some users. It basically acts like a mini launcher, allowing you to switch apps (e.g. messaging apps) easily from your keyboard.

    Another neat extension is “Invisible Keyboard”. Not only does it turn your keyboard invisible, as its name applies, it also makes all of the screen available to the foreground app (with the keyboard acting as an overlay). This allows you to type without sacrificing any screen estate (although it will obviously block any clickable content below the keyboard), assuming you can get used to it.


    You can find Fleksy’s privacy policy here. You’ll need to have an Internet connection in order to download new languages or use cloud related features.



    Google Keyboard


    (Note that Google Keyboard and the AOSP keyboard are very similar, with the exception of some features that aren’t available in the AOSP keyboard, such as gesture typing and learning from Google services.)

    Google Keyboard is a fairly traditional keyboard at first glance, but it actually comes with quite a bit of additional functionality. You can either type normally or enable gesture typing to swipe words (both can be used at the same time). The latter is quite accurate, and can even be used without lifting your finger at all by gliding over the space bar between words (although that often comes at the cost of accuracy).

    To type numbers, you can either long press the top row or switch to the secondary pane. For symbols, you have the choice between switching panes and long pressing the “.” key instead, though the layout being slightly different from the secondary pane can cause some confusion. (You can also swipe from the “?123″ key, which instantly switches to the secondary pane.) If you prefer having a numbers row and more easily accessible symbols, you can enable the PC layout in the settings (unfortunately, this doesn’t provide arrow keys).

    Emoji and text emoticons are easily accessible by long pressing the Enter key. Recently used emoji are also saved in the first tab. Additionally, a special dictionary can be installed to suggest emoji in some (very limited) cases.

    You can also define text shortcuts through the system’s personal dictionaries, by adding or editing a word/phrase then specifying the shortcut. This allows you to type emails, phone numbers or common phrases more quickly.

    Multiple languages

    Multiple languages can be easily installed, after which you can switch between them by pressing the language key (if enabled), or long pressing the space bar. Dual language input isn’t supported by Google Keyboard.

    Custom layouts can be defined for each language. You can choose from QWERTY, QWERTZ, AZERTY, Colemak, Dvorak and PC layouts.

    Correcting input and predictions

    Corrections seem fairly accurate, and the aggressiveness with which your mistakes get automatically corrected can be customized. The position of the letters is taken into consideration and saved, which is useful if you complete a phrase then want to go back to correct a word. However, it tends to forget those once you start editing the word, which in turn has the effect of turning slightly inaccurate suggestions into completely unrelated ones. You can press the backspace key to undo a correction right after it is made, but Google Keyboard doesn’t provide you with any additional tricks for editing past input.

    The system wide custom dictionaries are used and respected. This can be handy if you switch between multiple keyboards that make use of them. Adding a word to the custom dictionary is as easy as tapping it.

    Options are provided to add contacts’ names to the list of suggestions, using data from other Google services to learn words you commonly use, and to allow potentially offensive words. That last option still seems to give a higher priority to other words, though, so adding them to your dictionary can also come in handy.

    Google Keyboard can offer next word predictions, if the option is enabled, but those seem rather dumb and only take the last word into consideration.

    Themes and customizability

    Holo and material themes are provided. They each come in two flavors: dark and light. That’s about it for customizing how your keyboard looks, although the material themes do look pretty good.


    The standard Google privacy policy applies. You can also opt out of usage statistics if you wish to do so. You need an Internet connection to download additional language packs.



    Hacker’s Keyboard


    Hacker’s Keyboard is mainly aimed at power users or those who want a PC-like experience. It comes in really handy when you’re in an SSH session thanks to the arrow and function keys (by default, the full PC layout is only used in landscape; you can change this in the settings).

    When using the 4-row layout, numbers/symbols input is comparable to the Gingerbread keyboard — you can either long press keys or switch to the secondary pane. If you’re using the full 5-rows layout, however, you basically get your computer’s keyboard: numbers row, arrow keys, symbols that are accessible by long pressing keys or pressing Shift, etc. You can also use a numpad at any time by pressing the “Fn” key, which is very useful when you need to type lots of numbers.

    Text shortcuts and emoji input are not supported.

    Multiple languages

    You can enable multiple languages from the keyboard’s settings, after which you’re able to switch between them by swiping the space bar left or right. Many languages do not have a dictionary available, though — you’ll get the layout and keys, but not the corrections. However, Some additional dictionaries can be downloaded from the Google Play store. Dual language input isn’t possible.

    Custom layouts can be chosen for some languages (for example, English supports QWERTY and Dvorak), but not all.

    Correcting input and predictions

    Corrections are accurate, though they’re not automatic by default. Similarly to Google Keyboard, you can press the backspace key to undo a correction right after it is made.

    Fixing past mistakes is a bit trickier than most keyboards, as tapping a misspelt word to correct it will not bring back the list of corrections. You’ll either have to correct the mistake manually, remove the word and type it again, or rely on the Android built-in spell checker (available since ICS).

    Hacker’s Keyboard offers no predictions, which might make it less attractive to people who rely on them but would like to have the same fully fledged keyboard for both power and casual use.

    Themes and customizability

    Hacker’s Keyboard comes with a few themes: Gingerbread, ICS, Stone and Transparent. The keyboard’s size is very customizable, and so are most of its features (to list a few: sent key codes, suggested punctuation, long press pop-up keys; some of these can be very useful when using a terminal or coding on the go). You can also define custom gestures, although the available actions are a bit limited.

    Other features

    You’ll find all the keys you’d expect to see on your PC’s keyboard (arrows, function keys (F1-F12), Esc key, etc). These are extremely useful when using a terminal app or coding.


    Minimal permissions are required. Hacker’s Keyboard does not connect to the Internet at all.



    Hodor Keyboard


    Hodor. Hodor Hodor Hodor HODOR HODOR.

    Multiple languages


    Correcting input and predictions








    Minuum is designed to take the least amount of screen space possible, but you can switch between the full keyboard and the minimized version with ease by dragging the suggestions bar up or down (or by pressing and holding the keyboard with two fingers).

    In the full layout, you can type the letters or swipe up from any letter to input its corresponding secondary key (for example, you can swipe up from the “T” key to type “5”, or from the “V” key for “?”). Common punctuation characters can also be chosen quickly by swiping to the left/right from the “.” key, or by double tapping the space bar — all of this makes typing numbers and symbols pretty fast. You can also access a numpad and more symbols by switching to the secondary pane.

    When minimized, Minuum only shows you one row of letters, saving a lot of screen estate. All of the above still applies, with the exception of the numpad. Swiping up can also be used to increased accuracy, as it “zooms” the letters in.

    Gestures allow you to delete words by swiping to the left, inserting spaces (and completing the current word) by swiping to the right and going to a new line by swiping up and right. Swiping up and left can either activate voice recognition or change languages, depending on your settings.

    Auto-spacing is optional and seems to work well in most cases.

    Emoji input is supported, although there isn’t a pane for recently/frequently used emoji (however, if you use the experimental emoji bonus panel, recently used ones are displayed first; this adds an extra row to your keyboard but can be toggled dynamically). If you’re using a vendor themed ROM, there is an option to have Minuum use the Noto font for emoji (the default typeface used by Google). Text shortcuts cannot be defined.

    Multiple languages

    Only a dozen languages are supported at the moment. You can freely change each language’s layout between QWERTY, QWERTZ, AZERTY, Colemak, Dvorak and alphabetical layouts.

    Switching languages is easy: you can either long press the space bar, or swipe up and left if you’ve replaced the voice button by the language button. You don’t need to, though, since you can use multiple languages simultaneously and Minuum will guess which language you need rather accurately (and if not, you can always force the language you want).

    Correcting input and predictions

    Minuum heavily relies on auto-correction, especially when the keyboard is minimized. It’s surprisingly accurate, too. If you want to correct a word, you can go back to it (the experimental cursor bonus panel helps with that) and select another suggestion. Auto-correction can also be turned off with the tap of a button (“sloppy typing”), allowing you to type whatever your heart desires, be it a series of abbreviations or your special lingo.

    While you can import words from the Android user dictionary, there doesn’t seem to be a way to view, edit or remove learned words easily. You can make Minuum forget words by long pressing them in the suggestions pane, though. An option is also provided to learn the names of your contacts.

    As for predictions, they seem to be very simplistic.

    Themes and customizability

    Minuum is very customizable — you can choose from a dozen of themes (some even change depending on the app or time of day), or make your own (however, you can’t specify a background image, only colors).

    Other than that, you’re able to modify several features. To list a few, you can enable or disable gestures, get rid of the space bar row when Minuum is minimized and customize the keyboard’s height.

    Other features

    Other than the ones mentioned above, you can also enable bonus panels to edit the clipboard or to share/search for text you’ve typed.

    Compact and floating modes are also available, which respectively let you dock the keyboard to the right or left, or freely move it around the screen and resize it. Unfortunately, there is no quick way to switch between the modes.


    You can review Minuum’s privacy policy here. An Internet connection is required to download language packs.



    Multiling O Keyboard


    Typing and swiping are both supported. The tolerance can be configured for each, though they still require more precision compared to other keyboard (especially swiping). Swiping to the space bar between words for continuous input is possible, though it doesn’t seem to work for more than two consecutive words.

    Symbols are shown on the main keyboard. You can long press a button or swipe down from it to insert the symbol you want (this works for all secondary characters, not only punctuation), or swipe from the “.” or “,” keys (each shows a different set of symbols; you can customize these symbols as you wish). Typing capitals is done by swiping up instead. The keyboard really makes good use of gestures for quick input.

    Several layouts are available (you can even make your own from scratch), and you can easily switch between them at any time by swiping from the space bar. Some of them include a row for numbers, others include arrow keys, etc.

    Emoji and text shortcuts are both supported. Add-ons are required for this, and can be installed from the Google Play store or the website. Text shortcuts are defined from the settings screen (a shortcut is to swipe from the gear key to “autotext” on the keyboard). Emoji are separated into several categories (around 30), which can take some time to get used to, but generally makes finding emoji easier. Text emoji and many rarely used symbols are also listed (e.g. ♜ ♘ ♞ ✔ ✓ ✘).

    Multiple languages

    Language packs are installed from the Google Play store or the website. Switching between them is a breeze, even when you’ve got half a dozen — simply swiping from the space bar can list up to half a dozen languages, allowing you to select any of them easily.

    Switching layouts is done in a similar manner, and you can even make your own. Pre-made layouts include QWERTY, QWERTZ, AZERTY, Dvorak, Colemak, Neo, Bépo, several variations of QWERTY, a phone keypad and then some.

    Correcting input and predictions

    Undoing a correction is done by pressing the backspace button after it is made. To learn a word, you can touch it in the suggestions bar. You can also increase or decrease the rank of any word by long pressing it in the suggestions bar then tapping on the option you want.

    Selecting previous words to correct them always moves the cursor to the end of the word the first time you try it. This makes going to a certain character harder than it needs to be.

    Arrow keys and cursor control keys are easily accessible in any layout by swiping from the gear button, and might be on the main pane in certain layouts as well.

    Predictions are non existent at first, but learn from your typing habits as you go. You can also paste any text you want and have the keyboard learn from it, by swiping from the gear key to “Learn”. Default predictions are customizable and can be used for punctuation, dates, copying and pasting from the clipboard and more.

    Themes and customizability

    Let’s get this out of the way: this keyboard is ridiculously customizable. Pretty much every aspect of it is: fonts and colors, wallpapers, key layouts, long press contents, and a lot more. Don’t like the available layouts? Make your own, from scratch. Many themes can be downloaded from the website, and you’re able to share the ones you make easily.

    This can be overwhelming for many users, but the defaults are very usable and many pre-made themes and layouts are available. The help document also covers most of the keyboard’s aspects.

    Let’s say it one more time: ridiculously customizable.

    Other features

    Transformations can be applied to selected text, allowing you to easily quote text or put it between parentheses. Funky text transformations can also be used to translate text, use full width, exotic or emoji characters, change the case of the selection and more.

    Using the phonepad can be used to make and input calculations with ease.

    Transliteration is available for some languages. Useful dictionaries such as Linux commands and Hinglish can also be downloaded.

    Several other features are also available, but many fall within the “crazy customization” category.


    Multiling O Keyboard does not have Internet access. Additional languages and add-ons are installed as separate packages.



    MyScript Stylus


    MyScript Stylus understands your handwriting, and it really is accurate (even without a stylus). Using it is intuitive and works for letters, numbers and symbols, and several gestures are provided to make usage easier (for example, you can go to a new line by swiping down then left).

    Unfortunately, that is the only input mode available. It is very useful for language layouts you might not be familiar with (e.g. Arabic) even though you have no problem writing it, but using a traditional keyboard is much faster otherwise.

    Text shortcuts and emoji are not supported.

    Multiple languages

    Several languages are supported, and dictionaries help by providing accurate corrections and suggestions. Switching between languages can be done by tapping the language button, but dual language input is not possible. The layout adapts correctly to RTL languages.

    Correcting input and predictions

    Correcting input is rather easy — to remove text, you can just scribble it. If you want to replace something, all you need to do is write over it. You can even split words by literally splitting it with your finger, giving you space to write between the two parts, or join them by drawing a bridge between the letters.

    Predictions are not supported, and there doesn’t seem to be a custom dictionary for user defined words.

    Themes and customizability

    Options are provided to modify the text size, color, ink thickness, scrolling speed and baseline position. This allows you to adjust the keyboard for better results, although the looks can’t be heavily customized.


    You can read MyScript’s privacy policy here. Full Internet access is required to download additional language data.



    NextApp Keyboard


    If Hacker’s Keyboard and the AOSP Keyboard had a baby, it would probably look like this. It’s actually based on the AOSP Keyboard (which means it’s also similar to Google Keyboard in many aspects).

    NextApp Keyboard supports both normal typing and gesture typing. The latter requires a compatible binary library, which you can usually find as /system/lib/ if you have Google Keyboard installed. Gesture typing is quite accurate. Note that gliding over the space bar cannot be used to separate words.

    You can access numbers and symbols by long pressing the top row or tapping the “(+%” button (you can also swipe from this button, which directly switches to the secondary pane). You can also enable a row for numbers from the settings screen or the “mini” configuration pane, without leaving the current application. A pleasing surprise is that doing so actually removes the numbers from the secondary pane completely, and makes all symbols fit on the same page.

    You can use emoji and text emoticons by long pressing the Enter key. Emoji you’ve used recently are saved in the first tab. Custom text shortcuts can be defined in the system’s personal dictionaries, as NextApp Keyboard respects that.

    Multiple languages

    Additional languages can be enabled from the settings menu. Switching between them is done using the language key, or by long pressing the space bar. Simultaneous language input isn’t supported.

    Custom layouts can be defined for each language. You can choose from QWERTY, QWERTZ, AZERTY, Colemak and Dvorak. The PC layout can be toggled at any time from the mini configuration pane.

    Correcting input and predictions

    Offered corrections are usually accurate, and you can modify the aggressiveness for automatic correction in the settings. If you want to undo a correction, you can press the backspace key right after it is made. The arrow keys also come in handy to move the cursor when correcting mistakes or trying to select text.

    The system user dictionaries are used and respected. The transition from the AOSP keyboard and Google Keyboard are seamless, as defined text shortcuts also work out of the box. Adding a word to the user dictionary only requires a tap.

    Contact names can be taken into consideration for corrections, if the option is enabled in the keyboard’s settings. Another option allows offensive words, though adding these to your dictionary might have a better effect.

    Next word predictions are offered as an option, though they’re not very smart.

    Themes and customizability

    You can select one of several themes for the keyboard: Holo, Material Design, Flat and seven more. Other customization options are also available, allowing you to modify the keyboard’s size, typeface, behavior for some terminal apps and then some.

    Other features

    All keys you’d expect to see on your PC’s keyboard (arrows, function keys (F1-F12), Esc key, etc) and Ctrl- combinations are provided. These are extremely useful when using a terminal app or coding.


    NextApp Keyboard can only download files (for language packs), and does not have full Internet access.


    NextApp Keyboard is currently in beta, during which paid features can be tried for free.




    SwiftKey supports both typing and gesture typing (called “Flow”) — the latter is optional and can be disabled in the settings. Flow is very accurate, even when used to input entire phrases without lifting your finger (this is done by passing by the space bar between words).

    Numbers and symbols can be seen on the main keyboard and are accessed by long pressing the corresponding key, or by switching to the secondary pane (which offers a numpad for inputting numbers). The secondary pane’s layout is entirely different from the primary pane’s, which may take some time to get used to. Additionally, a numbers row can be enabled in the settings. Common punctuation can also be quickly inputted by swiping left or right from the “.” button.

    If Flow is disabled, two gestures can be used: swiping left deletes the previous word, and swiping down hides the keyboard. Otherwise, long pressing the back space key removes the words one by one.

    The keyboard supports emoji and offers a tab for recently used ones, although the emoji pane’s scrolling lags noticeably and doesn’t integrate very well with themes. Emoji predictions can also be enabled in the settings screen, which suggests emoji relevant to the word you’re typing (e.g. typing “smile” suggests the smiling face). It is not possible to define text shortcuts.

    SwiftKey inserts a space after every word or punctuation. This behavior cannot be modified, and could be annoying to some users.

    Multiple languages

    You can install and enable additional languages from the settings activity. SwiftKey lets you type simultaneously in up to three languages (you don’t need to switch manually between them).

    You can modify this behavior by changing one of the languages’ layout, but it’s not possible to separate the different languages while having them use the same layout.

    Available custom layouts are: QWERTY, QWERTZ, QZERTY, AZERTY, Bépo, Colemak and Dvorak.

    Correcting input and predictions

    Corrections and predictions are excellent, and are what made SwiftKey so popular in the first place. New words are learned automatically. While you can’t turn this off, long pressing a suggestion is enough to make SwiftKey forget it.

    Selecting previous words is a bit wonky — pressing the middle of a word to correct it, for example, will move the cursor to its end the first time you do it (tapping again works as intended). This can make correcting a letter slightly more frustrating that it needs to be, but you can get used to it.

    An additional row for arrows keys can be added, which can help with positioning the cursor and correcting mistakes.

    The Android user dictionary is not used, and contact names don’t appear to be imported.

    Themes and customizability

    Fifteen free themes come pre-installed with the keyboard. Additional themes, paid and free, can be downloaded from the SwiftKey Store. A few themes put the designers’ skills into serious doubt, but you can also find some good choices.

    Other features

    SwiftKey Cloud allows you to import new words from sent emails and social networking posts. It also backs your data up and sync it across multiple devices. Finally, it enables “Trending Phrases”, which makes SwiftKey aware of trending expressions for predictions.

    You can also choose from three different keyboard modes without leaving the current application, by long pressing the “123” key: “Full” is the traditional mode, “Thumb” splits the keyboard for easier typing with your thumbs, and “Compact” shifts the key to the left or right to make one finger typing easier.

    You can also undock and resize the keyboard with the same method as above.


    You can find SwiftKey’s privacy policy here. An Internet connection is required to download additional languages, themes, and to access cloud related features.





    Swype’s intended input method is, as you might have guessed, swiping, which is pretty accurate. You can also type normally or use handwriting, although handwriting recognition is lacking in accuracy.

    Several gestures are available and make swiping much easier. For punctuation, simply swipe from the one you want to the space bar (though this starts inserting spaces before punctuation when you’re trying to input more than one). You can also capitalize any letter by swiping over the keyboard after reaching it.

    Swiping from the Swype key to the numbers row also switches to the numpad, allowing you to type numbers with ease. Alternatively, you can long press keys to access secondary characters, or switch to the symbols pane.

    Swype does not support emoji or text shortcuts, but there’s a pop-up for text emoticons. You can also swipe over the relevant keys (e.g. “:”, “-” and “(“) and Swype will suggest the correct text emoticon.

    Multiple languages

    Several languages are supported (but not all can be used for handwriting). Switching between languages is done by long pressing the space bar, but switching back to the last language is as easy as swiping from the Swype key to the space bar. Dual language support is also supported.

    You can change each language’s layout to one of the following: QWERTY, QWERTZ and AZERTY.

    Correcting input and predictions

    A pane with cursor keys and extra buttons for cursor and clipboard control can be used (Swype-“?123″) to make editing and correcting input easier. Swype also tries to suggest smarter corrections when you go back to a word, by looking at the word before and after it.

    To learn a new word, you have to tap it in the suggestions bar then tap “Add to dictionary” (you can also set the keyboard to automatically learn new words). Forgetting words is done by long pressing a suggestion. You can also edit the Swype’s dictionary from the settings menu. Importing the Android user dictionary or contact names is not possible.

    Next word predictions are optional but fairly simple.

    Themes and customizability

    A dozen themes can be used with Swype, but you cannot create your own. There are also a few customization options, such as changing the keyboard’s height

    Other features

    Swype uses its own engine for voice dictation, “Dragon Dictation”.

    Optional cloud features allow you to backup and sync learned words, automatically update Swype with trending words, or learn from social networks (Facebook and Twitter) and sent emails.

    Additional gestures are provided to select all text (Swype-A), and to copy (Swype-C), cut (Swype-X) or paste (Swype-P) text, as well as launching Google Maps (Swype-G-M) for some reason and searching for the highlighted text (Swype-S). Tapping the Swype symbol also selects the current word, which can be used to easily replace it. Automatic spacing can be disabled by swiping from the Swype symbol to the backspace key — this is useful for compound words.


    You can find Nuance’s privacy policy here (Nuance is the company behind Swype). An Internet connection is required to download additional languages, to use Dragon dictation, and to access cloud related features. Data collection is optional and you must opt-in for it.



    Thumb Keyboard


    Typing with Thumb Keyboard is quite comfortable, and the different layouts and key spacing settings can be used to make it fit your needs.

    Swiping up, down, left or right can be assigned to custom actions such as deleting words, moving the cursor or bringing up text shortcuts. Sensitivity is configurable as well, should you keep activating gestures by mistake.

    Numbers and symbols are shown as secondary keys on the main keyboard, or even as primary keys depending on the used layout. Either long press the relevant key or switch to the secondary pane (“?123″) to input them. An additional row can be toggled at any time from the keyboard, and can be configured to contain special characters and shortcuts (e.g. arrow keys, copy/paste, etc) as you desire.

    Text shortcuts can be defined and used from the keyboard. Custom labels can be assigned for each for easy identification. Text substitutions are separate, but also available from the settings screen.

    Emoji aren’t supported at the moment. Typing quickly sometimes confuses the keyboard (for example, “kekeyboard” is typed instead of “keyboard”).

    Multiple languages

    Switching between installed languages is done by sliding the space bar, after you’ve installed them from the settings activity. Dual language input is not possible.

    Available alternative keyboard layouts are QWERTY, QWERTZ and AZERTY.

    Correcting input and predictions

    Corrections are pretty good. Corrected words are subtly underlined, and the original word you typed is saved and can be easily restored. Backspacing after a correction is made also undoes it.

    To teach the keyboard new words, you can tap it twice in the suggestions bar. Removing words from the dictionary can only be done from the settings.

    Words from the Android user dictionary and contact names are automatically imported, although text substitutions are not and must be redefined manually.

    Next word predictions are sort of available — your typing habits are learned, but only used once you start typing the next word (for example, if you often type “XDA developers”, “developers” will be the first suggestion after you type “XDA d”.

    Themes and customizability

    Around 25 themes are available (some are built-in, others need to be downloaded). Custom colors, fonts and backgrounds can also be used to modify parts or all of the theme.

    Many other customization options are also offered, such as the ability to modify the keyboard’s size, edit secondary symbols, pick different layouts for portrait and landscape, etc.

    Other features

    Several different layouts can be used: other than the standard layout, you can dynamically switch to large and compact split layouts, giving you direct access to numbers, punctuation or arrow keys. Tablets and phones each have specifically designed layouts.


    An Internet connection is required to download additional languages and themes.





    TouchPal supports both typing and gesture typing (called “Curve”). The latter is optional and fairly accurate.

    To input secondary characters (numbers and symbols), you can either long press the primary key or swipe it up or down for the top and bottom rows. Inputting numbers and punctuation is made much quicker by this feature. You can also switch to the secondary pane, which also has a numpad.

    The keyboard supports emoji (recently used ones are also stored in a separate tab), “emoji art” (similar to ASCII art, but uses emoji) and text emoticons. You can access the emoji screen by either tapping the emoji button, or by flicking the space bar up. Emoji suggestions can also be enabled, making them come up when relevant keywords are typed (for example, typing “smile” suggests the smiling face). Text shortcuts are not supported.

    Multiple languages

    You can install extra languages in the settings screen. Switching languages is usually done by swiping the space bar, but this can be configured if you prefer having an extra key for it.

    Mixed language input allows each language to have a secondary language for which words are also predicted/corrected from (for example, you could use English and French, and then English and Spanish, as two different layouts).

    Correcting input and predictions

    Adding a word to the custom dictionary is done by tapping it in the suggestions bar (you can also enable auto saving). To edit or remove a word, you can long press it when it comes up in the suggestions or via the settings screen. The Android user dictionary is automatically imported when you first use the keyboard, and you can also import contact names and have TouchPal learn from messages and Twitter.

    You can also access the “Edit” screen, which offers arrow keys and buttons to select text more accurately.

    Prediction is optional. It learns from what you type and gets better… if you’re predictable. “Wave” is an interesting feature that puts predictions directly on the keyboard (e.g. “next” appear next to the “n”), and lets you swipe from it to the space bar for faster input.

    Themes and customizability

    TouchPal comes with two built-in themes and an option to set a custom image as the keyboard’s background. You can download more themes from the TouchPal store (paid and free themes are available).

    Additional options can be used to customize the keyboard’s size and font, as well as other minor settings.

    Other features

    TouchPal lets you choose from three main layouts: PhonePad (T9), Full and T+ (which combines two letters and one symbol on each key). You can do this without leaving the currently opened app. For the Full layout, you can also choose between QWERTY, QWERTZ and AZERTY.

    You can pin several buttons to the top bar, which also acts as a suggestions bar once you start typing. These include buttons to quickly access: layouts, the edit screen (offers cursor and clipboard control), themes and more.

    Add-ons (currently limited to a custom emoji skin) and sub dictionaries can be downloaded from the TouchPal store. Sub dictionaries add or prioritize jargon (e.g. words related to computers or to the World Cup) or place names (such as Chicago locations).

    Word trends are enabled by default, and make your keyboard aware of trending words automatically.

    TouchPal Premium ($2.99/year) gives you access to backup and sync features, as well as cloud predictions — smarter predictions from the Internet. A 7-days trial is available.


    You can find TouchPal’s privacy policy here. An Internet connection is required to download additional languages, dictionaries, themes, addons, and to access cloud related features.



    Summary Table

    Note that this table oversimplifies some aspects and completely omits others. It is not meant as a means to compare the different keyboards, but to provide you with a quick idea to see if a keyboard might be suitable for you (for example, if you only want a keyboard that supports emoji, you’ll be able to see which keyboards to check quickly).

    For additional details, refer to the in-depth review.

    Gesture input Numbers row Text shortcuts Emoji Multiple language input Predictions Themes
    Google Keyboard
    Hacker’s Keyboard
    Hodor Keyboard
    Multiling O Keyboard
    MyScript Stylus Handwriting
    NextApp Keyboard
    Swype Swiping & Handwriting
    Thumb Keyboard

    The post Guide: In-Depth Look at the Best Android Keyboards appeared first on xda-developers.

    by GermainZ at February 05, 2015 04:55 PM

    January 31, 2015

    Send Links to Any Nearby Device with CaastMe


    There already are many solutions on the Google Play store if you want to send a link to one of your devices — but what if you wanted to do it quickly without having to install any software or logging in to a website on the recipient end? Most apps require you to do either or both, which can be a hassle (or even a security risk) in some cases.

    Luckily, XDA Forum Member wyemun has developed CaastMe. Inspired by how WeChat and WhatsApp use QR codes, the developer took it up as a challenge to code the website and Android app in less than a day. Don’t be fooled by the short time it took, though, as CaastMe is actually very polished and simple to use.

    You probably want to know how it works at this point. After you’ve installed CaastMe, only two steps are actually required:

    • First, go to (this works on desktop browsers as well as some mobile browsers, although you may need to enable the “View desktop site” option if you have any display problems). A QR code will appear on your screen.
    • From your mobile, share the link you want to CaastMe. This will instantly open your camera, allowing you to scan the QR code. As soon as you do that, you’ll be redirected to the link you just shared.

    You can also view the screencast below if you’d like to see it in action. If that’s not enough, you’ll be pleased to know that sharing other data (such as images) is planned for the future.

    If you’re looking for a hassle free way to share links that doesn’t involve installing software everywhere or dealing with logins, head over to the CaastMe forum thread now to grab it and give it a try.

    The post Send Links to Any Nearby Device with CaastMe appeared first on xda-developers.

    by GermainZ at January 31, 2015 02:29 AM

    November 20, 2014

    Droid Turbo Review

    Let me tell you that first of all the Droid Turbo's definitely amazing phone. I personally was going to hold up the Nexus 6 but then I got cold feet and decided to pull the trigger on this phone and have not been disappointed. So far the battery is definitely the most impressive feature. Basically the Nexus and the Turbo are basically the same they have the same processor the Nexus has the ISO camera clocking in at 13 megapixels and the turbo has a 20 megapixel camera with no ISO however coming from a G2 the pictures are definitely fine and dandy. The screen is extremely awesome except that YouTube for some god awful reason doesn't have 1440p or 1080p support which is super annoying. Another thing that I would like to point out about the turbo is it the battery literally is incredible I would definitely consider myself a power user in this phone easily and I mean easily last a day and a half to two days there have been several times where I fell asleep without charging my phone woke up with 20 percent and it got me through about 10 hours or so but that's with me probably only being on it for about an hour but even still that's impressive. The battery is good now so we can only imagine what kind of improvements will see when lollipop rolls out which I'm hoping will be soon the camera should also improve with that considering google rolling out their new API for photography. Overall I'd say that between the Nexus and the turbo its more of just if you want a 6 screen or 5.2 inch screen. If you have any questions or concerns please feel add comment on this post and I will get back to you soon as possible thank you for reading

    by Captain Clyde ( at November 20, 2014 03:37 AM

    November 16, 2014

    HTC Re first look

    HTC Re first look

    I’ve put off the real first look post on this camera until I had the finished product in my hands. I did have a video and post ready to go after the Double Exposure event. I didn’t post it, not because the hardware and software were bad, but because they weren’t finished. Seeing an unfinished product doesn’t help anyone decide to buy said product.

    Before I continue, it should be noted this is only after a few hours of owning it and a bunch of sampling. A full review will be forthcoming. I’m having some fun with it so far, so let’s see what this little thing is all about.


    I felt it was my duty to pick up the blue Re. I am a Maple Leafs fan after all! It almost matches my Reimer sweater. It measures a hair under four inches tall, an inch and a half between the edge of the lens and the edge of the capture button and the barrel diameter is 3/4 of an inch wide (Metric: ~10 x 3.81 x 1.905cm). There are only two buttons, a shutter button and a slow motion button. The micro-USB for charging and micro-SD slot are both on the bottom.

    I purchased a 32GB card for the Re, as 8GB isn’t a hell of a lot for video. I’m not sure yet how I’ll be using this, but there are some truths that always apply: You can never have enough SD cards and it’s better safe than sorry. Changing the card involves removing the waterproof cover, giving the card a push and pulling it out. In practice this isn’t a lot of fun. The cover is continually in the way as it’s tethered to the bottom of the camera and the card doesn’t eject far enough for me. Tweezers would have helped, but I got it eventually.

    Sample Photos

    Rather than make a usual gallery I’m going to post a couple and talk about them a bit. Context is important in this part.

    Normal Stills

    RE CameraRE Camera


    It seems a little hit and miss here. The first photo is the Re taking a picture of the live view on my HTC M8. That one came out a bit fuzzy and off. The latter, however, is of acceptable quality. If you’re expecting full frame or APS-C quality out of a camera with a f/2.8 16 megapixel sensor, prepare to be disappointed.

    Ultra Wide Angle

    RE Camera RE Camera RE Camera


    Of the last two photos, one is with wide angle and one isn’t. Can you guess which one? This ultra wide angle setting was something I was eager to test and left me wanting in the end. All my test shots leave a huge fisheye effect on the photo. The picture of the bench seat shows just how exacerbated it can be. In the Re app, it is possible to turn a wide angle shot into a regular shot, but something curious happens there:

    Screenshot (01_27PM, Nov 16, 2014)

    It is actually named “defisheye”. I’m not saying this is a bad thing. I’m saying know what’s going on here with the wide angle shots. There are surely some really creative people out there who could use this to their artistic advantage. That or make every iPhone bend…




    I would be remiss in my duties if I didn’t admit my stupidity here. I never turned ultra wide angle off before I shot this video. I’ll do a proper comparison for the full review, but the big takeaway here (aside from dat fisheye) is the audio is actually quite good. The microphone is essentially a pinhole affair atop the camera. As I walked through those crisp New York Autumn leaves, you can hear the crunch really well. I’m not disappointed at all with the Re video functionality.

    I realize there is a lot missing here. It is important to remember this is not the full review. This is playtime for us, and in a week or so of actually using the Re properly there will be much much more to say. Stay tuned for that fun!

    Land of Droid -

    by Scott Kenyon at November 16, 2014 07:37 PM

    October 31, 2014

    Chrome Beta easter egg game

    Chrome Beta easter egg game

    Ever wanted to see a dinosaur jump over a cactus? No, well me either but Google has made it into a game of sorts. The new easter egg in chrome beta allows you to play that game. Just turn on airplane mode, go to the chrome beta, type in, and click on that dinosaur.

    Warning: My phone opens chrome beta in quite a weird way I am using a oneplus one with mahdi rom but I wanted to show off the easter egg anyways. 


    Land of Droid -

    by Tyler Maciaszek at October 31, 2014 12:06 PM

    October 07, 2014

    New Tech mine hard difficulty

    Another update went live in the market last night. This one fixes various issues introduced in the last update, but the biggest change is to add a hard difficulty to the tech mine.

    Hard levels are variations on the normal set, but… harder. In some cases this just means that there are fewer ores, but in others there are subtle differences, large layout changes or even objective changes in place. If it is popular I’ll try and do the same for the rainforest pack.

    You can also now play tech mine in freeplay mode (although there is a bug that means you need to go into the mission pack level select screen first, otherwise you’ll get a crash when starting the level – this will be fixed in the net update).

    Other changes:

    – Fixed visibility beaneath miner when near an edge (the tile beneath you now reveals where approaching an edge)
    – Fixed pro/extreme difficulty mix up
    – Made objective stars harder to click accidentally
    – Improved some menu layouts
    – Fixed some bugs in the map screen
    – Fixed signs not appearing
    – Fixed harold short changing you when he buys multiple items
    – Fixed various bugs with photography in tech mine
    – Performance improvements

    by Psym at October 07, 2014 11:06 PM

    September 28, 2014

    Reimagining Play: Interview with PlayMG’s Taylor Cavanah

    Last month, we brought you a review of the MG, an Android powered handheld gaming system designed for casual games. The combination of vanilla Android and the MG’s custom parental controls made the device a compelling option for gamers young and old alike, and its comparatively low price combined with the vast Android software library offered an unbeatable value.

    The team behind the MG had obviously done their homework and targeted the product to a very specific market which was otherwise being ignored. Rather than throwing out a half-realized device that didn’t resonate with any particular use case, the team engineered the hardware and software experience to their target audience to great effect.

    Taylor Cavanah

    Taylor Cavanah

    To learn more about the focus and vision which made the device a reality, we got in touch with MG’s physicist turned meta-gamer Taylor Cavanah.

    Creating the MG

    The Powerbase: Taylor, thanks for taking the time to talk with us. Can you start by telling our readers a bit about yourself and your background?

    Taylor: I’m a physicist and started my career in Nanotechnology at Zyvex.  After finding some success in developing the nanoprobing market for the semiconductor industry I decided to strike out on my own.  My buddies and I started our own software company – Locai – and a year ago we combined forces with the hardware and business guys from ACTScom to launch PlayMG.

    The Powerbase: What exactly is your role at PlayMG? What are your day to day responsibilities like?

    Taylor: My specific role involves game/app design, platformsoftware design, business development, innovation, and as is the case with all start ups – many more roles.  Day to day I was either talking with game houses, working with the hardware guys to design the user experience, writing the story behind our game within the gaming device app Origins, looking for interesting apps to work with, working with marketing to craft the messaging behind these features we were building, and testing devices in every possible way.

    The Powerbase: PlayMG has no qualms about the fact it has targeted the MG to younger gamers. Why do you think the younger gamer is so important? What makes the MG a better option than, say, mom’s old smartphone?

    Taylor: Every one has a slightly different opinion on this but for me the younger gamers make the most sense because they can’t have phones.  Whether their parents don’t want them or can’t afford the data plans, there are a lor of younger gamers who love apps but can’t get access to them.  The “hand me down” argument is definitely valid.  I can hand down my phone and just remove the plan and then they have a smart device.  That’s where our added benefits factor in to the equation.  You can’t get Family Collaboration, SpendSmart, or the Origins game in a hand me down.  And sometimes more importantly, you can’t get that “awe” moment when your son or daughter opens up your repackaged device from 2 years ago.

    Android and the MG

    The Powerbase: Its differences aside, the majority of the MG’s software is straight Android. Would it be safe to say that, if it wasn’t for the open nature of Android, the MG wouldn’t exist in its current form? Would have putting this same hardware out with a proprietary operating system have gotten you as far as Android has?

    Taylor: There is no way we would exist without Android.  The barrier of entry previously was just too high.  We got a solid and awe inspiring product to market in 9 months.  Core to that was not having to build an entire OS.  Not just in terms of getting something to market but that greatly helped us focus our time and money where it mattered – on the added benefits like Family Collaboration and Origins.  This is what I love about open source – you get to make products with extremely well designed experiences where it matters.

    The Powerbase: One of the biggest selling points early on was that the MG would be a vanilla Android device, meaning it would be as close to AOSP as possible. In the end the MG delivered on that promise, and is one of the few non-Nexus devices available running stock Android. Why was running stock Android so important for the MG?

    Taylor: Part of that answer has to do with my previous answer – it’s just easier to not build stuff you don’t need.  I think everyone can point to some larger companies that have large engineering staffs that have to build stuff because those salaries are being spent no matter what.  Then you get a lot of customization away from stock.  But most of that is useless and provides no value to the customer experience.  A lot of engineers also like the job security that building all of this custom stuff gives them.  They will always be needed because only they know how this version of flavored Android operates.  For us it was exactly that overhead that we didn’t want.  If we build our own flavor of Android then every new app or platform we create down the road has to take that into account.  We had to keep our focus on what mattered for the end user.

    The Powerbase: From a development perspective, stock Android is generally preferable to manufacturer modified builds, but what about the end user? It’s no secret that the most popular Android devices (such as Samsung’s Galaxy line) make use of manufacturer modifications to their interface and applications, so the public doesn’t seem to mind. Do you ever worry that shipping with stock Android rather than a build with more visual flair and streamlined functionality pleases the developers at the expense of the end users?

    Taylor: I have never believed that popularity of a device has anything to do with how well it is designed or received by customers.  The large software guys have proven time and again that being big in a space and having a ton of money can make up for a lot of deficiencies.  I say this because I don’t believe customers buy the Galaxy line because of the manufacturer improvements – most customers have never seen stock Android so they don’t know any better.  My guess is the commercial bashing the iPhone (hilariously with the parents in line) did a lot more than the user experience.  From what I’ve seen all of the added modifications make little difference to the real end users (not us tech types who are too deep in the space).  We found you could do an amazing amount of things just using the widget system in Android to change the user experience – without huge teams to build and then manage modifications.

    The Powerbase:  Some would say that shipping the device with vanilla Android only makes sense if it’s kept up to date with AOSP (such as the Nexus line), but the MG is still on 4.0.4. Why hold the MG back? Are there plans on updating to Jelly Bean (and beyond)?

    Taylor: We will update to Jelly Bean.  But with such a low saturation of Jelly Bean and many apps still not upgraded for the experience it doesn’t make sense to expend the effort.  Again we’ve got to focus on that end user experience and the only people ever asking for Jelly Bean are analysts or the random parent who just saw some article that mentioned the new Jelly Bean thingy for Android.

    Expanding Android Gaming

    The Powerbase: One of the best features of the MG, at least for parents, is unquestionably the Family Collaboration System. While it currently sets the MG apart from the competition, would PlayMG consider bringing it to generic Android devices? Perhaps charging a monthly subscription fee when used on non-MG hardware?

    Taylor: We are always weighing the pros and cons of releasing some of the proprietary apps to the Play Store.  Right now we only have to manage one device, we get to ignore fragmentation, and we have a competitive advantage.  I don’t see us releasing the apps until we are much more established.

    The Powerbase: An advantage of putting out an Android based gaming system is, of course, that you aren’t responsible for developing or publishing games for it (unlike traditional game consoles). That said, are there plans to talk to developers about MG optimized games? Is that already happening?

    Taylor: Nothing that I can talk about but we definitely have plans and some preliminary talks about using our PlayMG IP to create games.  Any game developers interested (especially if they want to do something outside of the normal bounds of gaming) should get in touch with us.

    The Powerbase: You can’t talk about Android gaming anymore without mentioning the OUYA; while it’s aiming for a completely different market than the MG, are there any parallels you draw between them? Do you see families owning both devices in the future?

    Taylor: Mine arrives in 3 weeks (if I had more time and money I would have gotten a developer version).  I would love to work with OUYA in the future and I do believe that console gaming and portable gaming will always be with us.  Where the hardware, software, and interfaces end up who knows but for now there are many opportunities that could be explored between the two companies.  For the next year though I’m guessing both of us will be too busy to pursue them.

    Looking Ahead

    The Powerbase: A common criticism of the MG is that it lacks physical controls. This was a design decision based on the intended userbase for the MG, but it’s also undeniable that there are hardcore gamers out there that would appreciate an MG-like device with physical input. Is this a challenge PlayMG might take up in the future? Perhaps a device like the Sony Xperia Play, but in a non-contract form like the MG?

    Taylor: I don’t see that happening.  Our target user is not hardcore and in fact probably did not grow up with a game system that had controllers.  But at an even deeper philosophical level (get ready for the fan boy to come out) I think the portable gaming systems with controls aren’t just missing the mark but don’t really have a mark to hit.  Portable gaming is about the casual experience on the go or that little block of entertainment that you carry around in your pocket.  I have so many different serious game devices where I can have mind blowingly immersive experiences – but that’s not what you want in a portable gaming device.  At the end of the day we talked to a bunch of “gamers” in our demographic and they wanted a device they could put in their pocket versus a device that let them play games designed for pre-touch devices.

    The Powerbase: If it’s not giving too much away, what can you say about the future of PlayMG and the MG itself? Anything current or future owners should be looking out for?

    Taylor: We have some great plans for the Family Collaboration System – making it much more collaborative.  A lot of parents and even kids have asked for expanded features here.  I’m most excited about expanding the portable fun in the device.  The entire industry as a whole is barely scratching the surface of what you can do with portable gaming.  We have some very interesting things planned for making shared portable gaming experiences like no one has seen before.  Unfortunately I can’t say much more than that.

    Thanks to Taylor and the entire PlayMG team for their assistance and professionalism while we worked on the original hardware review and this interview. We’re very interested in seeing where the future takes PlayMG, keep an eye out here on The Powerbase for future coverage of this unique company and its products.

    by Tom Nardi at September 28, 2014 06:47 PM

    Win a Free Android Game Console Courtesy of PlayMG!

    Free Console???  Yep!

    PlayMG, a company dedicated to Android game consoles and safety online, wants to give one lucky Powerbase reader a PlayMG Android game console.  What is a PlayMG?  Well, we spent some time with the device several months ago.  You can read our impressions here.

    So, how do you win?  Easy! 

    1.) Find us on Google+ or Facebook.  Share the post!

    2.) Like us on Facebook or give us a +1 on Google Plus.

    3.) Come back here and leave a comment stating why you should win a PlayMG game console!

    That’s it!

    The winner will be chosen on Nov. 26th, so make sure to keep checking back! 



    PlayMG Specifications

    Check out Olivia Holt and Kyrie Irving enjoying the PlayMG below.


    Powerbase Review | PlayMG

    Powerbase Interview | PlayMG’s Taylor Cavanah



    by admin at September 28, 2014 06:47 PM

    July 17, 2014

    Freesat Android app launched

    Freesat, the vague organisation behind those TV tuners that let you get satellite TV without paying Sky any money, now has an official Android app. On a basic level it’s an EPG to tell you what’s on over the next seven days, although viewers with one of the more recent Freetime set-top boxes can pair it with their tuners and use their phones and tablets as remote controls — also triggering recordings from afar.



    It is therefore quite useful if you can get it to sync and work. Check out the Freesat app here.

    by eur0b0t at July 17, 2014 10:41 AM

    June 27, 2014

    Google I/O 2014 Slides and Demo

    Chet and I gave a talk entitled “Material Witness” at Google I/O today. I am happy to announce that the entire talk is now available on YouTube. I have also published the following resources:

    Google I/O 2014 demo

    by Romain Guy at June 27, 2014 06:39 AM

    June 17, 2014

    Moto Maker for Moto X hitting Germany on July 1st

    After way too much time as a US-only exclusive and with the phone it pimps to the extreme already starting to show its age, Motorola’s finally ready to launch the Moto Maker customisation service for the Moto X in Europe.

    According to Motorola Germany, the case modding service will launch exclusively for those who buy a phone through Phone House in the country. Phone House is the German wing of Carphone Warehouse, so here’s hoping CPW picks up the deal and launches the custom phone option here in the UK too.


    This could be the answer to the tricky “eccentric summer phone” problem we currently face. As long as it’s cheap.

    Link via Androidsis.

    by eur0b0t at June 17, 2014 07:30 PM

    June 02, 2014

    March 30, 2014

    Maverick 2.6

    Maverick 2.6 is just released with map tiles downloader. You can “paint” areas to download with one finger or select a rectangle block using multi-touch. Select on the left all zoom levels you want to download. Tap and hold to select at once all zoom levels up to the selected level.


    Download: Pro versionLite version

    Related posts:

    1. MX Video Player: best AVI/MKV player for Android
    2. Neat Calendar Widget
    3. Adobe Flash Player 10.1 on Droid X

    by Jeff at March 30, 2014 01:18 PM

    February 24, 2014

    The Galaxy S5

    Photos of the galaxy S5 leaked today, and let me tell you, I am not very impressed as far as the visuals go. This is a link to an album someone leaked today. The device itself doesn't look very impressive. The bezels are bigger than the S4, although the screen is bigger. A 2800mah battery with a rumored 2K screen is going to be a battery killer. The LG G2, came out 6 months ago and has a bigger battery than that, come on Samsung. I fear Samsung is falling into the same boat as Apple. Small subtle improvements each year, knowing that people will buy it because its "The Galaxy S5". I don't want that. I want something I pull out of my pocket, and people say "wow what's that!!!" Not, oh you have a galaxy? We're entering a time where phone manufacturers are all trying to make the next new fad (watches, fitbits, glasses) and unfortunately I don't see this being one of them, even though it will be. comment below on what you think about the S5!

    by Captain Clyde ( at February 24, 2014 07:21 PM

    February 08, 2014

    Grails based survey system, the android app

    Some time back I wrote an article describing the roosearch system I developed using grails. This is the second part, the android client, please checkout the previous article otherwise this might not make much sense! After completing the grails component, I had a RESTful API available to me, and I just needed to build an ... Read more

    by James Elsey at February 08, 2014 09:56 AM

    January 21, 2014

    Dragging Images When Scaling Must Be Restricted

    I recently retired, but I have one more little tip to blog about. While I have a few ideas for some apps, I doubt that I’ll have to do the kind of intensive problem solving required during my job. Therefore this might be the last post.

    I was involved with a suite of clients for business intelligence. The primary clients were created with Adobe Flex and ran in the browser. They provided for creating and viewing reports. The iOS and Android clients provided for viewing reports. Thus features were implemented in the Flex product first, and we who supported the mobile clients had to cope with adding them. The feature relevant to this blog entry was the ability to specify numerous scaling options for images (e.g. photos) that could be incorporated into reports. Some of these scaling options had no natural analog to the Android scaling options for images.

    To support the requirement for panning and zooming images I took full advantage of the PhotoView library provided by Chris Banes. This library was a great solution for all but two of the required scaling options. Our product allowed for two rather silly options of fitting an image to the width or to the height of the viewport that the report designer drew on screen. If the other dimension of the image was greater, then part of the image would be invisible. I had to provide support for letting the user drag the image around in the viewport so that all of it could be seen.

    The PhotoView library would have handled this except for the fact that we needed to set the scale type on the ImageView class to MATRIX, and PhotoView does not allow that. With no natural analogous scaling type to our “fit width” and “fit height”, I had to create a new subclass of ImageView to handle just the images requiring those types. The ReportImageView class has some code for doing the scaling needed to fit height or fit width, but I am leaving that out here so as to concentrate on the drag support.

    public class ReportImageView extends ImageView implements VersionedGestureDetector.OnGestureListener {
    private VersionedGestureDetector mScaleDragDetector;
     public ReportImageView (Context context, AttributeSet attrs){
        super(context, attrs);
        mScaleDragDetector = VersionedGestureDetector.newInstance(context, this);
      public void onDrag(float dx, float dy){
         Matrix matrix = getImageMatrix();
         Matrix copy = new Matrix(matrix);
         copy.postTranslate(dx, dy);
      public void onFling(blah, blah...){
        //no op
      public void onScale(blah, blah...){
        //no op

    The salient features are 1) make a new VersionedGestureDetector using the class provided in the PhotoView library, 2) implement the onDrag() method of the OnGestureListener interface. In onDrag() make a new matrix and post-translate it to the coordinates supplied, then set that as the image matrix.

    When the scale type is “fit width” the user can drag the image up and down if the height is greater than the width. When the scale type is “fit height” the user can drag the image left or right. If you get such oddball requirements for images, try this solution.

    by Todd Folsom at January 21, 2014 08:48 PM

    December 07, 2013

    Robots! Part 2, the android client

    Continuing on from my previous post, I’ve created an android client that I can use to send commands to my python server. Ultimately I want to be able to control the robot remotely, the best way to do this would be to control the robot from a tablet or a phone which communicates wirelessly with ... Read more

    by James Elsey at December 07, 2013 11:01 AM

    November 15, 2013

    Moving An Android View By Dragging It

    Yes, here is another article about moving or dragging a view with a finger, but I think I can give a complete example in one place. Most of what I read while developing a movable component did not give a fully working result. I started with the article on making sense of multitouch at the Android developers’ blog. Then I had to go search at Stackoverflow. I give some of those references in the code comments.

    I had a requirement to provide a magnifier view, or jeweler’s loupe, which would provide a magnified view of a graph as the user dragged the view over the graph. The magnifier would become visible on a long press and stay visible while the user dragged it over the graph. The frame of the magnifier would display the magnified contents as provided by a helper method (not described here). Here’s a rough example from my testing app.

    magnifier example

    magnifier example

    It shows a small bitmap (unmagnified in this test) and some bogus tooltip values to the right of the image. When this magnifier is dragged over the image (i.e. a real graph), the magnified area will update as will the tooltip information.

    Let’s look at the code. Here’s the touch listener for the magnifier. It requires that the magnifier (a RelativeLayout) be passed in on the constructor.

    private class TouchListener implements View.OnTouchListener{
       public TouchListener(RelativeLayout frame) {
         this.frame = frame;
    private float aPosX;
    private float aPosY;
    private float aLastTouchX;
    private float aLastTouchY;
    private static final int INVALID_POINTER_ID = -1;
    // The active pointer is the one currently moving our object.
    private int mActivePointerId = INVALID_POINTER_ID;
    private RelativeLayout frame =null;
    public boolean onTouch(View view, MotionEvent event) {
    switch (event.getAction() &amp; MotionEvent.ACTION_MASK) {
       case MotionEvent.ACTION_DOWN:
         Log.d(TAG, "action down");
         // Save the ID of this pointer
         mActivePointerId = event.getPointerId(0);
         final float x = event.getX(mActivePointerId);
         final float y = event.getY(mActivePointerId);
         // Remember where we started
         aLastTouchX = x;
         aLastTouchY = y;
    //to prevent an initial jump of the magnifier, aposX and aPosY must
    //have the values from the magnifier frame
         if (aPosX == 0){
             aPosX = frame.getX();
          if (aPosY == 0){
              aPosY = frame.getY();
        case MotionEvent.ACTION_UP:
          Log.d(TAG, "action up");
        case MotionEvent.ACTION_POINTER_DOWN:
        case MotionEvent.ACTION_POINTER_UP:
          // Extract the index of the pointer that left the touch sensor
           final int pointerIndex = (event.getAction() &amp; MotionEvent.ACTION_POINTER_INDEX_MASK) &gt;&gt; MotionEvent.ACTION_POINTER_INDEX_SHIFT;
          final int pointerId = event.getPointerId(pointerIndex);
          if (pointerId == mActivePointerId) {
             // This was our active pointer going up. Choose a new
             // active pointer and adjust accordingly.
             final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
              mActivePointerId = event.getPointerId(newPointerIndex);
      case MotionEvent.ACTION_MOVE:
         // Find the index of the active pointer and fetch its position
         final int pointerIndexMove = event.findPointerIndex(mActivePointerId);
         Log.d(TAG, "action move");
         float xMove = event.getX(pointerIndexMove);
         float yMove = event.getY(pointerIndexMove);
         // Calculate the distance moved
         final float dx = xMove - aLastTouchX;
         final float dy = yMove - aLastTouchY;
         if ( Math.abs(dx) &gt; mTouchSlop || Math.abs(dy) &gt; mTouchSlop){
            // Move the frame
            aPosX += dx;
            aPosY += dy;
    // Remember this touch position for the next move event
    //no! see and
    // last comment in
    //aLastTouchX = xMove;
    //aLastTouchY = yMove;
    Log.d(TAG, "we moved");
    //in this area would be code for doing something with the magnified view as the frame moves.
        case MotionEvent.ACTION_CANCEL: {
          mActivePointerId = INVALID_POINTER_ID;
        return true;
     private void reset(){
       aPosX = 0;
       aPosY = 0;
       aLastTouchX = 0;
       aLastTouchY = 0;

    Here is the first important point. At line 29, we see that the magnifier will initially jump from the touch point because the touch event streams relative and absolute coordinates. Prevent this by setting the aPosX and aPosY fields to the initial X and Y coordinates of the frame.

    Next, look at line 76 in the case for ACTION_MOVE. The multitouch example from the Android developers’ blog would have us remember the touch position. However that causes problems, as described in the citations from Stackoverflow, so don’t remember the last touch point. If the distance moved is greater than the touchSlop (line 71), just go ahead and move the frame (lines 85 and 86).

    With these two modifications to the code shown in the multitouch example you should be able to happily drag a view around to your heart’s content.

    by Todd Folsom at November 15, 2013 08:08 PM

    October 25, 2013

    MicroConf Europe

    I don't envy conference organizers these days - most of what's being said can be read the next day, for free, on line, at your own pace, from the comfort of your own home, and without spending a bundle of time and money to sleep in a far away hotel.

    Competing with that is not easy, but the guys at MicroConf managed to.  I would sum up the weekend by saying that it was a "very high bandwidth experience".  Every day, from breakfast until I turned in, I was chatting with people or listening to speakers during the conference itself.  That's aproximately  16 hours of being "on", and by the time I got home to Padova, I was exhausted!  But at the end of the day, I felt like it was worth it being there in person, because of all the interaction with other people.  The speakers' talks all ended up on line, more or less, but all the chatting and discussion and getting to know everyone is the human element that is tough to replicate on line, and one of the most important reasons to attend a conference in person.  Prague is also a beautiful city - I wish I had had more time there to check it out.

    Here are some highlights and notes, in no particular order:

    • Rob Walling talked about actual, concrete numbers when discussing his current project's revenues.  There's a ton of handwavy stuff out there on the internet, but real numbers are tough to beat.  What makes it especially nice is that they also felt "real": they're good numbers, no doubt about it, but not stratospheric, science fiction numbers that leave you feeling like "ok, whatever, but that's not the planet I live on".  They're numbers that make you think "maybe, if things go well, I could do that too".
    • The number of "I'm from X, but live in Y" people at the conference was high.  Irish but live in Spain, American but live in Japan.  Or maybe just noticeable because I'm in that category myself.  There were people attending from the US, Europe, Japan, South Africa, and even Australia.  Impressive!
    • Almost all of the speakers had very specific, concrete advice that I can and will apply to LiberWriter, time permitting.  I read, and have read, a lot of business books.  Most of them are kind of fluffy, truth be told, in that they've got one decent idea, and a lot of filler to turn what could have been a tight, ten-page article into a book.  This was quite different in that there were a whole lot of tips and tricks being thrown out.
    • Rob's wife Sherry gave a talk about life with an entrepreneur.  Having two kids and a wonderful wife myself, it's a point of view that I was very interested in hearing about.  Judging from the people I chatted with, this was not your typical "startup" conference with a bunch of 20-somethings with no family and no ties - a lot of the other people attending had kids to think about as they launch their ventures.  A question I asked of Rob was how much of a leap he took from consulting to working on his own products, with the answer being that he's actually pretty risk adverse.  No Silicon Valley story about betting the house and everything else on the company - apparently, revenues from the web sites and products were good enough that there wasn't even really a leap to make when he quit consulting.
    • The size of the conference was just right: enough people that I didn't quite manage to meet everyone, but not so many that it was overwhelming.  In downtime between talks, and during dinners, breakfasts, lunch and so on, the speakers were very available to chat with.
    • Patrick McKenzie seems to have stumbled into his life's calling as someone working at the border of software and marketing.  The amount of advice, anecdotes, and data that he was continually spinning off was incredible.  He comes across as being a down-to-earth, approachable, friendly person.
    • Part of the balancing act the organizers have to work with is where people are at: some people had an idea but no concrete business.  Some of us (me) make some money but not too much.  Others have viable businesses that they make enough to live off of, and then there are those who seem pretty much 'set'.  It's difficult to find people to speak to each audience without losing some of the others.
    • The thing I liked the most about a lot of what was discussed was that it seems realistic.  Few people at the conference were from Silicon Valley, and yet... they're successful!  I like hearing about success stories that work out really well for the people involved, but still feel like something attainable.  People should be looking to emulate the successful guys here, not looking at extreme outliers like Bill Gates or Mark Zuckerberg.
    • I'm used to tech conferences, where it's all about the technology.  There was very little actual tech talk at MicroConf - it seems like everyone knows their stuff and was interested in learning about marketing, sales, and so on.

    However, since it was a business conference, I also have to put on my cold, hard accountant hat.  Will the conference pay for itself?  Only time will tell.  I learned a variety of interesting and useful things, many of which I think I can put into practice.  The problem is finding the time between consulting work and family, but that was a bottleneck before, too - I had, and have, more things to do than time.  Also, to be very direct about it, how much of what I learned could not have been learned by carefully reading accounts of the conference, slides, and other material published on the internet?  A lot of it.  I'm not sure I would have paid attention to all of it though, so the conference was definitely nice in that it exposed me to some talks and ideas that otherwise I might have brushed off before giving them a chance.  In terms of dollars and cents, I won't be able to say for a while whether it was a sensible investment or not.

    Would I go again?  I'd like to - it was a lot of fun and the people were great.

    Like I said, it's tough doing conferences because your competition is the internet!

    by David N. Welton at October 25, 2013 10:21 PM

    August 06, 2013

    Try Some Old School Fun With 3D Snake

    The old snake game has gotten a facelift and a new name. 3D Snake for Android is just what its name implies. The old school game has gone 3 dimensional, and it has never been so much fun. The premise is still the same. You are a snake eating as you crawl along in a box getting bigger and bigger as you go. If you are not fast enough to stay away from the edges, you die. It gets harder the bigger the snake gets, of course. In this newer version, you are a cute little grass snake eating bugs and growing as you go along, but if you get too big and lose control you are in trouble.

    It is an analogy for life really, if you think about it. We go along our lives and our triumphs can make our pride grow and grow until we can no longer fit in the constraints of our lives or around the people in it. We can't get out of our own lives, therefore if we grow so large as to bust out, we lose it. Maybe we don't literally lose a life, but we very well could lose much of what makes up our lives as we know it.

    No one wants to think about that though. The goal here is to get as big as possible and stay away from the edge, which is not as easy as it sounds. Do it well thought and watch your score climb on the Swarm leaderboards.

    by Beti ( at August 06, 2013 09:07 PM

    July 30, 2013

    Avoid The Mines In Minesweeper ++ Lite

    Minesweeper is the classic game of "can you figure it out before you die." It is the perfect way to kill time or rest your brain with some mindless activity for just a few minutes without anyone knowing.  Countless execs over the years have utilized the game to take a break while looking busy, and now with Minesweeper ++ Lite for Android the same technique can be used by anyone anywhere on their android mobile device.

    While it may take a second to catch on, once you do you will be hooked. You must "guess" where the mines are and stay away from them. This becomes easier to reduce with time and guessing is no longer necessary once you figure out what you are doing. 

    What makes it even better is the ability to post scores to the Swarm leaderboards. Compare your progress and rank with players from around the world, but be certain you change your name lest anyone else lurking around the boards catch on to your sneaky break time routine. Of course, be wary of who you share your gaming name with also, but a little inner office camaraderie never hurt anyone.   Enjoy free time, or use it as a cover to make you look busy when you are not. Either way you will love the fun that Minesweeper offers.

    by Beti ( at July 30, 2013 04:48 PM

    July 08, 2013

    Disney’s The Lone Ranger Game Limps onto Google Play

    lone ranger gameAnother week passes, and another movie tie-in game gets released. This week it’s The Lone Ranger game, and it’s from Disney, so it’s certainly something that grabbed our attention. The Long Ranger game takes place in a world full of outlaws, and you’ll help the Lone Ranger out by taking out bad guys and completing simple quests. The game bills itself as a “3D Role Playing Adventure” and while they got the 3D part right, I would hesitate to call the game adventurous. The Lone Ranger game is energy/time based, and you’ll spend most of your time tapping to search for objects or shoot bad guys. There are duels, but they aren’t much fun and get repetitive quick. It’s also a ‘freemium’ game so be prepared to drop some dough if you run out of juice and want to keep playing.The reviews for the new Lone Ranger movie have been less than kind, and the same can be said for the reviews of The Lone Ranger game. It’s looks good, but there’s not a lot of fun to be had unfortunately. Disney has put out some outstanding Android games, so I’m going to give them a pass on this one, and suggest you do the same as well as the Lone Ranger game is definitely a dud. If you’re in the mood to play a game on autopilot you can pick up Disney’s The Lone Ranger game for free on Google Play. The Lone Ranger

    by Adam Field at July 08, 2013 10:35 PM

    June 30, 2013

    Chocolate Liberation Front releases Figaro Pho Fear Factory for Android

    figaro.pho.fear.factory-androidSome people are scared of things like spiders while others have a horrible fear of clowns or thick moustaches. Figaro Pho is just that type of person, and he’s even got a popular ABC show to prove it. He also has his own Android game with the recently released Figaro Pho Fear Factory.

    by Adam Field at June 30, 2013 10:13 PM

    June 26, 2013

    T-Mobile To Announce “Simple Choice with no credit check” plans

    It seems that T-Mobile always does this. They introduce something fairly interesting, and then follow it up with something also kind of interesting, but also a little confusing. It got bad a few years ago, when they had multiple tiers of plans and it was difficult to tell the differences between them in many cases. Their latest foray piggybacks their Uncarrier campaign. “Simple Choice with no credit check” will provide the credit-challenged with access to those same Uncarrier plans.

    There are many catches, of course, and the confusion of the plan might turn off consumers before they get a chance to see how it can work for them. For starters, this is advertised as, and mostly effective as, a family plan. Individual users with bad credit are better off examining T-Mobile’s traditional prepaid plans, which are pretty close to the Simple Choice plans, but with no deposit.

    Yes, a deposit is required for the no credit check plans. That starts at $60 for the first line, followed by a $40 deposit for the second line, and $20 each for the next two lines. A fifth line is also a $20 deposit, but that has to be a non-phone internet device (tablet, for example). The deposit is refundable, so presumably it covers you for potential non-payment.

    The biggest loss here is the lack of automatic payments. Why T-Mobile would take that away I don’t understand. Companies absolutely love autobill features, and it’s pretty standard in prepaid. (Virgin Mobile offers a $5 per month discount if you sign up for automatic payments.) Maybe it will be available in the future, but for now it’s off the table.

    Combine all that with the necessity of paying for a device in full, up front, and you have a not so attractive plan. There will be many customers, for sure, who will want an option like this. But given the ease of T-Mobile’s Simple Choice plans, it seems as though this appeals only to those who absolutely cannot pass a credit check. In which case, they’re stuck with what T-Mobile offers.


    The post T-Mobile To Announce “Simple Choice with no credit check” plans appeared first on MobileMoo.

    by Joe Pawlikowski at June 26, 2013 12:30 PM

    June 21, 2013

    Monoprice 8320 Earbuds Deliver at a Low Price


    Earbud headphones almost always suck. At least for me, and I know plenty of others who simply cannot stand them. I remember seeing everyone walking around with the signature white iPod earbuds as I walked around New York City in the mid-00s, wondering how they found them at all comfortable. For me they alway fell out, so I had to readjust them every 30 or so seconds while walking.

    A recent trend in earbuds is including three different size buds with each pair. If the default buds are too big or too small, you can change it to one of the other included sizes. This is nice in many ways — I actually have a pair rigged up with two different sized buds on each ear — but I still can’t seem to find a pair that stays in my ear while walking.

    Recently I connected with Troy Redington of FatWallet, who raved about the Monoprice 8320 earbuds. At first he went on about the sound quality, how they all but eliminated outside sound. Then he went on about the price, around $8, which just blows away the cheap earbud competition. When I asked about comfort he said he had dozens of earbuds lying around, but these fit far better. So sure, send me a pair for review.

    I’m not going to say that these earbuds stayed in my ear like a dream. I’m not going to say that they’re superior to the Bose over-ear headphones I have. But I will say that in terms of earbuds, they are the most comfortable I’ve worn and they do deliver on sound quality. While they’re not great for spoken-word audio, such as podcasts, they do a real good job with all styles of music I tried.

    As you can see in the picture atop this post, they’re not exactly normal looking earbuds. They have something of a hook on top, which is actually great. The hook helps the buds fit snugly in your ear. It takes a little twisting, but I got them to fit very well without moving too much. The cords also wrap around your ear, rather than hanging straight down. This probably makes the greatest difference. Since using these, I started wrapping all of my earbuds around my ear like that, and it honestly does make all of them more comfortable.

    Yet what stood out to me about the Monoprice buds is that they’re made of nylon, rather than the cheap plasticky, rubbery substance you see with most headphones. It’s strange, because the buds are so cheap, yet the material feels anything but. They just feel more durable, which is nice. When I buy headphones under $10 I expect to replace them pretty quickly. These feel like they’re last for a while.

    You can check out the FatWallet site to get these earbuds at an insanely cheap price. They do offer cash back if you register, which is nice. Again, it’s tough to do better for $8. It’s probably tough to do better for triple that.

    The post Monoprice 8320 Earbuds Deliver at a Low Price appeared first on MobileMoo.

    by Joe Pawlikowski at June 21, 2013 12:30 PM

    April 08, 2013

    Switch The Party On with Native Union’s Bluetooth Speaker

    With Native Union’s SWITCH Bluetooth wireless speaker, you’ll be able to share your favorite music with everyone in the room. It’s also a great way to amplify games and movies from Bluetooth-enabled devices, and it can be used as a professional conference call solution with its full duplex microphone.

    amwiblog nativeunion switch beach sm Switch The Party On with Native Unions Bluetooth SpeakerDesigned by professional sound engineers to ensure exceptional sound and optimal clarity throughout the frequency range, the SWITCH features three powerful speakers — including an active sub-woofer and has an enhanced bass-reflex system. Featuring an intuitive volume control the SWITCH also enables you to effortlessly alternate between music and calls for up to 14 hours at a time. The battery is so powerful, the SWITCH can also function as a power bank for your mobile devices.

    The SWITCH can be used either vertically or horizontally, and it features a soft touch exterior that’s available in multiple colors. Check it out today, and get your party started.

    April 08, 2013 01:00 AM

    March 26, 2013

    Jabra Adds a New Dimension of Sound

    Delivering state-of-the-art design, ease-of-use, and outstanding sound quality, Jabra’s newest corded and wireless stereo headphones are perfect for hard-wearing, everyday use and portability. The lineup includes the over-the-head Jabra Revo — available in corded and Wireless versions — and the small but tough in-ear Jabra Vox.

    amwiblog jabra revowireless sm Jabra Adds a New Dimension of Sound

    The Jabra Revo Wireless

    Jabra has upped the ante sonically with the addition of Dolby Digital Plus technology for all three models. With Jabra’s exclusive Sound App for iOS and Android devices, you’ll enjoy a richer and fuller sound that is often missing in digitally compressed audio, breathing new life into your favorite music while giving it extra depth and dimension.

    Jabra Revo Corded and Wireless

    Both the Jabra Revo Wireless (a 2013 red dot design award winner) and Jabra Revo corded headphones (the latter available in gray and white) are solidly constructed using an aluminium frame, steel hinges, and a shatter-proof headband for extreme flexibility. Both the corded and Wireless versions are super comfortable with a padded headband and plush, memory foam ear cups. They feature a foldable design for quick, compact storage and come with a detachable cord and USB charging for convenience.

    Play or pause music, skip tracks, and take calls with ease by using in-line controls on the corded version instead of searching around for your phone. The Revo Wireless utilizes both Bluetooth and Near Field Communication (NFC) technologies to pair with your device, and its Turntable Touch Control allows you to easily play, skip, or pause your music while also managing calls.

    amwiblog jabra vox sm Jabra Adds a New Dimension of Sound

    The corded Jabra Vox

    Jabra Vox

    Size matters… especially when earphones so small command massive sound like Jabra Vox. Optimized for superior sound and performance with portable devices, the Jabra Vox really packs a punch. Get the perfect fit with specially designed ColorCore EarGels for enhanced comfort and deep sound. Vox’s earbuds are engineered to rest comfortably for extended use. The Vox also includes in-line controls for playing or pausing music as well as taking calls.

    Dolby Digital Plus

    With Jabra’s exclusive Sound App (available for iOS and Android devices), Dolby Digital Plus adds that extra depth and dimension to your music — extending bass performance and enhancing high frequencies so your music retains its clarity.

    The Jabra Sound App automatically identifies your music files so it’s easy to get started. Simply download the App, and you’re ready to go. Use the App to create and browse through playlists, share music on Facebook or Twitter and adjust the graphic equalizer so you can play your tracks as you want to hear them.

    Find the right headphone for your needs today, whether it be the corded in-ear Vox, corded over-the-head Revo (in gray and white), or the Revo Wireless for the ultimate in freedom.

    March 26, 2013 03:56 PM

    January 14, 2013

    The Software Millionaire Next Door

    I've been reading "The Millionaire Next Door" and have so far found it to be a pleasant book with a good message: don't waste your money on silly things and appearance (fancy suits, fancy cars, expensive boats, etc...), save what you do earn consistently and constantly, invest wisely, and so on.   Wikipedia has a good summary:

    One of the things I like about it is that it focuses on "ordinary" wealthy people, those with a million or more in the bank, but not the Warren Buffets or Bill Gates types that are extreme statistical outliers.  There are plenty of people in the US who have done well by themselves by slowly but surely putting together enough money to be financially independent, without, however, being in the spotlight.   As the book says, these are the kind of people who maybe own a local chain of businesses doing something fairly ordinary, but doing it well enough to succeed.  They may very well not live in a fancy house, nor drive an expensive car, or otherwise outwardly draw much attention to themselves.

    The world of software does not revolve around "dressing for success" (you noticed?), but we do tend to focus on the "big winners".  Gates, Jobs, Zuckerberg, Larry & Sergey, Larry Ellison, and so on are the stars of the show.  Of course, the economics of software being what they are, instances of winner-take-all markets with one big fish and a lot of also-rans are not uncommon.   However, that is not the only story, and I think it'd be interesting to know more about those in our industry who have accumulated significant wealth, yet are not the guys with more money than they could possibly ever spend on things that aren't, say, country-sized chunks of real-estate.

    I'm guessing they'd fall into these categories:

    • Highly paid workers who have consistently saved over the years.  There are examples in the aforementioned book about people with relatively low salaries who happened to be very frugal and invest well (and have had some luck in their investments too).  These people would probably tend to be older, as it takes a while to save up that kind of money, and since this industry is so young with so much turnover, I would not think there would be a lot of people out there like this, but who knows, maybe there are a bunch of IBMers with this kind of story.
    • Those who got in on the right IPO, like Google or Facebook or something like that.  These events not only generate billions for those at the top of the heap, but for the right person at the right place at the right time, can mean significant wealth even without being in the upper echelons of the company.  My suspicion is that this kind of IPO, where everyone cashes out, is not common enough to have a lot of people in this category, but who knows, maybe it adds up over the years.
    • Those who own or started software firms that do something that's not very visible, but nonetheless dominates some particular niche.  This is where I'd guess most of them would be, but I certainly have no data or even anecdotes to back this up.

    It'd be very interesting to gather some actual data on this, although I'm not in a position to do so myself - I wouldn't even really know where to start. 

    As I age, I think the third category has begun to seem appealing in many ways - I'm simply not cut out for the Big Company life, and I'm not interested in living in Silicon Valley and going "all in" on the latest startup - I already did that, and while it was fun and I don't regret it, it's not the kind of thing I'd want to do now that I'm married and have kids.   Incidentally, this more relaxed, under the radar approach is exactly what is expoused in one of my favorite books of the past few years, Start Small, Stay Small.

    Edit : I finished reading the book and reviewed it here:

    by David N. Welton at January 14, 2013 10:23 PM

    December 22, 2012

    InDrive: Custom Car Home 1.0

    We are pleased to announce the launch of a new Android application that may appeal to everyone who uses their phone while driving.

    InDrive is a GPS-enabled application that combines the standard car home functionality with a trip computer and Poweramp support. The app makes it very easy to launch your favorite applications, directly dial numbers, view your trip information and control music playback*. It will auto launch when placed in a compatible car dock. If you don’t have a physical car dock, InDrive provides an option to force the phone into car mode, in which it will override the Home button.


    * The music screen is designed to work in conjunction with Poweramp. Without Poweramp installed, you will only be able to do very basic controls such as switching to the next song in the default Android music player. Support for other media players is not guaranteed.

    Please download the app from Google Play and tell us what you think. Your feedback is much appreciated.

    by Jeff at December 22, 2012 01:59 PM

    July 23, 2012

    Transfer of data using Intents (Part 2)

    Hi everyone!

    In spite of trying hard, I couldn’t prevent the delay. I am again sorry for that. Let’s move on. In the last post, I introduced the concept of transfer of data between activities. I also described the code for declaring an Intent which could help us in accomplishing the task.

    Now, it’s time to look at the code of, the second activity which will help us in adding new tasks to the list. As mentioned earlier, this activity will have an EditText to allow the user to input the task name and a Button, which when clicked, will take the user back to and add the task to the List. The code for the click listener for this button looks as follows:

    1. String taskName = taskEdit.getText().toString();
    2. Intent intent = this.getIntent();
    3. intent.putExtra(“task”, taskName);
    4. setResult(RESULT_OK, intent);
    5. finish();

    Here, taskEdit is an object of class EditText. The first line extracts the data input to the taskEdit, converts it into string and stores it in a variable. Second line is used to grab access to the intent which called this activity. The third line is the one which actually does the job of putting the data onto the intent. intent.putExtra function used in this line basically adds the information contained in the second parameter to the intent and the first parameter provides a way to access it. We will see the use of the first parameter in a greater detail later, when we will try to access this information in I hope that the fourth and fifth lines will be pretty easy to understand. If not, please refer to the last three posts on Intents.

    The above code ensures that the clicking of the button takes us back to the initial activity with an intent which contains the name of the new task that is to be added to the list.

    Clearly, the callback function described in Part 1 of this post will be used to access the information carried by the intent since this function will be automatically called when the control is given back to this activity via an intent. Straight away, let’s look at the code!

    String extraData=data.getStringExtra(“task”);

    I think it is self-explanatory. We are extracting the information from the variable data using the value of the first parameter of the function in Line 4 above, and saving it in a variable called extraData. The second line just appends this value to the list (referred by taskText).

    In this way, we received the name of the task from a different activity and display it in our main activity. This provides a clean and user-friendly interface which is the basis of a useful app.

    But here, we have not taken care of the situation when the user calls the intent to but wants to cancel it later. This is not perfect programming, though it can be dealt very easily. How?

    In the next post, we will finish our discussion on intent and move on to explore some new concepts in Android App Development.

    Till then, BYE!

    by Nikhil Gupta at July 23, 2012 12:44 PM

    July 11, 2012

    Transfer of data using Intents (Part 1)

    Hi all!

    Last time, we had looked at the most basic communication which can be achieved among activities. It allowed us to switch between activities back and forth, which is an important concept used in almost all the android apps these days.

    Moving on, it’s time to look at the data transfer using Intents. Consider the case of a simple Task application, in which a To-do list is shown in one activity while another activity performs the task of adding new items to the list. So, what’s happening here?

    Basically, we need to create a new task in the second Activity and somehow transfer it to the first activity so that it could add it in the existing list. Note that we are not using any database. If we do so which is done most of the times, this app will be useless in itself. But, I am still discussing this app because I feel that it’s the best in order to understand the concept of transfer of data which you may need in various other apps.

    In this post, I will not go through the layout or the entire code of the app. I may go through it later. But, I hope that you will be able to do so after going through the previous posts. As a hint, we will be using a TextView (to display the list) and a Button while making the first activity, while the second Activity will have an EditText and a Button.

    Assuming that we have an EditText in the second Activity and when the user presses enter, the string in the EditText is captured in a string variable called NewTask, we need to simply tranfer the contents of NewTask to the first activity.

    To achieve this, we need to call the intent when the button in pressed in the first activity in such a way that the Android platform knows that some data will be coming back to this activity. Continuing with the app from the previous post by replacing the startActivity(intent); by

    startActivityForResult(intent, 1);

    as a parameter acts as a unique code used to distinguish data received by this intent from the data received by other intents if more intents are used. Using the above functin, we have been able to call the intent, but we have not yet accessed the data which comes back with this intent.

    To achieve this, we need to use a callback function which will called automatically when the intent returns. Let’s look at the code for this function:

    public void onActivityResult(int requestCode,int resultCode,Intent data)
              super.onActivityResult(requestCode, resultCode, data);
                          //Code to extract the required information from the variable data

    In our case, requestCode is 1. resultCode is a variable which is set to value RESULT_OK if the intent was successfully handled. data is the variable which contains the data received from the other activity.

    In the next post, we will look at the code to extract the information as well as the code for the second Activity which puts the information in the intent.

    Till then, BYE!

    by Nikhil Gupta at July 11, 2012 05:36 AM

    July 04, 2012

    Planet Android summer cleaning

    Blogs come and blogs go, and nowhere is this more apparent than in a fast changing technology area such as Android. Today I removed 12 feeds from PlanetAndroid that haven't had updates in a while (some since 2010). If you feel your feed was removed in error, let me know.

    In a reply to a recent post, one reader said they'd like to see fewer app reviews and news articles here, and more development diaries, tutorials, and community activities. What do you think? What are your most favorite and least favorite feeds? Let me know in the comments.

    by Ed Burnette ( at July 04, 2012 03:00 AM

    June 26, 2012

    Kikoriki: The Beginning

    Kikoriki: The Beginning [by HeroCraft] is yet another arcade adventure android game from the people that brought you Dragon and Dracula. The game is based on the Russian cartoon series “Smeshariki”, but the show is known by different names in other countries.

    Kikoriki - GameplayKikoriki - Gameplay

    The characters of the animated series become superheroes in this adventure, which is always fun for kids and adults. Children will probably enjoy it more than adults due to the excruciatingly child friendly atmosphere of the game. However, some grown-ups might give it a go just to try out the various super powers each hero possesses.

    Kikoriki - GameplayKikoriki - Gameplay

    Your mission is to vanquish evil and thus save the boring grown up world from destruction. How does one do that? Well, by working together of course, just like best friends should! The power of friendship is demonstrated in the game by allowing the player to switch between two characters during gameplay and use their individual super powers to solve puzzles, defeat bosses and do anything to complete the level.

    Kikoriki - GameplayKikoriki - Gameplay

    The three chapters of the story take you from the happy land of Kikoriki to the boring grey Megapolis. Each chapter tells a different story and allows you to play various characters. The game has brightly colored, simple and yet well drawn cartoon style graphics with smooth animation. The controls might take a bit of getting used to, the joystick in particular. I do like the soundtrack, which reminded me of the music from good old cartoons like Tom & Jerry. Kikoriki will only set you back $1, unless you don’t really love your children that much, in which case you can opt for the lite version. Either way, the game will help keep your kids preoccupied and will not only help them learn about friendship and growing up, but will also teach them that if you touch purple butterflies it will make you sneeze stars.

    by Gamer-K at June 26, 2012 04:44 PM

    Dragon and Dracula

    Dragon and Dracula [by HeroCraft] is a fun and challenging arcade android game that is sure to touch the hearts of the Mario and Spyro the Dragon generation. It takes the jumping, coin collecting and shrooms – the inspiration for many 90’s games – from Mario, giving the role of the hero to an increasingly awesome dragon, whose job is to defeat Dracula.

    Dragon and Dracula - GameplayDragon and Dracula - Gameplay

    The fact that you start the game with just a little baby dragon that jumps can be disappointing, at first. However, as you progress through the 25 levels of the game, learning new skills, collecting artifacts and battling enemies, you will see the little guy go through three stages of evolution. With every new form the dragon grows, acquiring fire breathing, flying, climbing and head bashing abilities, not to mention a mean look.

    Dragon and Dracula - GameplayDragon and Dracula - Gameplay

    The dragon’s natural abilities are enhanced with the always popular temporary perks such as invulnerability, increased speed, regeneration and many more. They will be of great help on the quest to destroy the Dark Lord’s minions and defeat the legendary vampire that is Dracula. Gamers who find the adventure to be unfulfilling can enjoy some mini games that are unlocked during gameplay.

    Dragon and Dracula - Gameplay

    Controls might take a couple of deaths to get used to and actually made me play with my tongue out, which I have not done in a while. The menu is very well thought through, easy to navigate and has all the information on game controls, settings, stats and sharing options. Thanks to the simple yet visually pleasing and familiar graphics, the gameplay is smooth. Not a fan of the soundtrack though, which sounds like old Japanese game techno music. For only $1 Dragon and Dracula has a lot to offer with tricky levels, epic boss fights, addictive mini games and main character customizations. If you are just looking for a fun adventure or want to prove yourself on a global scale, this is the bargain to go for.

    by Gamer-K at June 26, 2012 04:33 PM

    June 14, 2012

    New PlanetAndroid feed policy

    Starting today I'll be removing most feeds that include embedded ads. Currently, I pay for PlanetAndroid's upkeep out of my own pocket, with no revenue coming in from ads or donations at all. When an ad appears in one of our feeds, it takes space away from the other articles and gets clicks based on the drawing power of the whole site, including feeds with no ads. That didn't seem fair.

    I grandfathered in a handful of feeds for various reasons including new sites that need the extra juice that PlanetAndroid brings to help them get started. Some sites report that being listed on PlanetAndroid has doubled their traffic! If you feel your feed was unfairly removed, or if you make a new feed without the ads and want to re-join, just let me know. Thanks for your support.

    by Ed Burnette ( at June 14, 2012 12:48 AM

    June 12, 2011

    Android and openness

    On Thursday I gave a talk at TriLUG. The slides I used are available but will probably be rather cryptic without my accompanying commentary.

    Although I understand that Google has had to contend with both the open source zealots and the closed-everything carriers, upon looking at the trend, I find Google’s actions getting more disturbing. Just as Android seems to be coming into its own and Google should have more power than ever to twist arms, Google seems to be wimping out – or turning evil. I hope I’m wrong and they’re just waiting for the right time.

    One thing I completely forgot to talk about is the abandoning of the Nexus One. When it came out, it was supposed to herald a new age of cross-carrier, stock-Android phones (with a built-in connection-sharing capability, no less). Only T-Mobile really picked it up – you could use it on AT&T but without 3G. Verizon and Sprint were supposed to be coming out with support for the same concept and just a different radio, but instead they released their own phones, with the usual modifications and constraints. So why did Google let them? They didn’t have to; the Skyhook case shows that Google can essentially pull their blessing from any phone for any reason. An Android phone without the Google apps isn’t going to be very attractive to consumers. Why didn’t Google force Verizon and Sprint to kowtow to the Nexus One before allowing them to release any more Android phones?

    by Luke Meyer at June 12, 2011 12:59 AM

    April 01, 2011

    Is this thing on? ::feedback:: ouch…

    Well – I don’t want to let the *entire* month of March go by without a post. I just haven’t done much with tech this month, though. It sucked. But evidently my absence has caused a surge in popularity, according to my stats. Less is more?

    If I remember correctly – is Honeycomb the first version of Android where we actually saw a preview, got to fiddle with the SDK platform preview before it was actually embodied in a device? If so, better late than never, and let’s hope it means we’re on the way to seeing more of a community effort. Hey, it took a while for Red Hat to learn with Fedora, too, and they didn’t have voracious proprietary partners to contend with.

    I have a meetup or two to arrange, but I hope I get some time to work further with ORMlite shortly.

    Happy April Fools Day tomorrow!

    by Luke Meyer at April 01, 2011 01:01 AM