Planet Android Headlines

↑ Grab this Headline Animator

December 21, 2014

Set Up Your MediaTek Device with Comprehensive Beginner’s Guide

android-baby

As can be seen with the use of MediaTek chips in Android One devices such as the Micromax Canvas A1 and phones from Meizu and Lenovo such as the MX4 and Vibe X2 respectively, devices with MediaTek processors are aplenty in the Android market. Despite a stigma of not being developer friendly or adhering to GPLv2 requirements, recent strides have been made by MediaTek to change this reputation, evidenced by their sponsorship of XDA:DevCon ’14, and releasing the full kernel source for Android One devices. Such progress is comforting for owners of MediaTek devices, both old and new. But if you’re a new owner and don’t know where to start, this essential beginner’s guide may be what you’re looking for.

Written by XDA Senior Member carliv, this tutorial is written specifically with the beginner in the mind, teaching you all the essentials you need to know to get started with a MediaTek device. This includes:

  • Rooting the phone
  • Making a NVRAM backup
  • Making a backup of the stock ROM
  • Generating and flashing a custom CWM
  • Getting a root file explorer

Handy screenshots, which are quite detailed, accompany each step of the tutorial, providing a visual guidance. Additionally, the tutorial requires you to be in possession of a couple of tools which are listed and linked in the post.

This guide is a must for any new owner of a MediaTek device. If you would like to find out more, visit the MediaTek beginner’s guide thread for more information.

The post Set Up Your MediaTek Device with Comprehensive Beginner’s Guide appeared first on xda-developers.

by Samantha at December 21, 2014 09:00 AM

Sony Updates AOSP Sources to Android 5.0.1

sony_xperia_z3_running_android_lollipop_blog

Just a few days ago, Sony did an utterly fantastic job by pushing out numerous device trees for all 2014 Qualcomm based Xperia devices to its GitHub account. This came as a rather big surprise for some, but Sony wants to finish this year with a little extra oomph. The Japanese OEM decided to update the device trees, kernel and binaries to Android 5.0.1. Way to go, Sony!

The list of currently supported devices is impressive. In addition to almost the entire Xperia Z line, Sony also supports the Xperia E3, Xperia M2, Xperia T2 Ultra, and Xperia T3. If you have one of those devices, you can try to build the AOSP by following the provided materials. Keep in mind that these ROMs aren’t intended for daily use and you have to unlock your bootloader first in order to flash them. This will unfortunately break the camera, so backuping your TA partition isn’t a bad move.

Sony’s move is definitely good for developers who can use the updated binaries to improve the stability of custom ROMs. It’s also a fantastic learning material for all Android enthusiasts wanting to learn more about Android development.

As always, updated source can be found at Sony Mobile’s GitHub. More information about Sony AOSP Project is available one Sony Developer page.

[Thanks to XDA Senior Recognized Developer jerpelea for the tip!]

The post Sony Updates AOSP Sources to Android 5.0.1 appeared first on xda-developers.

by Tomek Kondrat at December 21, 2014 01:00 AM

December 20, 2014

Bandai Namco and DeviantArt teaming up for Outcast Odyssey art contest

Bandai Namco has teamed up with DeviantArt for a pretty interesting competition which revolves around art, or more specifically art for Bandai Namco's game Outcast Odyssey. For those of you not familiar with this game, Outcast Odyssey is a Dungeon Crawling, RPG, and Card Collecting hybrid game that is currently available on Android.

The competition is for designing card art for the Outcast Odyssey game where anyone who participates gets to try and design a new character.  You will need to create an original artwork to be adapted into a virtual card depicting a Steampunk Warrior, Wizard/Warlock or Dragon/Monster that belongs in the adventurous fantasy world of the Outcast Odyssey Game.

As you can probably guess, the grand prize for this competition will be to have your character/art come to life within the game as a limited edition card to be released in a future update. You will work with the game's art team to accomplish this. What's even better is that there will be three grand prize winners, not just one.

For those of you interested in trying your hand at this, you can check out the full press release below for additional details or the official contest website over at DeviantArt.

Official Website: Outcast Odyssey DeviantArt Contest

Bandai Namco Games and DeviantArt Come Together for Outcast Odyssey Gaming Card Design Contest

Partnership will turn winning artwork from independent artists into battle cards used within the mobile game

New York, NY - December 19, 2014 - DeviantArt and BANDAI NAMCO Games will be partnering for an exciting new character design contest for the popular Outcast Odyssey card battle mobile game.

The DeviantArt participants will be challenged to create an original artwork to be adapted into a virtual card depicting a Steampunk Warrior, Wizard/Warlock or Dragon/Monster that belongs in the adventurous fantasy world of the Outcast Odyssey App/Game.

Three grand-prize winners from the DeviantArt community will work with the Outcast Odyssey creative team to bring their portrait or illustration to life as a limited edition trading card available within the game.

BANDAI NAMCO has a long history of collaborating with independent artists, having already hired two DeviantArt community members, Warren Louw and Chuck Pires, to help design cards for Outcast Odyssey. This campaign will tap into DeviantArt's hugely diverse community of artists, many of which are already producing incredible, original artwork incorporating fantastical elements from their favorite video games. Through engaging and activating these artists, BANDAI NAMCO and DeviantArt hope to recognize emerging talent through promoting the artwork across multiple platforms.

"After having already worked with DeviantArt in the past, we're excited to be collaborating with them again on this contest," said Shawnee Swarengn, Director of Marketing Mobile at BANDAI NAMCO Games. "We're looking forward to tapping into DeviantArt's huge community of cutting-edge talent, and we're eager to continue working with indie artists on our future mobile projects."

"DeviantArt is thrilled to be partnering with BANDAI NAMCO Games for the release of Outcast Odyssey," said Daniel Bornstein, DeviantArt's Vice President of Advertising Sales. "BANDAI NAMCO's support for independent artists from within the DeviantArt community will generate a lot of buzz among our members, as well as high-quality entries. The possibility of having winning artwork featured in Outcast Odyssey offers such a great opportunity, for both BANDAI NAMCO and DeviantArt, to continue their commitment to sharing new artwork and developing talent within video game design."

Please visit DeviantArt.com for official rules.
Official Website for Outcast Odyssey at http://www.outcastodyssey.com/.
DeviantArt Campaign at http://madizzlee.deviantart.com/journal/Outcast-Odyssey-Card-Master-Challenge-488466925

December 20, 2014 04:11 AM

Zen Studios' CastleStorm gets updated with a new Survival Mode

Zen Studios' hybrid game CastleStorm has been updated with a new Survival gameplay mode which brings with it some new features for players to check out. For those of you not familiar with this game, CastleStorm is a blend of physics-based puzzler and real-time strategy and tower defense.

As you are probably guessing from the new game mode's name, Survival Mode has players confronted with wave after wave of enemies that need to be defeated in order to survive as long as possible. With a whole new gameplay mode comes new features geared towards that new mode.

Survival Mode Features:

- Challenge yourself in various new survival battles
- Lead your army to victory and claim Pearls from survived waves
- Train troops, sharpen weapons and upgrade your equipment to epic level 20
- Earn new Survival achievements
- Best your rivals and take first place on new Survival Mode leaderboards

If you have CastleStorm installed on your Android device of choice, you can download the Survival Mode update off of Google Play right now. You can also check out the new Suruvial Mode in action in the gameplay trailer below.

December 20, 2014 03:02 AM

December 19, 2014

Build Mobile App Services with Google Cloud Tools for Android Studio v1.0

Posted by Chris Sells, Product Manager, Cloud Tools for Android Studio

Cloud Tools for Android Studio allows you to simultaneously build the service- and client-side of your mobile app. Earlier this month, we announced the release of Android Studio 1.0 that showed just how much raw functionality there is available for Android app developers. However, the client isn’t the whole picture, as most mobile apps also need one or more web services. It was for this reason that the Cloud Tools for Android Studio were created.

Cloud Tools put the power of Google App Engine in the same IDE alongside of your mobile client, giving you all the same Java language tools for both sides of your app, as well as making it far easier for you to keep them in sync as each of them changes.

Getting Started

To get started with Cloud Tools for Android Studio, add a New Module to your Android Studio project, choose Google Cloud Module and you’ll have three choices:

You can add three Google Cloud module types to your Android Studio project

The Java Servlet Module gives you a plain servlet class for you to implement as you see fit. If you’d like help building your REST endpoints with declarative routing and HTTP verbs and automatic Java object serialization to and from JSON, then you’ll want the Java Endpoints Module. If you want the power of endpoints, along with the ability to send notifications from your server to your clients, then choose Backend with Google Cloud Messaging.

Once you’re done, you’ll have your service code right next to your client code:

You can build your mobile app’s client and service code together in a single project

Not only does this make it very convenient to build and test your entire end-to-end, but we also dropped a little extra something into your app’s build.gradle file:

The android-endpoints configuration build step in your build.gradle file creates a client-side library for your server-side endpoint

The updated Gradle file will now create a library for use in your app’s client code that changes when your service API changes. This library lets you call into your service from your client and provides full code completion as you do:

The client-side endpoint library provides code completion and documentation

Instead of writing the code to create HTTP requests by hand, you can make calls via the library in a typesafe manner and the marshalling from JSON to Java will be handled for you, just like on the server-side (but in reverse, of course).

Endpoints Error Detection

Meanwhile, back on the server-side, as you make changes to your endpoints, we’re watching to make sure that they’re in good working order even before you compile by checking the attributes as you type:

Cloud Tools will detect errors in your endpoint attributes

Here, Cloud Tools have found a duplicate name in the ApiMethod attribute, which is easy to do if you’re creating a new method from an existing method.

Creating an Endpoint from an Objectify Entity

If, as part of your endpoint implementation, you decide to take advantage of the popular Objectify library, you’ll find that Cloud Tools provides special support for you. When you right-click (or control-click on the Mac) on a file containing an Objectify entity class, you’ll get the Generate Cloud Endpoint from Java class option:

The generate Cloud Endpoint from Java class option will create a CRUD endpoint for you

If you’re running this option on a Java class that isn’t built with Objectify, then you’re going to get an endpoint with empty methods for get and insert operations that you can implement as appropriate. However, if you do this with an Objectify entity, you’ll get a fully implemented endpoint:

Cloud Tools has built-in support for generating Objectify-based cloud endpoint implementations

Using your Cloud Endpoint

As an Android developer, you’re used to deploying your client first in the emulator and then into a local device. Likewise, with the service, you’ll want to test first to your local machine and then, when you’re ready, deploy into a Google App Engine project. You can run your service app locally by simply choosing it from the Configurations menu dropdown on the toolbar and pressing the Run button:

The Configurations menu in the toolbar lets you launch your service for testing

This will build and execute your service on http://localhost:8080/ (by default) so that you can test against it with your Android app running in the emulator. Once you’re ready to deploy to Google Cloud Platform, you can do so by selecting the Deploy Module to App Engine option from the Build menu, where you’ll be able to choose the source module you want to deploy, log into your Google account and pick the target project to which you’d like to deploy:

The Deploy to App Engine dialog will use your Google credentials to enumerate your projects for you

Cloud Tools beta required some extra copying and pasting to get the Google login to work, but all of that’s gone now in this release.

What’s Next?

We’re excited to get this release into your hands, so if you’ve haven’t downloaded it yet, then go download Android Studio 1.0 right now! To take advantage of Cloud Tools for Android Studio, you’ll want to sign up for a free Google Cloud Platform trial. Nothing is stopping you from building great Android apps from front to back. If you’ve got suggestions, drop us a line so that we can keep improving. We’re just getting started putting Google Cloud Platform tools in your hands. We can’t wait to see what you’ll build.

by Android Developers (noreply@blogger.com) at December 19, 2014 09:41 PM

Google Play game services ends year with a bang!

Posted by Benjamin Frenkel, Product Manager, Play Games

In an effort to supercharge our Google Play games services (GPGS) developer tools, we’re introducing the Game services Publishing API, a revamped Unity Plugin, additional enhancements to the C++ SDK, and improved Leaderboard Tamper Protection.

Let’s dig into what’s new for developers:

Publishing API to automate game services configuration

At Google I/O this past June, the pubsite team launched the Google Play Developer Publishing APIs to automate the configuration and publishing of applications to the Play store. Game developers can now also use the Google Play game services Publishing API to automate the configuration and publishing of game services resources, starting with achievements and leaderboards.

For example, if you plan on publishing your game in multiple languages, the game services Publishing API will enable you to pull translation data from spreadsheets, CSVs, or a Content Management System (CMS) and automatically apply those translations to your achievements.

Early adopter Square Enix believes the game services Publishing API will be an indispensable tool to manage global game rollouts:


Achievements are the most used feature in Google Play game services for us. As our games support more languages, achievement management has become increasingly difficult. With the game services Publishing API, we can automate this process, which is really helpful. The game services Publishing API also comes with great samples that we were able to easily customize for our needs

Keisuke Hata, Manager / Technical Director, SQUARE ENIX Co., Ltd.





To get started today, take a look at the developer documentation here.

Updated Unity plugin and Cross-platform C++ SDK

  • Unity plugin Saved Games support: You can now take advantage of the Saved Games feature directly from the Unity plugin, with more storage and greater discoverability through the Play Games app
  • New Unity plugin architecture: We’ve rewritten the plugin on top of our cross-platform C++ SDK to speed up feature development across SDKs and increase our responsiveness to your feedback
  • Improved Unity generated Xcode project setup: You now have a much more robust way to generate Xcode projects integrated with Google Play Game Services in Unity
  • Updated and improved Unity samples: We’ve updated our sample codes to make it easier for first time developers to integrate Google Play games services
  • C++ SDK support for iPhone 6 Plus: You can now take advantage of the out-of-box games services UI (e.g., for leaderboards and achievements) for larger form factor devices, such as the iPhone 6 Plus

We also include some important bug fixes and stability improvements. Check out the release notes for the Unity Plugin and the getting started page for the C++ SDK for more details.

Leaderboard Tamper Protection

Turn on Leaderboard Tamper Protection to automatically hide suspected tampered scores from your leaderboards. To enable tamper protection on an existing leaderboard, go to your leaderboard in the Play developer console and flip the “Leaderboard tamper protection” toggle to on. Tamper protection will be on by default for new leaderboards.Learn more.

To learn more about cleaning up previously submitted suspicious scores refer to the Google Play game services Management APIs documentation or get the web demo console for the Management API directly from github here.

In addition, if you prefer command-line tools, you can use the python-based option here.

by Android Developers (noreply@blogger.com) at December 19, 2014 07:26 PM

Parsing BLE advertisement packets

Ever since I created the Gas Sensor demo (post here, video here, presentation here), I had the feeling of an unfinished business. That demo sent the sensor data in BLE advertisement packets so the client never connected to the sensor but received data from the sensor in a broadcast-like fashion. The implementation looked like this:

        public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {
            String deviceName = device.getName();
...
                int addDataOffs = deviceName.length() + 16;
                int siteid = ((int)scanRecord[addDataOffs]) & 0xFF;
                int ad1 = ((int)scanRecord[addDataOffs+1]) & 0xFF;

This was a quick & dirty solution that remained there from my earliest prototypes. It sort of assumes that the structure of the BLE advertisement packet is fixed so the sensor data can always be found at fixed locations of the advertisement packet. This does not have to be the case, Bluetooth 4.0 Core Specification, Part C, Appendix C (or Core Specification Supplement in case of 4.2 version) describes, how the fields of the advertisement packets look like. It just so happens that with the given version of the RFDuino BLE module, the Manufacturer Specific Data field where RFDuino puts the user data for the advertisement packet can always be found at a specific location.

The proper way is of course to parse this data format according to the referred appendix of the specification and in this post I will show you how I implemented it.

The example programs are attached to the end of this post. You have to be logged to Sfonge site to access them.

Let's see first the BLEScan project. The parser code is under the hu.uw.pallergabor.ble.adparser package. Then you just give the scanRecord array to AdParser's parseAdData method like this:

            ArrayList<AdElement> ads = AdParser.parseAdData(scanRecord);

and then you get an array of objects, each describing an element in the scan record. These objects can also produce printable representation like this:



Now let's see the revised GasSensorDemo project, how the gas sensor measurement is properly parsed out of the scan record. First we parse the scan packet fields:

                ArrayList<AdElement> ads = AdParser.parseAdData(scanRecord);

Then we look for a TypeManufacturerData element which corresponds to a Manufacturer Specific Data field in BLE. We make an extra check to make sure that the manufacturer field in the Manufacturer Specific Data is 0x0000 because RFDuino always creates a Manufacturer Specific Data field like that if the application programmer specifies additional advertisement data.

                    AdElement e = ads.get(i);
                    if( e instanceof TypeManufacturerData ) {
                        TypeManufacturerData em = (TypeManufacturerData)e;
                        if( em.getManufacturer() == 0x0000) {


It would be tempting to use a custom manufacturer field or better, a Service Data field. But then we run into another limitation of RFDuino because RFDuino with its default firmware is only able to create advertisement packets like in the previous example. This is not bad because it allows the programmer to achieve quick success but later on, we will need more flexibility and that will need another BLE module.

by Gabor Paller (noreply@blogger.com) at December 19, 2014 04:38 PM

December 18, 2014

Hey Siri, can we talk … to our apps?

Post_20141218_Siri_Header

Last June, Apple surprised developers at WWDC with announcement after announcement of new tools, new APIs, and even a new language. However when all was said and done, the one last trick developers were waiting for remained in Apple’s hat–for now.

Where was the Siri API?

To be sure, Siri is now more capable than ever. Arriving with the iPhone 4S in 2011, it brought a novel new way to interact with our devices. It skyrocketed in mindshare, and even after the arrival of voice search assistants from rivals Google, Microsoft, and now Amazon, remains the first virtual assistant most people think of.

However, the more we used Siri, the more limited we realized it was. The intelligence we perceived was mostly an illusion, but Apple kept improving Siri and users can now interact with all kinds of system services using their voice. However, interaction with third party apps remains extremely elusive and limited only to Apple-approved avenues.

Apple is undoubtedly working on an API for developers who want Siri-style voice accessibility to their apps, but does that mean developers should wait until it’s ready? Heck no! There are already more solutions available for iOS, Android and even the web, than Siri has jokes.*

(Almost) Built-in

One solution is nearly built-in to iOS. Starting with iOS 5, a “veritable Swiss-Army knife of linguistic functionality” is built-in to every iPhone, iPad, and iPod–maybe even the Apple TV and upcoming Apple Watch itself. NSLinguisticTagger is a powerful system-supplied class that can break down a natural language sentence into nouns, verbs, numbers, places, parts of speech and more.

If you can provide a sentence to an NSLinguisticTagger, such as from Apple’s own Dictation feature or any number of third party libraries, chances are you can glean a lot of user intent just from separating the important bits from the an’s, uh’s and the’s.

For example, in a Swift playground:

import Cocoa

var sentence = "Hey Siri, what's on my calendar today?”

let options: NSLinguisticTaggerOptions = (.OmitWhitespace | .OmitPunctuation | .JoinNames) let taggerOptions = Int(options.rawValue) let preferredLanguage = NSLocale.preferredLanguages() [0] as String let tagSchemes = NSLinguisticTagger.availableTagSchemesForLanguage(pref erredLanguage) let tagger = NSLinguisticTagger(tagSchemes: tagSchemes, options: taggerOptions) let fullRange = NSMakeRange(0, sentence.utf16Count)

tagger.string = sentence tagger.enumerateTagsInRange(fullRange,    scheme: NSLinguisticTagSchemeLexicalClass,    options: options) { (tag, tokenRange, sentenceRange, _) -> Void in

   let token = (sentence as NSString).substringWithRange(tokenRange)    println("\(token): \(tag)") }

produces,

Hey Siri: Noun what: Pronoun 's: Verb on: Preposition my: Determiner calendar: Noun today: Noun

or,

var sentence = "Give me directions to my office.”

produces,

Give: Verb me: Pronoun directions: Noun to: Preposition my: Determiner office: Noun

or the classic,

var sentence = "The quick, brown fox jumped over the lazy dog.”

gives

The: Determiner quick: Adjective brown: Adjective fox: Noun jumped: Verb over: Preposition the: Determiner lazy: Adjective dog: Noun

Because NSLinguisticTagger can be initialized with various options, including a language, you can see how flexible and powerful a parser it can be. You can build everything from an old-school text adventure to an editor capable of highlighting parts of speech.

But what if you want to use voice to create the sentences?

Hmm, sounds familiar

A third-party solution from Nuance Communications called SpeechKit provides voice recognition and synthesis SDKs for iOS, Android, Windows Phone, and web. Using Nuance’s SpeechKit libraries, a developer can record a user’s voice, ship it off to Nuance for processing, receive a best guess at what the user actually said (along with other possibilities that the system is less confident about and suggestions), and finally speak an appropriate response in a pleasant-sounding voice.

If that voice sounds familiar, it should. Nuance provided Siri’s speech recognition engine and shares the same voice synthesis as the original Siri.

To use Nuance’s SpeechKit, you initialize an SKRecognizer object, with your authentication key, the language you want it to detect, and how you want SpeechKit to determine when to start processing speech (the user signifies ready, using a button tap for example, or if SpeechKit detects a long or short pause). SpeechKit’s cloud servers transcribe the voice, and return a simple SKRecognition object.

@interface SKRecognition : NSObject {    NSArray *results;    NSArray *scores;    NSString *suggestion;    NSObject *data; }

Results are the sentence(s) or fragment(s) SpeechKit believes the user said, with a score of the confidence in those results.

In the simplest case, you can send recognition.firstResult() to your NSLinguisticTagger parser, and start figuring out the user’s intent.

Want to tell your user something?

SKVocalizer.speakString(“This is what I found for you on the Internet.”)

Voila, your very own Siri!

Free and fast

Another popular–and free–solution is Open Ears by PolitePix. One huge advantage Opens Ears has with its implementation is the voice recognition is done completely locally on the device. There is no slight delay where recordings are streamed over the network and results returned after cloud processing. The popular traffic app Waze uses OE to allow drivers to report traffic conditions hands-free, after waving at their docked devices.

A big shortcoming of such a local system is its vocabularies are much smaller, compared to the seemingly unlimited dictionaries of cloud-based services. However, that smaller vocabulary is also the source of the speed Open Ears enjoys and doesn’t require a network connection.

Open Ears also provides a development platform, allowing the purchase of plugins that extend its capabilities. One such plugin, RapidEars promises to allow live realtime speech recognition with no perceivable delay.

Paved with good intentions

Two more similar competing solutions may be the closest things to how Siri works yet. Wit.ai and API.ai both try to translate user input, whatever they said, into user intent, with parameters. API.ai describes it as “natural language understanding.”

Both solutions listen to the user, break it down, and return a structure that describes what they believe was the intent of the user from her utterance. An intent could be “Start timer”, “Open Game”, or “Create Event”, even if what they said was “I need a timer for boiling these eggs”, “I want to play Angry Birds”, or “I need to make a meeting with Steve when I have time this afternoon”. Those intents could have arguments such as “5 minutes”, “Angry Birds”, and “Steve, 3:00 pm”.

Like Siri’s natural language processing, these two solutions give that illusion of intelligence by making the connection between what a person said, and what a person means.

The road to hell?

As exciting as such artificial intelligence can be, no less theorists and technologists than Stephen Hawking and Elon Musk are terrified at the potential impact on humanity. The recent feature film Her by Spike Jonze gives a glimpse of a near future where everybody talks to their personal devices, rather than the actual humans all around. And a trailer for the new Terminator movie has already hit the YouTubes.

But as dire as those warnings sound, they really are just fiction and fretting. Developers are not going to start booting up Skynet by adding voice recognition to their mobile apps. But what they will do is make their apps more accessible than ever before.

*This is not true. Siri has an unlimited number of silly jokes.

The post Hey Siri, can we talk … to our apps? appeared first on Mutual Mobile.

by Mutual Mobile at December 18, 2014 08:19 PM

The Busy Coder's Guide to Android Development Version 6.3 Released

Subscribers now have access to the latest release of The Busy Coder’s Guide to Android Development, known as Version 6.3, in all formats. Just log into your Warescription page and download away, or set up an account and subscribe!

This update includes:

  • Moving coverage of Android Studio and Gradle for Android to 1.0. This includes overhauling the first couple of tutorials to deal with the new Android Studio setup process. This also includes warnings that Google has discontinued Eclipse support.

  • Initiated coverage of Material Design. Right now, the focus is on the core themes, the impacts of Theme.Material on widgets and the action bar, and the application of tints. Additional Material Design technical coverage, such as elevation and its relationship to things like RelativeLayout, will come in future updates. However, the focus of the book will be on engineering aspects, not design aestethics, as I have the design acumen of your average hamster.

  • Overhauled the AppCompat chapter to update it for the now-current release. This not only includes the new Material-ish action bar but the AppCompat tints of select Theme.Holo widgets.

  • Moved the chapters that touch on Play Services to the new granular dependencies. In particular, this involved modifying all of the Maps V2 samples (and the associated chapter), to cover getMapAsync(). I also removed the action bar list navigation from the Maps V2 samples, as action bar navigation has largely been deprecated.

  • Updated the coverage of greenrobot’s EventBus, particularly moving to the latest version and switching to NoSubscriberEvent instead of ordered events to handle “update the UI or raise a Notification” patterns.

  • Removed the Nokia X chapter, may it rest in peace.

  • Various bug fixes and other minor improvements.

The next update is tentatively slated for late January 2015.

Note that a few items are targeted for removal next year:

  • Eclipse instructions in the tutorials will probably be removed in mid-2015. Eclipse information elsewhere will remain, perhaps switching to covering the Eclipse Andmore distribution. However, I am only going to maintain tutorials for official IDEs, because maintaining the tutorials is a pain in various body parts.

  • The ActionBarSherlock chapter will be pulled sometime in early 2015, as the project is formally deprecated.

by Mark Murphy at December 18, 2014 05:04 PM

December 17, 2014

Thinking About Stories

I have been thinking about stories lately and what makes a great story. I hope that learning about good stories will help me as I work on my space war app. Two good TED videos: (1) The Clues to a Great Story, by Andrew Stanton; (2) The Mystery Box, by J. J. Abrams. Continue reading

by Bill Lahti at December 17, 2014 10:44 PM

Will we ever get to talk to our apps using Siri?

iOS Engineer, Dan Murrell, gives us the inside scoop on how to get around Apple’s lack of a Siri API.

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.

The post Will we ever get to talk to our apps using Siri? appeared first on Mutual Mobile.

by Ask A Dev at December 17, 2014 07:00 PM

Interview Sessions from AnDevCon: Bear Douglas

Twitter’s Fabric is a set of modular SDK’s, a new mobile platform, that intends to help you build better apps. Bear Douglas, Developer Advocate at Twitter, explains what it brings to the table.

by Evan Davis at December 17, 2014 12:45 PM

Interview Sessions from AndevCon

A collection of interviews recorded on location at AnDevCon 2014 in San Francisco.

by Evan Davis at December 17, 2014 12:30 PM

December 15, 2014

Win a smartphone with Gameloft

Win a smartphone with Gameloft

So your a boy (or girl) racer, the fastest on the block, and Lamborghini is just your style of ride.  Well how about putting your skills to the test and trying to win a nice new smartphone?  Well you have until midnight (GMT) on the 21st to prove your the best and snag a Honour 6 courtesy of Gameloft and their racing game Asphalt 8.

image

The free to play event shows as UK for me so I am unsure if the competition is also being played in other regions as well but it will probably include IOS as well and not be an Android exclusive..  The race is for Lamborghini Sesto Elemento only over the Great Wall course and the car is also free to use.

image

The Honour 6 from Huawei is a 4G enabled Android device with a 5″ screen, 13MP main cameraand a quad core 1.7Ghz SOC running Android 4.4.2.

Asphalt 8 is free from the Google play Store.

Land of Droid -

by UbuntuBhoy at December 15, 2014 03:44 PM

December 14, 2014

A Simple Chat Application in Android Using GCM and Server Side – PHP.

Hi all,

In Today’s Tutorial I will help you to make a simple chat application in Android using Google Cloud Messaging. I am using PHP as server side script.

Here are the things you need to follow to make this application.

1. You need to register to Google for GCM.
2. You need a server where your script resides.[We will use our own system as Server in this application].

Please read this before starting with the application
After reading the above link, you will get a API key and Sender ID , which distinguishes your application.
So you will need it in the code, keep it somewhere safe.

You need to change the API Key inside Android source code in the sample Provided below.
Your API Key and SENDER ID will look something similar to this.

 
 String SENDER_ID = "243750827028";
 String API_KEY   = "AIzaSyCBI_c2izVrEPcJ509uZGVLdfWUAW-rg48";
	

Next Go through this link, till step 2 in that page because I have provided the source code below.

The usual flow of a simple GCM application is like this

1. User launches your application for the first time.
2. Your application will call “register” to register with GCM.
3. Google will send you back a “Registration ID” which will be unique for that device.
But beware these “Registration ID’s” will change when you update the application or reinstall it after uninstalling. So don’t use it to uniquely identify a user. A username/password combination or a Phone Number usually does the trick.

4. The device gets the “Registration ID” and store it locally, so that the device don’t need to register again each time the user run the
application.
5. Send this registration ID to your server and Store it there along with a unique identifier for the user. [Here we will use ‘username’ for the time being].
6. When the user taps send message button you need to call a server side script that will communicate with GCM server which will
send this message to corresponding device.
ie. User taps the button -> send the device_reg_id and message to your server -> send these parameters from your server to GCM
-> GCM send the message to Device identified by reg id.

So I am not going to paste the whole code here.
You can directly download it from below links

Client Complete Android source code.

PHP server side source code.

Here I have used a simple database structure for simplicity.
I am using username for identifying each user.

You need to make the same structure for the below sample to work.

GCM Sample DB structure

GCM Sample DB structure

For Server Side I am using XAMPP for Mac.
You can download the Server side source code and put it inside htdocs folder inside XAMPP/Applications.

Start your servers.

Please check the Screenshot below.

GCM Sample DB structure

Then Go to your browser and type “localhost”. if your server is running, then you will see “phpMyAdmin” Page.

For testing it in your system and in your device, Both should be in the same network, for example : both should be in the same WIFI netwrok of your home.
Please type “ifconfig” for Mac in terminal and check inside “en0″ or “en1″ to get your sytem IP. For Windows type “ipconfig”.

Before running the application change the “IP” in the Utils file.

I am not going to the Android source code because Complete source is already provided.

How to test?

1. Change the API Key and Sender ID in the application.

2. Make sure server side is set up. copy php code to your local server as described above.
Make sure you have sql tables set up.

3. Make sure your servers are running.

4. Your testing devices and Your server should be on the same network, otherwise you have to host an online server. You can use the Emulator also as one device, but it should be an emulator with “Google Play Services”. Android 5.0 is good to go.

5. Change the IP address in “Utils.java” to your system IP address.

Please leave your comments if you have problems understanding the above article.

by James at December 14, 2014 02:00 PM

December 11, 2014

Manufacturers, Keep Your Hands Off My Zygote

As I often say, Android being open source is a double-edged sword.

(actually, I’m thinking that perhaps it is a more topologically-complex sword with lots and lots of edges, but I digress…)

Open source allows lots of people to get involved in creating Android devices, not limited to traditional form factors like phones. On the other hand, the ability for manufacturers to tinker with Android leads to compatibility problems. That in itself is not a problem… unless the manufacturer also wants app markets like the Play Store and Amazon AppStore for Android, and the compatibility problems have the potential to affect lots of apps.

One area of compatibility issues that has become more prominent is manufacturers messing with the zygote.

The zygote is a process, created when Android boots up, that contains the runtime (Dalvik or ART), framework classes and other JARs, and native libraries. When our app’s process is created, it is forked from the zygote. This is so Android can leverage the Linux kernel’s copy-on-write memory sharing, so the memory footprint of each of our processes is mostly limited to our own classes and other JARs, our own native libraries, and whatever we allocate on the heap.

Developers used to other environments will recognize the terms “DLL hell” and “JAR hell”. Any place where libraries are shared, changing those libraries affect all consumers of those libraries. The primary spot on Android where we get these effects is in the zygote, as our own classes and libraries are (usually) isolated per app.

Hence, when manufacturers change what is in the zygote, compared to what is normal for that version of Android, compatibility issues can result, such as:

This is on top of Google’s under-the-surface and largely-undocumented zygote contents, such as the stripped-down edition of Legion of the Bouncy Castle that led to the development of Spongy Castle. That, at least, is fairly common across devices.

Sometimes, it would appear that manufacturers modify the zygote to have some library available in common for all their own apps. That is what I have to assume the rationale was for Samsung’s addition of appcompat-v7 to the zygote. This is simply sloppy, trading off the compatibility of countless apps to save a handful of KB of disk space.

Sometimes, the changes might be to address bug fixes that their own apps happen to trip over. This could be the reasoning behind the higher SQLite versions that LG and others have employed. That is certainly cool, though a bit more transparency would be helpful, and the fixes could still introduce compatibility problems.

Device manufacturers need to be very careful when altering what is in the zygote. Android is open, and device manufacturers have the freedom to alter what they want. Freedom to implement does not mean freedom from responsibility, though. Manufacturers that want apps from third-party developers need to ensure that the zygote the manufacturer uses is compatible with the zygote that third-party developers are expecting.

In other words, not all zygotes are created equal.

by Mark Murphy at December 11, 2014 01:28 PM

December 07, 2014

How to connect Localhost in your MAC or Windows to your Android Device OR Android Emulator ?

The name “localhost” is just a loopback to your own computer.

1. ACCESSING LOCALHOST ON ANDROID DEVICE.

To access it on your Android Device, you need to find the computer’s IP address.

  • The most general way of finding this info, which works on both Mac and Linux, is to go into the Terminal and type “ifconfig” AND for Windows type “ipconfig” in the command prompt.
  • Look for either “en0″ or “en1″, and under that entry look for the “inet” listing. It will be something along the lines of “192.168.1.100”.
  • When you find that address, that’s what you’ll want to put in your browser’s address bar or the URL in the code you want to call your MAC’s/Windows’ localhost.
  • On a Mac specifically,

    Go to System preferences/sharing OR just search on right top – remote management

    Make sure remote management is checked

Note : MAKE SURE THAT YOUR ANDROID DEVICE AND YOUR MAC/WINDOWS ARE ON THE SAME NETWORK OTHERWISE IT WILL NOT WORK. [EG : SAME WIFI NETWORK].

For Example in the Android code you can use like below and call a webservice that is residing in your local server, i.e your localhost.

 new HttpPost("http://192.168.0.101/your_localhost_folder/your_localhost_file.php");

2. ACCESSING LOCALHOST ON ANDROID EMULATOR.

You can have the same thing as described above for Android Emulator also as long as they are in same network.

But there are other options too…

You can check it in the post here.

by James at December 07, 2014 06:06 PM

November 24, 2014

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 (noreply@blogger.com) at November 20, 2014 03:37 AM

November 19, 2014

Advanced Mobile Care: App Review and Premium Giveaway

Advanced Mobile Care: App Review and Premium Giveaway

ADVANCED MOBILE CARE GIVEAWAY REVIEW

So there I was just browsing my Twitter feed, when out of the blue I get a request to review an app.  First time for everything right? Well, I agreed without hesitating because I love helping app developers get attention to their apps.  So after getting the details and ironing out some details with fact checking and all that jazz I downloaded Advanced Mobile Care (AMC Security) from the Playstore and started using it.  Now, I know what you are thinking, another security app for mobile.  Well, sorta kind of but not really.  Honestly, I have used quite a few mobile security apps in my days of Android; even crazy named ones for giggles.  Where AMC stands out is the performance and support that their app provides.

Starting out, you have a One Tap Scan which scans and cleans out redundant background tasks, cache, junk files, privacy records and releases free storage space.  This isn’t much different from most cleaner apps, but the performance is there.  With a side by side of AMC and other cleaner apps AMC performed faster and more efficiently 5 out of 6 times.  This made me happy knowing I was freeing up the most space possible.

Add on that AMC includes an Anti-theft feature, which after you sign up for an account through m.IObit.com you can track and alarm the lost device just in case it is somewhere inside your house.  Didn’t find it in the house and see that it is wandering around town with some thief, well log into the site and you can remotely wipe the data on the device so that your information is erased and useless to the phone thief.

Battery saver mode was a nice feature, but was not able to perform to the lengths that dedicated battery saver apps can.  This isn’t to say that it doesn’t perform well, but compared to say Greenify it doesn’t save as much battery.  Still, in an all-in-one toolbox setup like AMC has provided, the battery saver feature is still an awesome feature.

AMC has the much-needed Task Killer function built-in, which is to be expected to free up as much RAM as possible, which pair that with their Game Speeder feature and you are guaranteed to get the smoothest gaming experience.  I was having severe issues with Rollercoaster Tycoon 4 running on my Note 3, and after running the Game Speeder through AMC I was actually able to play the game for more than 5 minutes before the game finally crashed.  That is way better than before when the game would load and then freeze and crash.

Amc1

My favorite feature is the App Manager, which allows you to batch delete obsolete APK files, uninstall apps and even move batch apps to the SD Card in one shot allowing you to free up space needed for more Android goodies.  I was surprised how quickly the file transfer to SD was as well as batch deleting APK files.  I have a lot of apps installed on my device and don’t always get around to deleting them. With this feature I was able to delete roughly 75 apps in one swift move without blinking.

Privacy advisor and  Privacy locker ensures that your device is as secure as you want it to be.  Privacy advisor notifies you of any apps that are silently trying to record your information and prompts you with advice concerning those apps (Sorry, didn’t get any notifications on Facebook). Privacy locker lets you lock up files, photos, and videos with a password so no one can view them.  For those of you out there that have embarrassing photos of your friends, or even of yourself hidden on your device, lock them behind a password.

You also have the much appreciated Antivirus, cloud backup as well as a Call/SMS Blocker with three different blocking modes.  This allows you to set up your blocking the way you want it, and ensure that you don’t get bothered by pesky telemarketers or even that girl from the bar that you wish you hadn’t talked to.

Overall, I am very happy to have this app running on my device.  I haven’t had any issues with security before, but having it running gives me the piece of mind that I need to sleep easy.  Is there anything I wish the app had that it doesn’t? Not really, but I am a very simple person to please.  I would definitely recommend this app to anyone looking for an all-in-one toolbox for their mobile security. If you want to give it a go, head over to the PlayStore and download the app now, then Enter our Giveaway where IObit is providing 200 yea, you read that right. 200 premium subscription codes for a 1-month trial of all the features.  Love the app but don’t want to pay premium, keep the app and enjoy the free features. I can almost guarantee that you will have no problem paying the premium fee to enjoy the peace of mind knowing your device is protected. Enter the giveaway below for your chance to win.  Also, share with your friends so they have a chance at winning also.

AMC Premium Giveaway

Land of Droid -

by Jeff Jessie at November 19, 2014 09:06 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.

DSC00455

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…

Video

 

 

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

The State of Android Hardware Companion Apps

 - Doing Android wrong makes me distrust your product's future.

Time after time I keep running to this same issue: hardware companies don't get Android. Companies building expensive products are either completely failing in their mobile app strategy across the board or put all their efforts to their iOS app effectively making their Android apps an afterthought.

But what does it matter as long as it works (on some level)?
Trust. It's all about trust.

I simply don't trust companies who don't seem to care about Android users. I've been burned too many times before. And I don't think I'm the only one.

Because of past bad experiences my shopping decision now includes looking up the Android app of the product I'm considering purchasing and seeing if it looks like an Android app and if it seems to be built the right way (scalable, uses notifications correctly, etc basic Android platform knowledge).

If I see things like use of the menu-button-of-shame, strange notification use, use of iOS UI components or UI structure etc. I know that the company is not regarding Android as a first class citizen in their own ecosystem.

When the platform I'm using is clearly at the end of the priority queue of the company whose products I'm considering buying it tells me few things based on my past experience. The UX of the mobile app is likely to be subpar. I'm likely going to get a feature limited version of the software and all new and improved features are going to arrive to me much later than if I was using iOS. Still... I'm paying the same price for the hardware product.

I simply do not trust that the device is worth the money if the company doesn't think that it's worth their time to look into the most used mobile platform of the world.

No thank you!

Cross-platform disasters

Some companies building high-end (or at least expensive) products like BOSE seem to be completely failing to understand the importance of creating mobile user experiences. With their SoundTouch Controller (iOS) product they seem to have gone the route of ignoring all platforms and build an app with some cross-platform tool and the results are as expected.

There's no way I'll put my money into your product if you don't understand how to build mobile apps. It might be that use of the mobile app is just a secondary way of controlling the system and "an additional feature" but if this is the quality of your product I doubt I'll enjoy the rest of it either!




iOS-first (only?) approach

Now, this might be justified on some level but there's limits. Making hardware that talks to mobile devices is difficult. Bluetooth as a technology sucks big time but that's unfortunately what we have to use (at least for now). It probably makes sense for companies to pick the largest segment of their market to target first when building software to their hardware which is relatively standards and least fragmented.

After the start I'd expect to see the Android support added relatively quickly. It's a massive market. Let's say that you decide to target just couple of the top-end Android phones in the first iteration you will likely target a very similarly sized audience. While you might encounter some issue with some devices you can start ironing out the issues one-by-one.

But seeing something like this in an online store of bleeding edge hardware maker a year after the device release causes problems. As customer shopping in the Runtastic store this makes me pause. I will think twice buying any of the hardware that is compatible with Android as I'm not sure where my platform fits in their corporate strategy?


In case of Runtastic this becomes even worse. With Runtastic I'm not only buying their hardware to use. I'm also buying into their ecosystem. I'll be uploading my info to their systems, using their exercise apps and so on. If I subscribe to their ecosystem will I be treated on the same level as people using iOS devices?

Direct iOS ports

Then there's something that I don't understand at all. This should never be done by anyone. A company that takes time to make their hardware compatible with Android but for some unfathomable reason decides to port their iOS app directly to Android without looking into Android platform guidelines, UX etc. I cannot understand how this still happens in 2014.

Building Android apps right way is much easier than trying to make your apps look and function like iOS apps. Still. Some companies insisting doing this in the way we in Finland call "climbing a tree ass first" ("perse edellä puuhun).

Parrot's Flower Power is an interesting product that monitors how your flowers are doing. But what they've done with their Android app is beyond belief. It is a 1-to-1 direct port of their iOS app. From the minute you open the app on your Android device you feel like it is not built for you.

The app uses iOS bottom tabs which immediately make the app navigation not functional when combined with the Android back button. It's also style-wise mostly just confusing to all Android users. Tabs in screens don't work as expected (where's my swipe gesture), the whole font throughout the app is strange, it's full of custom controls that don't belong to the platform and they've even implemented features that you really don't need to implement on Android as the platform gives them to you for free. And top of everything the app is, of course, locked into one orientation (a sure tell that the design is not flexible).

I simply cannot understand what made them to do this? Are there no Android users in the company management? Is there no designers using Android at all in the company? This app is very confusing, ugly and doesn't belong on Android. There's no way I will buy hardware that is supported this poorly on my platform.


iOS-only marketing

Another thing with hardware manufacturers that I fail to understand is the lack of Android presence on their websites. Maybe the most striking example of this is Parrot Zik 2.0 website. Take a look at the site. Would you imagine that you could use the headphones with Android as well? On the surface no. Every single image on the site is an iPhone running their software. There's even sentences like "They are made for iPhone, iPod, iPad.".


These things are not cheap. The Zik 2.0 costs almost $400 in Amazon.com by the time of writing this.


Scanning the Parrot website for compatibility there's, in fact, exactly one mention of "Android" and it is this: "Free app compatible with smartphones running on iOS, Android".

Anyone wanna take a guess how good their Android app is?

This $400 headset comes with a companion app that looks like absolute crap. It's, of course, exact clone of the iOS app but in this case it's bad on both platforms.

The app is locked on in portrait on phones and to landscape on tablets. It also fails in some very basic UI design things like using margins and alignment. It also has reinvented all the controls.

The best of all it has a menu-button-of-shame. This is such a direct proof that this app was built without any knowledge of the Android platform.


The app also immediately adds a persistent notification to your status bar when you open it. The notification content simply baffles me. And maybe not a big surprise that the notification's priority is set incorrectly so it's always fully visible.


There's a lot more I could point out in the app as issues but I think I've made my point. Do I want to pay $400 for headphones if this is the quality I can expect? Hell no!

Crowdfunding projects

Kickstarter and indiegogo are both full of tech projects looking for funding. More often than not you see these small startups fighting for funding completely fail to understand that platform differences matter. You see pitches in Kickstarter that claim support for iOS and Android but they only show iOS devices in their campaign page (or even worse, some strange abominations like below).


As Android community, we're already getting burned very often by large manufacturers and it's making us careful. When you choose to show only iOS devices on your campaign page it tells us that if I back your project I'll likely have to wait for features iOS users will get earlier. Personally, I'm not backing projects like that anymore.

Self-fulfilling prophecy

Android users don't spend money. iOS users are where the money is. - You've probably heard this statement before. If this is true you can hardly blame the manufacturers for putting their efforts into iOS and then doing something half-arsed to tick the box for having an Android app later if they get around to it.

I would not be surprised if this attitude in the industry was the cause for Android users not spending the money to these products. It's quite natural. If you show that you don't care about my UX I'm not going to give my money to you.

If you think that Android users would not buy your products maybe the fault lies with you and not with Android users? Are you creating products worth buying? Can you really afford to ignore 80% of the potential market?

Conclusion, TL;DR

This post turned out to be a bit more whiny than I intended it to be but I think the point becomes clear. While in many areas Android has finally became a first class platform in hardware companion apps there's a lot of space for improvement.

While there are hardware manufacturers who are already pushing quality of their mobile software they're more of an exception than a rule. I see this as a lot of unused potential. A manufacturer doing their Android apps right can differentiate positively from the crowd. Any takers?

by Juhani Lehtimäki (noreply@blogger.com) at November 16, 2014 05:03 PM

November 12, 2014

A Useful Checklist for Google Play Games Services

If you are building an app that uses Google Play Games Services for leaderboards and achievements, be sure to go through the checklist provided on the Google developers website. Here is the link: Checklist for Google Play Game Services. I was reworking how my space war app connects to Play Games Services when I found the page. It really helped to have the checklist, and it was good to have the sample TypeANumber demo app to go along with it. Continue reading

by Bill Lahti at November 12, 2014 03:36 AM

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 google.com, 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. 

Reddit

Land of Droid -

by Tyler Maciaszek at October 31, 2014 12:06 PM

October 12, 2014

CM11 ported to Galaxy Tab Pro 12.2 SM-T900

The post CM11 ported to Galaxy Tab Pro 12.2 SM-T900 appeared first on galaxytabreview.

It took Cyanogen mod guys some time to bring it to the SM-T900 but it is finally here. The cm-11 ROM is very snappy and responsive, there is no reason not to use it as a daily driver. Before flashing it’s recommended to update to TWRP 2.8.0.0.

Note:

- IR blaster problem apparently solved with Bonuzzz’s new kernel, non-verified
- Lid sensor – solved with Bonuzzz’s new kernel, verified.

The boot image will stay idle for a couple of minutes at start-up, just be patient, once the cm logo is seen it will run smooth. Xposed Framework might need re-initialization after each boot, which is common for all CyanogenMod ROM’s.

This is an AOKP ROM, why you also need to install gapps (set of packages – full, mini, micro, nano, pico).

CM11 ported to Galaxy Tab Pro 12.2 SM-T900

by Galaxy Tab Review at October 12, 2014 11:21 AM

The Samsung Galaxy Tab Active has weird design

The post The Samsung Galaxy Tab Active has weird design appeared first on galaxytabreview.

Samsung has rolled out its rugged tablet called Galaxy Tab Active in USA. It is already up for preorder and Sammy is targeting business and enterprise users with it. It features 8 inch display backed by 16 gigabytes of storage. It is certified by SAP and Citrix and comes preloaded with Knox enterprise security solution which first made its debut in Galaxy S4.

The Samsung Galaxy Tab Active has rugged design and is quite chunky to hold. On the brighter side you get water resistant and anti shock casing which makes it great for outdoor activities.

Samsung Galaxy Tab Active review

Samsung says that it is especially effective for use in rough workplaces that involve proximate outdoor use. This implies that the company is targeting business houses that tablets are used outdoors, for instance construction and shipping.

by Galaxy Tab Review at October 12, 2014 11:12 AM

October 10, 2014

Navigation Drawer - Where Does it Belong in the View Hierarchy?

It used to be so simple.

http://developer.android.com/design/patterns/navigation-drawer.html

But things change. Sometimes you have to break the old to create new. When the Navigation Drawer pattern became a part of the Google's design guideline for Android it was clearly defined and the implementation was available of devs to use.

But did Google make a mistake in the initial definition? It might have seemed correct at first but there was a mistake in the spec.

Things are now changing. New updates from Google have moved things around. The new Material Design guidelines define the navigation drawer (now called Side Nav) on top of everything in the app UI.

http://www.google.com/design/spec/layout/structure.html#structure-side-nav-1

We're now in middle of a transition again. Google is changing their apps and while the process is ongoing there's a lot of variation in the released apps. I would really love to see Google to unify the way they use the drawer to send a clear message to app developers.


But what does it matter where it is rendered? It still just works!

I think it matters a lot. This is something that tells the user what they're controlling. If the drawer is the main navigation of an app it becomes one of the most important controls to get right.

View hierarchy tells user which parts he or she is manipulating when they press an item in the navigation.

This is what the previous drawer hierarchy looks like and this is what the recent update to Photos app also did. In my opinion there's two things that are wrong with this approach.

Firstly, this implies that the action bar will not change if I navigate to any of the entries... but it does.

Secondly,  the action bar actions are still active when the drawer is open but they affect the content that is currently hidden behind the drawer.

Confusing.


In the latest Google Hangouts app the drawer renders on the same level as the tabs. This tells the user that when I navigate to another item from the drawer the tabs will stay in place. That's not what's happening here though. I think this implementation is wrong and should be corrected.

The latest update to Google Newsstand adheres most closely to the Material Design guidelines from any of the Google apps.

I think this implementation is great and the correct one. When I navigate the whole content changes, including the action bar. This corresponds most closely to reality.


Making the drawer the highest level component also allows us to avoid unpleasant visual issues with action bars that move away when scrolling not unlike what is happening in the latest Google Play update.











Ok, things are changing and Google still haven't really worked out everything internally for the next iteration. I'm hoping that a consistency is found soon and we can move on. Until then we have to be mindful of our implementations.

Changing familiar things is never easy. I polled the public opinion about this change on Google+ to see what the opinion in general is right now. Change will take time.


https://plus.google.com/u/0/+JuhaniLehtim%C3%A4ki/posts/Xms3aQ6LweU

by Juhani Lehtimäki (noreply@blogger.com) at October 10, 2014 01:30 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

Students and Mobile Apps Infographic

This infographic shows the latest trend in mobile app usage amongst college students.

Students and Mobile Apps Infographic

The App-Aided College Student | Campbellsville U Infographic
Presented By Campbellsville University Graduate & Professional Studies

The post Students and Mobile Apps Infographic appeared first on Android Apps.

by Chris at October 07, 2014 08:15 AM

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! 

 

mgspecs

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

September 24, 2014

Devoxx 2013 Presentations

All of the talks from Devoxx 2013 are now freely available on the parleys.com website. This includes all of the talks that I did with Romain Guy on Android:
Filthy Rich [Android] Clients
What's New in Android
Android Performance Workshop Part 1
Android Performance Workshop Part 2

There's also an interview about the new features in KitKat.

Then there's this somewhat less relevant Patterns, Shmatterns talk I did about software design patterns.

All of the slides from the Android talks are posted on Romain's blog.

by Chet Haase (noreply@blogger.com) at September 24, 2014 01:37 PM

August 23, 2014

I hate missions! What’s in this update for me?

All is on track for the release of the tech mine expansion pack tomorrow. Even if you don’t play the missions, there are plenty of changes to look forward to in the update (these affect the whole game, not just the new levels):

  • much quicker level generation and startup
  • you can now check objectives when outside of the camp by tapping on the stars in the corner
  • subtle character animations added, such as blinking
  • the cracks created when digging have been redrawn and have more stages, so you get more feedback when digging tough ground
  • lots of sprites retouched or redrawn
  • added a small element of randomness to the digging, so it doesn’t always take the same number of hits for a particular ore
  • less memory usage, less battery usage, better performance
  • removed annoying bat poop sound
  • lifts arrive slightly faster
  • added more detail to the map screen
  • silenced the low health warning when on the surface
  • fixed restart logo sometimes appearing in wrong ratio
  • fixed character “running on the spot” when returning to the game
  • fixed the characters in a conversation sometimes disappearing rather than sliding in/out
  • fixed a bug where the map markers could appear in the wrong location
  • fixed the saving spinner hanging around when it shouldn’t when in the shop or camp
  • fixed progress on hidden objectives animating when it shouldn’t
  • fixed an odd fade effect when stepping up a block that causing colour wierdness

by Psym at August 23, 2014 10:36 AM

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.

freesat-android-app-1

freesat-android-app-2

It is therefore quite useful if you can get it to sync and work. Check out the Freesat app here.

by Gary_C at July 17, 2014 10:41 AM

July 05, 2014

July 04, 2014

The 1st SWIFT Compliant Ad Network – StartApp

Swift Apple’s Worldwide Developer Conference unveiled a new C-based programming language known as Swift. This application will be able to restructure the Mac OS and iOS app development process. Swift takes high level coding language, combines it with C and provides the flexibility of Python and Node.js to create a world of applications to the developers.

The iOS developers can now enjoy the benefits of memory management system which is automated in swift and syntax which is simplified to allow less room for error. The developers will also be able to provide far better quality apps which perform exceptionally as compared to the bug-prone and time consuming ones created by Objective-C.

The Swift, as the name suggests, will be able to help the developers make apps quickly and easily by using this development process. It is not just the developers but also the users who can feel the difference between apps built on Swift and Objective-C. The graphics are much better, the applications are smoother and not to mention the annoying bugs that plague the apps from Objective-C have also been eliminated. Consumers will be able to get access to much cheaper apps that are not only helpful but also readily available.

Swift has been gaining a lot of attention even though it is a new programming language because of being endorsed by Apple.  Apple is known for the quality of their products so the developers know they have a reliable language in their hands. They not only have a trustworthy product but also ready support available from the Apple Developer Team. The Swift experience will bring a paradigm shift in the Apple Development environment being moved from Objective-C to Swift.startapp

The one thing that propels Swift in the application development is bad experience of using Objective-C. The language is not only difficult and time consuming, but there are only just a handful of highly skilled developers that are able to use it. With the coming of Swift, more developers will be able to create good quality apps which can be distributed freely or at a low cost.

Even though Swift is a fairly new language which has not been tested extensively, it already has support from one of the best ad platforms – StartApp. The iOS software development kit is now compatible with StartApp which is an ad platform supporting Apple’s new language. The one thing that made it possible was that the integration of StartApp’s iOS SDK is very simple.

It comes with the same superior banner ads and full page interstitials that are the USPs of StartApp. You can also get the additional OfferWall which provides both 2D and 3D graphic options. All the ads, regardless of the type, are optimised to suit the iOS interface which enhances the user experience. The graphics are crisp and the distortion of image has been eliminated.  The ads are available in both landscape and portrait modes.

StartApp is the only ad network that has taken the Swift language under their wings. They are 100,000 partners strong and more than 1 billion SDK’s have been downloaded because of their relentless efforts at marketing and advertising. This definitely puts Swift in good hands, despite being newly born in the iOS developer sector.

The post The 1st SWIFT Compliant Ad Network – StartApp appeared first on Android Apps.

by Gigi Fenomen at July 04, 2014 12:51 PM

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.

moto-maker-uk

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 Gary_C at June 17, 2014 07:30 PM

June 02, 2014

May 18, 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.

Downloader

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 28, 2014

Publishing an Android book in the vogella book series

Since a few months I’m working on an Android book based on the popular Android online tutorials from my website.

Selection_017

On thing I learned in the past about book writing is that the process is extremely painful. Creating a consistent and almost error free description is much more work than publishing a good online tutorial. Fortunately I already have a great team of reviewer for the book, so I have high hopes that this book will be of great quality.

I plan to release early access versions of the book via Kindle and Google Play. This release process should start soon.

I want to add every month a new chapter and people which purchases the early access version can update their books. This process will continue until I finish the electronic book. The final book will be available as paper book and as ebook.

by Lars Vogel at February 28, 2014 10:17 AM

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 (noreply@blogger.com) 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 […]

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.

import uk.co.senab.photoview.VersionedGestureDetector;
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);
  }

  @Override
  public void onDrag(float dx, float dy){
     Matrix matrix = getImageMatrix();
     Matrix copy = new Matrix(matrix);
     copy.postTranslate(dx, dy);
     setImageMatrix(copy);
  }
  @Override
  public void onFling(blah, blah...){
    //no op
  }
  @Override
  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 […]

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) {
     super();
     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:
     //from http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html
     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();
       }
    break;

    case MotionEvent.ACTION_UP:
      Log.d(TAG, "action up");
      reset();
    break;

    case MotionEvent.ACTION_POINTER_DOWN:
    break;

    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);
       }
  break;
  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);

//from http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html
     // 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 http://stackoverflow.com/questions/17530589/jumping-imageview-while-dragging-getx-and-gety-values-are-jumping?rq=1 and
// last comment in http://stackoverflow.com/questions/16676097/android-getx-gety-interleaves-relative-absolute-coordinates?rq=1
//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.
       frame.setX(aPosX);
       frame.setY(aPosY);
    }
    break;

    case MotionEvent.ACTION_CANCEL: {
      mActivePointerId = INVALID_POINTER_ID;
    break;
   }
  }

    return true;
}

 private void reset(){
   aPosX = 0;
   aPosY = 0;
   aLastTouchX = 0;
   aLastTouchY = 0;
   frame.setVisibility(View.INVISIBLE);

  }
}

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

September 18, 2013

Wallpaper Wednesday – Schwangau

Wallpaper Wednesday - Schwangau

This week’s wallpaper is called Schwangau after the place where it was taken. I always use the wallpapers that I put up, and I hope you like it enough to use it too.

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

by Kyle Dornblaser at September 18, 2013 07:23 PM

September 11, 2013

Wallpaper Wednesday – Prague

Wallpaper Wednesday - Prague

This week’s wallpaper is called Prague. I always use the wallpapers that I put up, and I hope you like it enough to use it too.

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

by Kyle Dornblaser at September 11, 2013 02:37 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 (noreply@blogger.com) 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 (noreply@blogger.com) at July 30, 2013 04:48 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.

Via TmoNews.com.

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

Beat on Broken Hearts in Springloaded’s Heart Beaten for Android

heart.beaten-android

Beat on Broken Hearts in Springloaded’s Heart Beaten for Android

Most people that have been in love have had their heart broken at some point, and it always sucks. The folks at Springloaded agree, and Heart Beaten is their retro tribute to lost love and heartbreak.

Android Games

by Adam Field at June 21, 2013 02:58 PM

Monoprice 8320 Earbuds Deliver at a Low Price

20130620_180008

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

June 20, 2013

Aquaria comes to Android via the Humble Bundle 6

Screenshot_2013-06-20-01-39-00

Aquaria comes to Android via the Humble Bundle 6

Aquaria is another awesome Indie that’s just arrived on Android courtesy of the Humble Android Bundle 6. It's the second Bundle game we've covered so far, and it's unlike any platformer you've ever played.

Android Games

by Adam Field at June 20, 2013 03:48 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:


http://en.wikipedia.org/wiki/The_Millionaire_Next_Door

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: http://davids-book-reviews.blogspot.com/

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 SecondActivity.java, 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 HelloWorldActivity.java 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 HelloWorldActivity.java. 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”);
taskText.append(extraData+”\n”);

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 SecondActivity.java 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);
          if(resultCode==RESULT_OK)
          {
                      //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 (noreply@blogger.com) 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 (noreply@blogger.com) 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