Planet Android Headlines

↑ Grab this Headline Animator

August 29, 2015

What’s Holding Back Android Gaming Performance?

XCOM-LG-G4-chart

This report by the GameBench team displays some interesting results which show that most Android phones from 2015 cannot compete with the iPhone in terms of in-game performance and stability. What are the causes? Is it simply software, faulty hardware? Optimization? Interesting questions are posed, so if you are interested, give it a read and let us know what you think!

by Mario Tomás Serrafero at August 29, 2015 04:18 PM

CyanogenMod 12.1 Early Alpha for LG G4 [T-MOB H811/ INT H815]

g4

Recognized Contributor genesixxbf3 uploaded a build of an AOSP/CM based ROM for the T-Mobile and International variants of the LG G4. Keep in mind, though, that this is a very early stage release, and the key features like bluetooth and the camera are not working properly. Flash at your own risk, but either way, be happy something better is coming!

by Mario Tomás Serrafero at August 29, 2015 04:14 PM

Telltale Games releases first screenshots for their upcoming Minecraft: Story Mode series

Yesterday we reported on the fact that Telltale Games would have a playable version of their upcoming Minecraft: Story Mode series at PAX Prime. Unfortunately if you aren't going to PAX Prime, you won't be able to see anything about the game. So the company decided to release some screenshots showing off some of the first episode.

If you missed our previous coverage, Minecraft: Story Mode will be a five-part series where players will be taking control of Jesse, the story's main Protagonist, who is out to find The Order and save the world basically.

Jesse and his group of friends revere the legendary Order of the Stone; four adventurers who slayed an Ender Dragon. The Order are the very best at what they do: Warrior, Redstone Engineer, Griefer, and Architect. While at EnderCon, Jesse and his friends discover that something is wrong... something dreadful. Terror is unleashed, and they must set out on a journey to find The Order of the Stone if they are to save their world from oblivion.

Unfortunately, all we know regarding a release date is that Minecraft: Story Mode will have the first episode arrive sometime this Fall. Considering it is playable at PAX Prime, it shouldn't be too long of a wait. In the meantime, enjoy the new screenshots above and below.

Website Referenced: Telltale Games

August 29, 2015 03:14 AM

Help feed the hungry ape in MoBu, coming soon to Android next month

Released by Panteon, MoBu is a game about an ape who's both vociferously hungry, and incredibly lazy. As the story goes, MoBu encounters a witch doctor named MaGu, who uses magic to allow the ape to magically extend his own arms, thus easing his search for food.

With players controlling MoBu, he will venture into the jungle to search for food, using his arms to swing (Tarzan or Spiderman style) over the hazards found in the various areas, such as toxic poisons or overflowing lava. All told, the game contains sixty levels, and will be available September 1st.

Mobu Features:

- Very simplistic game mechanics that can be played with a single finger.
- Lean interfaces immersed in game environment.
- 3 Different episodes (environments) with 60 levels
- Pollution strikes! Toxic environment with more challenges to face.
- At the end of each level, you can upload your replay
- Your videos are uploaded to Everyplay and they can be directly shared via Twitter, Facebook, Youtube.
- You can record yourself a video over your replay

Mobu is slated to be free, and will require players to feed MoBu bananas, by either collecting them in-game, watching ads, or buying them via IAPs.

August 29, 2015 01:56 AM

August 27, 2015

Digital Assistants are awaiting your request

August 2015 Roundup
Siri may still be the snarkiest of the mobile butlers on the market, but there are a bunch of competitors equally ready to answer your every beck and call. Between Google Now, Cortana, Hound, and Facebook’s new AI tool, life has never been easier for smartphone owners. To learn all about it, simply read this roundup.

COMMICS

July 2015 Roundup

The post Digital Assistants are awaiting your request appeared first on Mutual Mobile.

by Mark Killian at August 27, 2015 09:15 PM

Announcing the Android Auto Desktop Head Unit

Posted by Josh Gordon, Developer Advocate

Today we’re releasing the Desktop Head Unit (DHU), a new testing tool for Android Auto developers. The DHU enables your workstation to act as an Android Auto head unit that emulates the in-car experience for testing purposes. Once you’ve installed the DHU, you can test your Android Auto apps by connecting your phone and workstation via USB. Your phone will behave as if it’s connected to a car. Your app is displayed on the workstation, the same as it’s displayed on a car.

The DHU runs on your workstation. Your phone runs the Android Auto companion app.

Now you can test pre-released versions of your app in a production-like environment, without having to work from your car. With the release of the DHU, the previous simulators are deprecated, but will be supported for a short period prior to being officially removed.

Getting started

You’ll need an Android phone running Lollipop or higher, with the Android Auto companion app installed. Compile your Auto app and install it on your phone.

Install the DHU

Install the DHU on your workstation by opening the SDK Manager and downloading it from Extras > Android Auto Desktop Head Unit emulator. The DHU will be installed in the <sdk>/extras/google/auto/ directory.

Running the DHU

Be sure your phone and workstation are connected via USB.

  1. Enable Android Auto developer mode by starting the Android Auto companion app and tapping on the header image 10 times. This is a one-time step.
  2. Start the head unit server in the companion app by clicking on the context menu, and selecting “Start head unit server”. This option only appears after developer mode is enabled. A notification appears to show the server is running.
  3. Start the head unit server in the Android Auto companion app before starting the DHU on your workstation. You’ll see a notification when the head unit server is running.

  4. On your workstation, set up port forwarding using ADB to allow the DHU to connect to the head unit server running on your phone. Open a terminal and type adb forward tcp:5277 tcp:5277. Don’t forget this step!
  5. Start the DHU.
      cd <sdk>/extras/google/auto/
      On Linux or OSX: ./desktop-head-unit
      On Windows, desktop-head-unit.exe

At this point the DHU will launch on your workstation, and your phone will enter Android Auto mode. Check out the developer guide for more info. We hope you enjoy using the DHU!

by Reto Meier (noreply@blogger.com) at August 27, 2015 05:36 PM

Building better apps with Runtime Permissions

Posted by Ian Lake, Developer Advocate

Android devices do a lot, whether it is taking pictures, getting directions or making phone calls. With all of this functionality comes a large amount of very sensitive user data including contacts, calendar appointments, current location, and more. This sensitive information is protected by permissions, which each app must have before being able to access the data. Android 6.0 Marshmallow introduces one of the largest changes to the permissions model with the addition of runtime permissions, a new permission model that replaces the existing install time permissions model when you target API 23 and the app is running on an Android 6.0+ device.

Runtime permissions give your app the ability to control when and with what context you’ll ask for permissions. This means that users installing your app from Google Play will not be required to accept a list of permissions before installing your app, making it easy for users to get directly into your app. It also means that if your app adds new permissions, app updates will not be blocked until the user accepts the new permissions. Instead, your app can ask for the newly added runtime permissions as needed.

Finding the right time to ask for runtime permissions has an important impact on your app’s user experience. We’ve gathered a number of design patterns in our new Permission design guidelines including best practices around when to request permissions, how to explain why permissions are needed, and how to handle permissions being denied.

Ask up front for permissions that are obvious

In many cases, you can avoid permissions altogether by using the existing intents system to utilize other existing specialized apps rather than building a full experience within your app. An example of this is using ACTION_IMAGE_CAPTURE to start an existing camera app the user is familiar with rather than building your own camera experience. Learn more about permissions versus intents.

However, if you do need a runtime permission, there’s a number of tools to help you. Checking for whether your app has a permission is possible with ContextCompat.checkSelfPermission() (available as part of revision 23 of the support-v4 library for backward compatibility) and requesting permissions can be done with requestPermissions(), bringing up the system controlled permissions dialog to allow the user to grant you the requested permission(s) if you don’t already have them. Keep in mind that users can revoke permissions at any time through the system settings so you should always check permissions every time.

A special note should be made around shouldShowRequestPermissionRationale(). This method returns true if the user has denied your permission request at least once yet have not selected the ‘Don’t ask again’ option (which appears the second or later time the permission dialog appears). This gives you an opportunity to provide additional education around the feature and why you need the given permission. Learn more about explaining why the app needs permissions.

Read through the design guidelines and our developer guide for all of the details in getting your app ready for Android 6.0 and runtime permissions. Making it easy to install your app and providing context around accessing user’s sensitive data are key changes you can make to build better apps.

by Reto Meier (noreply@blogger.com) at August 27, 2015 04:51 PM

ONEPLUS 2 REVIEW

ONEPLUS 2 REVIEW

Introduction

After the massive hype surrounding their first foray into the mobile phone market, OnePlus have returned this year with a new handset and have tried to recreate the buzz around the original. Over the near sixteen months since OnePlus inflicted the invite system on us, so much has changed for them. They have alienated and annoyed large sections of the Android community with tasteless ill advised ‘competitions’ for invites, severed their ties with Cyanogen (possibly one of the main reasons their hype train gathered as much momentum as it did) and even managed to upset the Android Police team

wpid-p_20150827_222418.jpg
OnePlus are still brandishing the ‘flagship killer’ tag line that served them so well with the OnePlus One however this year consumers have far more choice in the sub £300 market than they had before so the claim carries a lot less weight. There have also been a couple of interesting choices with the hardware specification of the OnePlus 2 with the removal of NFC and deciding not to include either fast or wireless charging (all features you would expect on a current flagship). The OnePlus 2 is also a little more expensive than it’s older sibling, coming in at £289 for the 64G model (the unit under review here), as compared to £269 for the equivalent version of the One.

The OnePlus 2 went on sale on August the 11th using a supposedly updated version of the controversial invite system with a larger stock holding to speed the queue along. Delivery has been notably quicker and I have as yet to see any reports of hardware issues such as the yellow banding being reported on the OnePlus One screen at release.

Aesthetics

The OnePlus 2 is a solidly built unit, nothing feels below par or of a sub standard quality. Buttons and button holes fill as they should, edges between different surfaces meet and connect the way they are meant to with nothing protruding or indenting but instead continuing smooth lines. The whole unit has been manufactured and assembled very well completely devoid of sharp edges or little gaps.

wpid-p_20150827_222540.jpg wpid-p_20150827_222313.jpg wpid-p_20150827_222705.jpg wpid-p_20150827_223710.jpg wpid-p_20150827_223803.jpg wpid-p_20150827_222645.jpg wpid-p_20150827_223817.jpg wpid-p_20150827_223753_1.jpg wpid-p_20150827_222313_1.jpg

The signature black sandstone back is returns but this time there are more OEM options available for changing it and it is also a lot easier to snap off and on. The device is a little heavier than the previous model weighing in 13 grams more and also a little fatter being 1mm thicker, but the height and width are reduced coming in at 151.8 x 74.9 with the same 5.5” screen. Out of all the little small differences it is the added weight you will notice the most, those 13 grams can be felt. Aesthetically the 2 is a very simple looking device. The front is plain and dark with a small speaker grill, the front camera lens and the fingerprint scanner being the only visible features you can notice when the screen is off. Added to these are a notification LED and two capacitive buttons either of the scanner which light up as thin lines. On the bottom in the centre is the USB type C connector flanked on either side by appears to be two speaker grills but only one is actually used with the other housing the microphone. Up top is a standard audio output plug and a pinhole used for noise cancellation. The right hand edge has a long thin volume rocker just over two thirds of the way up and the power button sits roughly 5mm below this. The right hand edge has something new, a three position alert slider that is used for switching notification priority, this sits directly opposite the volume rocker and has a rough surface to aide grip. As mentioned the rear of the phone has the familiar sandstone back with the camera, focus laser and duel LED flash sitting roughly an inch from the top. The side edges are constructed from an aluminium and magnesium alloy which adds to the quality but it isn’t quite enough to give an all over premium feel.

Display

With constant advances in screen technology many manufacturers are incorporating screens which are flexible or curved, or have ultra high resolutions. OnePlus have shied away from this and have instead opted for a 1080p LTPS LCD unit the same as was on the original One. Given the low cost this is a compromise that makes sense, while screens of higher resolution can be very nice they are a luxury item rather than a necessity even on high end devices.

wpid-p_20150827_222627.jpg
Viewing angles are fine with text and images remaining clear even with the phone held at quite obtuse angles. The screen also performed well for me in very bright sunlight (we do get the odd clear day in Scotland) but the response time for the OS to adjust the brightness when first unlocking is slower than I would like.

Camera(s)

One area that OnePlus have rung the changes is with the camera. It still has a 13mp main shooter but it is for from the same sensor. This time the pixel size has been increased to 1.3um which should mean that each image pixel is capable of collecting more light, OnePlus claim this is the largest pixel size on any smartphone camera of this resolution. The end result should mean clearer, more detailed shots in low lighting conditions. Additionally the new camera module also boasts optical image stabilisation (a feature missing from the original), dual LED flash, f/2.0 aperture and laser focusing. The end result is a far more accomplished unit which should mean a higher percentage of quality images than before. On the front there is a ‘5mp distortion free’ module according to the blurb from OnePlus, and they have left it at that rather than being tempted by adding a flash as is becoming popular on a lot of handsets right now.

wpid-screenshot_2015-08-26-11-27-39.png wpid-screenshot_2015-08-26-11-27-17.png wpid-screenshot_2015-08-26-11-28-23.png

While the hardware has undoubtedly been improved the same cannot be said for the camera software. It still does slow motion video, panorama and time lapse shots but the interface is poor and there are no value added features that most OEM’s now include. For a gallery app they have opted for the Google photos app so you wont get anything unique to your OnePlus.

wpid-img_20150823_163930.jpg wpid-img_20150825_193400.jpg wpid-img_20150828_111824.jpg wpid-img_20150828_111943.jpg wpid-img_20150828_111829.jpg wpid-img_20150828_095053.jpg wpid-img_20150828_094125.jpg wpid-img_20150828_094019.jpg wpid-img_20150828_091248.jpg wpid-img_20150828_020426.jpg wpid-img_20150827_220454.jpg wpid-img_20150829_103858.jpg wpid-img_20150828_011543.jpg wpid-img_20150827_231924.jpg wpid-img_20150817_181850.jpg

The end result of all the above is a camera that is very capable in a variety of different settings. Rather than bore you with details of each of the included gallery images I will just say that each shot was taken on auto mode with only manual selection of the flash being off or on.

Software

One of the big controversies with OnePlus in the last year has been their public breakup with Cyanogen Inc., and how the parting would affect future devices. Their answer was to form a ROM development team from within the custom ROM community to create their own Android based OS, and the result was Oxygen OS. If you have ever used a Nexus device or flashed an AOSP based ROM then Oxygen OS will seem very familiar. More and more device manufacturers are keeping the look and feel of standard Android and OnePlus have decided on this course as well. However, where other OEM’s swap out some apps and services for their own, OnePlus sticks pretty rigidly with Google’s offerings. The only notable exceptions are the previously mentioned camera app and the application launcher, with all other differences being some customised settings.

wpid-screenshot_2015-08-27-22-30-17.png wpid-screenshot_2015-08-27-22-33-24.png wpid-screenshot_2015-08-27-22-29-05.png wpid-screenshot_2015-08-27-22-33-18.png

The Oxygen OS Shelf sits a swipe to the right away from your main launcher screen in the same the Google Now launcher has it’s now page. OnePlus have said that the Shelf is still a beta feature but they decided to make it available anyway (it can be switched off and on in settings). It Contains your most used apps, contacts, the current weather and also allows you to add widgets of your choice. I personally turned it off after a couple of days, but others may like what it brings.

Audio

The speaker in the 2 produces a decent volume but it is far from being of a high quality. Talking and sound effects are OK, but the minute you play some music you soon discover it’s failings. The ROM has the MaxAudio audio effects software and while it can help a bit it isn’t enough to mask the mediocre quality of the hardware. Using headphones is a far better experience as you would expect, but I have seen reports of issues with certain brands.

Development & Customisation

Losing Cyanogen as a ROM provider hasn’t just affected how the ROM works but also how you can theme it. Whereas the OnePlus One had the full power of the Cyanogen Theme Provider, the 2 is almost entirely devoid of theming options. You can switch from normal to dark mode with a choice of accent colours and you can select to use on-screen navigation buttons or stick with the capacitive ones on the lower bezel and that’s about it. The stock ROM will mostly work with custom Layers via the Layers Manager app from the Play Store if you don’t mind rooting your device but it isn’t 100% compatible.

wpid-screenshot_2015-08-27-22-30-40.png
ROM development will be as good as you can get, once the phone makes it’s way into willing developers hands. Unlike some OEM’s OnePlus don’t expect you to jump through hoops to unlock your device, no nasty propriety flashing utilities, just good old fastboot and adb the way Google intended. Not only have they made it easy to unlock, they actively encourage it. One of the better things OnePlus did on social media was to post links to custom ROM’s they thought owners might like to try, I expect the same this time round. To aide buyers in this act they actually include all the drivers and software you need (for Windows, Mac and Linux) on a partition on the phone which you can just copy off when you connect the device to your computer.
Because devices are still only trickling out there is currently only one custom ROM on the XDA web site, a CM 12.1 build that at the time of writing still has a few bugs, but expect the forum to explode with new ROM’s over the coming weeks.

Performance

With a Snapdragon 810 SOC and 4G of RAM (3G in the 16G version) the 2 performs as well as you would expect. Well it almost does, I find that the device seems to stutter every now and then regardless of what task it is doing. Since the last OS update the number of times this happens has greatly reduced but it does very occasionally still happen. Much has been made of the Snapdragon 810 overheating issues since it first hit the market but to date I have yet to encounter anything worse than I would get pushing any of my previous phones. Yes it warms up, but not overly so. One of the ways OnePlus claims to have dealt with the heat issue is through their software control of core switching to stop any core being overused, they have also attached a graphite heat sync to dissipate the heat in an even manner.

Land of Droid -

by UbuntuBhoy at August 27, 2015 02:25 PM

6 Reasons Why EBooks are a Game-Changer

It wasn’t all that long ago when the world thought eBooks would have zero chances of succeeding in the market. According to a report from Statistics Portal, revenue eBook sales in 2008 hit 274 million U.S. dollars. By the following year, revenues registered a significant jump, mainly attributed to the rising demand and supply of eBook gadgets and apps.

By the time 2013 figures were forecasted, revenues showed an expected increase that was at least 17 times the 2008 mark, making revenues to around 4.52 billion U.S. dollars. Using current trends as an indicator, it’s expected that 2017 revenues will hit 8.67 U.S. dollars, which is even 30 times more than the 2008 revenue figures.

That’s quite a dramatic increase, considering it’s been less than 10 years since eReaders and eBooks appeared in the public eye. Still, while die-hard fans of print will continue to naysay eBooks, there’s no denying the fast rise of eBook users.

 

More Android Reading Appsebooks

In an article from Yahoo last year says Android users beat Apple users with a 52 percent market share while Apple had 42.7 percent. This year, while Android and Apple hold over 96 percent of the global market share, 82 percent of that share belongs to Android, according to an article on Marketing Land.

The larger market share also meant more reading apps for Android rather than Apple users. Among the most popular, of course, is Nook from Barnes & Noble, a reading app for Android that offers over 2 million books, with thousands of those free. And with its lending technology, users can handily swap beloved books in their collections with friends and family. With more and more people spending time on mobile technologies instead of their desktops, the number of reading apps for Android will only continue to grow.

 

Why Ebooks Win

For book lovers, the growth in reading apps only makes it more fun to explore different types of the reading experience, with an array of features and freebies. But the real winner is still the eBook. EBooks have become the game-changer. Here are some of the best reasons why:

  • Incredibly portable: 

    From daily commutes to travelling all over the globe, eBooks make it possible for users to bring an entire library with them wherever they go. With eBooks, a new generation of book lovers were born, one that valued access in their choice of reading material.

  • Saves space: 

    Book lovers know this: books take up a lot of space, so much so that it could feel crowded instead of cozy in your room. With eBooks, that’s not really a problem. You could have as many eBooks as you want without worrying that you’ll eventually run out of space. Owning eBooks is supremely convenient and allows you to convert more of your space into something else.

  • No storage fees: 

    Ever had to pay for storage fees because you had to move and there was nowhere to put your vast collection of books? There simply wasn’t anywhere to store your piles and boxes and boxes of books? With eBooks, you won’t have to pay for storage fees just to keep your books with you.

  • Your relocation bff:

    Need to move somewhere, another country perhaps? Maybe you’ll be gone for two years and you want all your books with you. Just because you know you’ll miss them and you’re simply not sure which one you’re going to pine for so you want to bring them all. That might turn out to be a logistics nightmare for you. And you’d have to pack everything into a box, unbox the whole lot and when it’s time to come home, ship it all back. With an eBook, you can bring your entire collection without having to plan all this or think things through or deal with tough questions like: do I leave this? Do I do a book drive and sell this off? Do I keep them in storage and shell out extra shekels for storage fees?

  • Wallet-friendly: 

    EBooks aren’t just pocket-friendly—since most reading apps work for mobile—these books are also more affordable than their print versions. A $10 reduction in price might not seem much but for book lovers, that’s a lot. If you regularly buy books, this gets you huge, huge savings in the long run. Every penny definitely adds up.

  • Waiting is more fun: 

    Need to wait a few minutes in the checkout line? Waiting for the bus? With short ebooks—quick reads—waiting times have become much more bearable. By losing yourself in an adventure or horror story or even romance, you won’t even notice the time passing. You’ll hardly even know your turn is up. With eBooks, long lines at Wall Mart never have to be as stressful and soul-sucking ever again.

 

 

 

by Matty Selbst at August 27, 2015 09:12 AM

August 26, 2015

Digital assistant showdown

Post_20150812_DigitalAssistants_Header

Apple revolutionized hands-free user interactions when they introduced Siri in 2011. Since then, we’ve seen the introduction of Google Now (2012), Hound from SoundHound, and most recently, a “leaked” copy of Microsoft’s Cortana for Android. Below is my biased and totally unscientific comparison of the current crop of personal assistant apps. Your results may vary.

Note: Hound is in private beta release and Microsoft Cortana is a “leaked” copy. Extra consideration should be given to them, considering they are not officially released products. Also, all of these products are backed by cloud services so they are continuously improving.

Contenders

Siri

Siri, the original personal assistant acquired by Apple in 2010, was the first voice-controlled user interface to utilize conversational speech and cloud intelligence. Continuing the Apple tradition of making technology approachable, Apple gave Siri a “personality”.

Distinguishing features:

  • Accessible via physical button on device, making hands-free operation easier.
  • Can learn your name and how to pronounce it correctly.
  • Accessible through the lock screen to help identify the owner of the device.
  • Only available on iPhone and iPad devices, although rumors of a OS X version have persisted for years.

Google Now

Personal assistant powered by Google’s industry leading search engine and natural language processing technology.

Distinguishing features:

  • Aggregates data using Google’s knowledge graph to predictively report when a variety of contextually relevant information on “cards”. Your orders are delivered, flight status, weather, traffic and limited support for 3rd party information.
  • First personal assistant to use always listening technology to trigger interactions using only the phrase “OK Google”
  • Available across platform as well as on the desktop, iOS, Android, OSX, Windows, Linux

Hound

Created by SoundHound and in development for over a decade, Hound touts mind boggling logic processing and speed. Hound also works amazingly well when using recommended queries, but becomes less useful when you depart from suggested questions. Hound is currently in private beta for Android only, but that will likely change as the digital personal assistant race heats up.

Distinguishing features:

  • Correctly interprets convoluted logic queries (e.g. “Show me all hotels in San Francisco for Friday night that are less than $200 dollars”).

Microsoft Cortana

Cortana originally debuted on Windows phones, and is now being ported to Android and, eventually, iOS. As I said earlier, I only tested the “leaked” version on Android, and will need to revisit once officially version has been released. Like Siri, Cortana attempts to have a personality, as well as some other novel features: geofencing, emoji story.

Distinguishing features:

  • Geofence aware reminders that send notifications based on location. So for example; “remind me to buy milk the next time I am at the store” and Cortana will remind you when you are geographically close to the store you select. I tried this and it works to an extent; I got reminders when i would drive past stores on the freeway.

Rules

Like all good competitions, I had to devise a point system to keep my decision as scientific as possible. I decided to award points as follows:

Speech recognition (10 points)

To test each assistant’s speech recognition, I ran it through a series of ten quick questions just to see if it even understood me. Each time the assistant responded, I gave it a point. If it didn’t, I gave it a goose egg.

Speed (4 points)

Speed is really subjective and dependent on a lot of factors outside of the app’s control (network speed, data signal, etc). Additionally some apps take longer because they are performing logical analysis of the query while others are just plugging data into a search engine. Since speed is so subjective, I graded on a curve and assigned a cumulative score based on each assistant’s overall speed performance.

Accuracy (5 points per query)

The true measure of a digital assistant is how well it answers your questions and requests. To test this, I asked each service the same ten questions and scored them accordingly. Below is a breakdown of how they were judged on a per-question basis:

0 = wrong answer or fail 1 = query was submitted to a search engine and the search results are displayed. 2 = answer is available but requires touch interaction 3 = answer or operation is correct and result is reported audibly +1 = bonus point can be added for exceptional behavior +1 = extra bonus if context is preserved on follow up questions. (e.g. Show me pictures of the Eiffel tower? How tall is it?) -1 = points can be deducted for shady behavior (e.g. directing users to pay services)

Results

After a hard-fought software battle, here’s how each digital assistant netted out.

Event 1: Speech Recognition

Below are the 10 questions I asked each assistant:

“When was the pyramid of Cheops built?” “What year did Arnold Schwarzenegger win Mr. Olympia?” “How tall is the Matterhorn?” “Give me directions to Hopdoddy?” “Give me directions to Manchaca road?” ( Austin pronunciation ) “Give me directions to Manchaca road?” ( Spanish pronunciation ) “How do you pronounce Guadalupe?” ( Austin pronunciation ) “How do you pronounce Guadalupe?” ( Spanish pronunciation ) “What time is it in Tallahassee?” “Who is the mayor of Tehran?”

And here are the results:

Siri 1 0 1 1 0 0 0 0 1 1 = 5 Google Now 1 1 1 1 1 1 0 1 1 1 = 9 Hound 0 1 1 0 0 0 0 1 1 1 = 5 Cortana 1 1 1 1 1 1 0 1 1 0 = 8

Event 2: Speed

Siri = 2 Google Now = 3 Hound = 4 Cortana = 1

Event 3: Accuracy

Since this is the most important event in the Digital Assistant Olympics, I’ll break down the results for each question/command individually.

1) “Play, ‘You know you like it.’”

Siri Siri played the correct song from my music library, along with full media controls: Next, Skip, Previous, Pause, Stop, Resume. Post_20150812_DigitalAssistants_sirimusic Score = 5 (3 points for carrying out the command, 1 point for full control of music library, 1 point for context aware questions – “Who sings this song?” will report the artist for the currently playing track)

Google Now Google Now played the correct song from my music library, but lacked the full media controls of Siri. All other actions must be performed by touch. In situations where the song or artist can not be identified in the music library, Google Now will launch Google Play Radio. Post_20150812_DigitalAssistants_googmus Score = 3 (3 points for carrying out the command)

Hound Hound performed a web search and displayed the results from SoundHound instead of my music library. I also had to touch the screen to play the song. Post_20150812_DigitalAssistants_houndmusic Score = 2 (2 points for displaying the correct search results but requiring touch interaction to play)

Cortana Cortana performed a web search, resulting in series of YouTube videos I had to click to activate. However, it should be noted that Cortana documentation says this works appropriately on Windows phones. Post_20150812_DigitalAssistants_cortmusic Score = 1 (1 point for performing a web search that led me to a bunch of videos instead of the song itself)

SUMMARY:

Siri = 5 Google Now = 3 Hound = 2 Cortana = 1

2) “What time does Torchy’s close? Show me their menu.”

Siri Siri successfully answered the question, but required additional effort to dig up the menu. Post_20150812_DigitalAssistants_siritorch Score = 3 (3 points for answering the question properly.

Google Now

Google Now answered the question and brought up the menu when asked. Post_20150812_DigitalAssistants_googtorch Score = 5 (3 points for answering the question, +1 for reporting the results without follow up questions, +1 for bringing up their menu upon voice command.)

Hound Hound performed a web search, but didn’t even narrow it down according to my location. Post_20150812_DigitalAssistants_houndtorch Score = 1 (1 point for performing a web search)

Cortana Cortana answered the question, as well as the audible follow-ups, but I still had to tap for menu. Post_20150812_DigitalAssistants_corttorch Score = 4 (3 points for answering the question, +1 for reporting the results without follow up questions)

SUMMARY:

Siri = 3 Google Now = 5 Hound = 1 Cortana = 4

3) “Make dinner reservations for tomorrow night.”

Siri Siri worked due to the OpenTable integration, however, I had to use touch screen to answer follow up questions. Score = 4 (3 points answering command, +1 for seamless OpenTable integration)

Google Now Google Now performed a google search Score = 1 (1 point for performing a search)

Hound Hound performed a search Score = 1 (1 point for performing a search)

Cortana Cortana displayed list of nearby restaurants according to my geographical location. Score = 2 (1 point for performing a search, +1 point for using my location to tailor the search results)

SUMMARY:

Siri = 4 Google Now = 1 Hound = 1 Cortana = 2

4) “Wake me up at 10:00 AM.”

Siri Siri created an alarm and allowed me to verbally cancel or adjust the time. Score = 4 (3 points for performing the task, +1 for being able to adjust times)

Google Now Google Now successfully created the alarm, but nothing else. Score = 3 (3 points for performing the task)

Hound Hound successfully created the alarm, but nothing else. Score = 3 (3 points for performing the task)

Cortana Cortana successfully created the alarm, but nothing else. Score = 3 (3 points for performing the task)

SUMMARY:

Siri = 4 Google Now = 3 Hound = 3 Cortana = 3

5) “Remind me to {do something} at {time}.”

Siri Siri created the reminder, but it seemed to be stuck in a loop and required several attempts Score = 2 (3 points for performing the task, -1 for being buggy)

Google Now Google Now created the reminder. Score = 3 (3 points for performing the task)

Hound Hound created the reminder. Score = 3 (3 points for performing the task)

Cortana Cortana created the reminder and added a location to it. Score = 4 (3 points for performing the task, +1 for geofencing)

SUMMARY

Siri = 2 Google Now = 3 Hound = 3 Cortana = 4

6) “Is it safe to take acetaminophen with alcohol? What about aspirin?”

Siri Siri performed a web search. Score = 1 (1 point for performing a search)

Google Now Google Now audibly returned the correct result and answered the follow up question. Score = 4 (3 points for performing request, +1 for maintaining context during follow-up)

Hound Hound performed a web search. Score = 1 (1 point for performing a search)

Cortana Cortana performed a web search. Score = 1 (1 point for performing a search)

SUMMARY:

Siri = 1 Google Now = 4 Hound = 1 Cortana = 1

7) “Who was president of the United States in 1993? How long was he president?”

Siri Siri audibly answered Bill Clinton, but failed to acknowledge the end of George Bush’s term. Score = 2 (3 points for performing request, -1 for leaving out a president)

Google Now Google Now audibly mentioned both presidents. Score = 3 (3 points for performing request)

Hound Hound performed a web search. Score = 1 (1 point for performing a search)

Cortana Cortana performed a web search. Score = 1 (1 point for performing a search)

SUMMARY:

Siri = 2 Google Now = 3 Hound = 1 Cortana = 1

8) “Who was president of the Germany in 1987

Siri Siri audibly returned the correct results – Richard Von Weizsacker Score = 3 (3 points for performing request)

Google Now Google Now audibly reported a completely unrelated anecdote about President Reagan’s “Tear down this wall” speech. (I asked this question on a historically significant day, which might have confused Google.) Score = 0 (+1 point for answering audibly with confidence, -1 for giving the wrong answer)

Hound Hound performed a web search. Score = 1 (1 point for performing a search)

Cortana Cortana performed a web search. Score = 1 (1 point for performing a search)

SUMMARY:

Siri = 3 Google Now = 0 Hound = 1 Cortana = 1

9) “What is a calico cat? Why are they always female?”

Siri Siri performed a web search. Score = 1 (1 point for performing a search)

Google Now Google Now audibly returned the correct results sourced from Wikipedia. Score = 4 (3 points for performing request, +1 for preserving context during follow-up)

Hound Hound performed a web search. Score = 1 (1 point for performing a search)

Cortana Cortana returned the correct results sourced from Wikipedia, but not audibly Score = 2 (3 points for performing request, -1 staying quiet)

SUMMARY:

Siri = 1 Google Now = 4 Hound = 1 Cortana = 2

10) “Find a hotel in San Francisco for Friday night that is less than $200, and has a free breakfast”

Siri Siri performed a web search for San Francisco the city, saying nothing about the hotels. Score = 0 (0 points for performing the wrong search)

Google Now Google Now performed a web search for San Francisco hotels. Score = 1 (1 point for performing a search)

Hound Hound returned correct results with prices and links to book the hotel. This is one of the featured query types that Hound excels at. Score = 5 (3 points for performing an accurate search, +1 for providing the right links, +1 for speed)

Cortana Cortana performed a web search for San Francisco hotels. Score = 1 (1 point for performing a search)

SUMMARY:

Siri = 0 Google Now = 1 Hound = 5 Cortana = 1

Winners

Once the checkered flag dropped, it was Google Now who put the pedal to the metal and crossed the finish line just in time to gain the gold medal. Between its unrivaled contextual awareness and search prowess, Google Now was just a little too much for its competitors. Siri wasn’t far behind, and could become a true contender in the near future. Coming in third was Cortana, which may perform even better once it is officially released. And last, and unfortunately least, was Hound. Hound put up a good fight, but it’s just too small to truly compete with superpowers like Google, Apple, and Microsoft. If you don’t feel like adding up the scores yourself, I’ve added the final tallies below. As the old adage goes, numbers don’t lie.

Siri = 32 Google Now = 39 Hound = 28 Cortana = 29

Max Score (including bonus points): 64

The post Digital assistant showdown appeared first on Mutual Mobile.

by Mutual Mobile at August 26, 2015 09:16 PM

August 25, 2015

PSA: Don’t be a jerk when testing

PSA: Don’t be a jerk when testing

Screen Shot 2015-08-25 at 7.04.59 PM

Earlier today, Koushik Dutta’s latest app, Vysor was leaked by someone on Reddit. Koush is being a good sport about this and providing insight via Google+. Nonetheless, I feel it is important to say a word or two about what it means to be a tester.

When someone asks you to test their product, whether that is an app or a device, they are asking for your implicit trust. Sometimes it comes along with a free version of the product, the experience of using a product before anyone else, direct input to get features or functionality you desire, or nothing at all. At the end of the day you are the person agreeing to help out testing either for something or for free.

When you go ahead and leak the beta link to an app, as what happened in this case, or photos of a to be released product, or anything really you are violating that trust. You are also burning a silly amount of bridges. Furthermore, you’re being a total jerk. You agreed to help someone by testing their thing, then you steal or post pictures of the thing.

I can guarantee you that nobody will want that person to help with anything secretive again. They were invited to a beta testing group, and they blew apart the test. This also made Koush have to take responsibility for actions that were not his own and have to answer a ton of questions that, from the wording of posts, he was not ready to answer yet. That person was not thinking of the overall process of making a cool thing or the consequences Koush would have to face down the road.

Perhaps part of this is that indie developers or big companies need to screen their testers better. I would be remiss in not saying that for sure. At the end of the day, however, it is up to the people entrusted to do the thing they said they would do. This means not leaking the hell out of it on Reddit or anywhere else.

If you are ever invited to help test something, keep in mind the negative effects of leaking said something. Not only do you make the creator have to be on the spot, answer questions they are not prepared to and possibly change or negate the entire project. Not only do you now create an influx of people using a “not ready for prime time” product which can influence development time. Not only, as in this case, have you now flooded a dev with a zillion more bug reports than they would have to deal with otherwise. Oh no, that’s not all. Most importantly you look untrustworthy and shady. Nobody will ever ask you to do anything with that level of trust again. And for what? All you’ve gained is 30 seconds of internet fame.

Pro tip, folks: If you want 30 seconds of internet fame, create something like Chocolate Rain. You won’t look nearly as bad and people probably won’t hate you. You may even be asked to do something like that again.

Land of Droid -

by Scott Kenyon at August 25, 2015 11:28 PM

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

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

First, here is what has been added:

  • Version 6.7 added an appendix on the M Developer Preview. Version 6.8 updates that for Android 6.0. Some of the material that had been in the appendix has moved to more permanent homes, with links to that material from the appendix.

  • I have added a standalone tutorial, independent from the EmPubLite series, for upgrading an app to use the new Android 6.0 runtime permission model. Given a starting app that uses the camera to take pictures and record videos, the tutorial will help you progressively add the logic to that app to handle requesting runtime permissions, both up-front and on-demand. I will be going through this tutorial live at droidcon NYC 2015 and DC DevFest 2015.

  • Android Studio 1.3 was released since the last book update, so this update tweaks the book, particularly Tutorial #1 and Tutorial #2, for Android Studio 1.3.

  • I have added a new chapter on the Android 5.0+ native Toolbar widget, plus a corresponding section in the appcompat-v7 chapter on the Toolbar backport

  • I have also added a new chapter on the Design Support library and its alternatives for Material Design elements: FABs, snackbars, and TabLayout. Other elements of the Design Support library will be added to this chapter in future book updates.

  • The book has had two chapters devoted to the camera for a while: how to use third-party code to work with the camera and how to use the android.hardware.Camera API. I have updated those chapters with an eye towards the Android 5.0+ android.hardware.camera2 API.

  • I split the original chapter on SharedPreferences into two, adding an advanced preferences chapter to the trails. A lot of additional material was added to these chapters, including dependent preferences, nested preference screens, etc.

  • I added a sample of using OkHttp’s native API, which for many people will be an easier alternative to HttpUrlConnection as an escape route from the deprecated-and-removed HttpClient API.

  • Various other chapters were updated, such as the chapter on SQLCipher, along with the typical roster of errata fixes.

Now, here are the other changes:

  • The chapters on AlarmManager and NotificationManager were moved into the trails. Courtesy of Google’s “war on background processing”, any sort of background operation is definitely an advanced topic.

  • Similarly, I removed what had been Tutorial #17 and Tutorial #18 from the EmPubLite series, as they covered AlarmManager and NotificationManager. The former Tutorial #19 is the new Tutorial #17.

  • I have removed the Eclipse instructions from the tutorials, as the first pulse in a gradual de-Eclipse-ification of the book.

  • For some reason, changebars are showing up on a lot of the code listings, despite the fact that I did not change the code for those samples. I apologize for the additional noise in the change reporting.

Version 6.9 should be released in the latter half of October 2015, barring something huge happening in the world of Android requiring a faster book update.

by Mark Murphy at August 25, 2015 11:56 AM

The Benefits of Mobile Trading

Mobile trading is the latest facility available for investment and trading. It includes trading in stocks, forex and commodities. In the last couple of years, it has grown by leaps and bounds, bringing it into prominence. Telecommunication technology has improved rapidly because of which smartphones have become faster and more efficient. Apps are now available as per individual needs at extremely affordable costs. For investors and traders, moving over to mobile trading app will be extremely beneficial because-

Smartphones are Portable and Used More

mobile tradingMost of the new technology will be oriented towards the mobile devices, and apps too would be catering to the needs of these devices. Consequently, mobile trading will continue to become faster, easier, and safer, unlike the technology available for desktops and laptops. Added to this is the fact that more and more people are getting familiar with smartphones as it is quite convenient to use these app based handy devices. This is the reason most of the brokers are offering their services based on mobile trading apps and tools.

Mobile Trading is Faster

All the time mobile phones and devices are mostly with us. Therefore, trading is possible with them anytime. On the contrary, desktops are fixed units, and traders need to sit in front of it for trading. While live streaming of trades is possible in both, the fact remains that people with mobile devices are more aware of what is happening when compared to those using desktops and laptops, just because the information can be accessed faster. Consequently, they are able to keep track of movements in their portfolio faster as well.

Mobile Trading On the Go

People spend a lot of time traveling or waiting at some place. All that time can be utilized in learning, earning, and investing. At many places, there are special stands available to use mobile phones even when the person is working or doing something else. It is not possible to carry desktop or laptop to the gym or carry them in trains.

General Awareness about Trading has increased

There was a time stock market trading was deemed to be equivalent to gambling. Few people made money in these markets. Governing bodies got more snags, and things started improving. Now, more people are learning about investing and trading in such markets because relevant information is available on the internet. Mobile tools are available for calculating ratios faster, and indicating risks. Also, new ways of investing have also been introduced over the last two decades such as derivatives, mutual funds, and exchange-traded funds. Therefore, most people are now aware that trading in Forex and stock markets requires study and if they do their homework, there is a lot to take away from the table. All relevant information can be accessed more easily on mobile phones and mobile devices.

Easy to Consult and Correct

When people are using their mobile phones or mobile devices, they can be in touch with others. Unlike this, when they are trading, there is a limited set of people around them, who may admittedly be knowledgeable but still, not necessarily experts in trading. In contrast, mobile devices are communication devices, and communication through these devices is considerably faster than with emails or VoIP, Skype, or other modes. Therefore, it is easy for these people to buy or sell instruments faster as per the advice of experts.

Security is Better

While doing transactions, you can rely on apps for mobile trading. Security features on mobile devices are up-to-date with efficient firewall encryption technology and your transaction details and money are safe from any fraud.

Conclusion

The above reasons indicate that mobile trading is likely to leave trading on the conventional trading platform behind. And it is imperative that everybody who intends to invest or trade in any market spend time learning how to trade in such markets and how to use the mobile devices for such trades!

by Matty Selbst at August 25, 2015 09:56 AM

August 19, 2015

Android 6.0 Runtime Permissions Code Labs

At droidcon NYC, happening at an NYC near you on August 27-28, Larry Schiefer will be delivering a presentation, “Android, May I?”, covering the new Android 6.0 runtime permission system. His presentation is slated for Friday (August 28th) at 10:10am. While augmented reality, annotation processors, and typography are all fine topics in that same time slot, everybody at droidcon NYC should be attending Larry’s presentation.

Later that day, I am scheduled to run a code lab at droidcon NYC, where we will put the runtime permission system through its paces. Come armed with your Android 6.0-equipped developer notebook (and maybe an Android 6.0-flashed mobile device), and you’ll be able to update an existing app to ask for runtime permissions as needed: on first run and if the user asks to do something for which we do not have permission yet.

For those of you who are more of the Washington inclination, I will be reprising the code lab at DevFest DC, though the exact schedule is (ahem) not yet published. I believe the lab will be on Saturday, September 12th. At DevFest DC, I am also delivering a presentation on what’s new in Android 6.0, covering the runtime permissions, the war on background processing, and other bits of goodness (and not-so-goodness) (and downright bad-ness) (but with a marshmallow filling) (and parentheses!) coming our way. DevFest DC is September 11-12, at the AOL headquarters in Northern Virginia.

If you are unable to attend either event:

  • Ask the organizers of your favorite Android developer meetup/GDG/etc. to see if I can do something for your group. That might even be live if you are in the eastern PA/north-central NJ/NYC area. Otherwise, we can look into some sort of webinar.

  • The code lab itself will be backed by a standalone tutorial being added to the next version of The Busy Coder’s Guide to Android Development, due out… um… before I have to deliver the code lab. So, early next week. Right now, I’m digging out from under a large marshmallow that landed on my writing plans.

by Mark Murphy at August 19, 2015 05:46 PM

August 16, 2015

Large update to Gem Miner 2 arriving tonight

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

Complete change list:

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

by Psym at August 16, 2015 07:12 AM

August 15, 2015

Download Android 5 Lollipop for Galaxy Tab 4

The post Download Android 5 Lollipop for Galaxy Tab 4 appeared first on galaxytabreview.

Samsung Galaxy Tab 4 is around one year old now and many of us are waiting for official Android 5 lollipop from Samsung. Well it is not out now but an XDA user has made a pretty stable ROM that gets the job done. This ROM is based on cyanogenmod 12.1 with some features added from other custom Galaxy Tab 4 ROMs. Here are the installation instructions:

Download Android 5 Lollipop for Galaxy Tab 4

* Make sure you are rooted.
* Make sure you have a custom recovery installed. (TWRP is the preferred recovery)
* Download the latest Bliss Rom from here and the latest GApps package from here.
* Boot into recovery.
* Perform a FULL factory wipe and wipe/system and dalvik cache as a precaution
* Flash Bliss Rom
* Flash Google Apps package (for 5.1)
* First boot may take up to 10 minutes.

That is it, you have downloaded and installed Android 5 Lollipop on your Galaxy Tab 4.

by Galaxy Tab Review at August 15, 2015 01:45 PM

August 14, 2015

Download Galaxy Tab 4 TWRP, meant for SM T330, T331, T335, T530, T531, T535

The post Download Galaxy Tab 4 TWRP, meant for SM T330, T331, T335, T530, T531, T535 appeared first on galaxytabreview.

Open recovery TWRP is now available for the Samsung Galaxy Tab 4 and it is compatible with SM T330, T331, T335, T530, T531, T535 variants.

Download Galaxy Tab 4 TWRP

Download TWRP Samsung Galaxy Tab 4 [SM-T3XX|5XX], Tool / Utility for the Samsung Galaxy Tab 4

TWRP opens gates for doing all sorts of hacks such as ability to install a custom ROM from XDA and so on. You can also install custom kernels for Galaxy Tab 4 if you have a custom recovery installed.

To install it, download this file and put your Tab 4 in download mode. You can do this by pressing and holding home + volume down button together until your tablet restarts and goes into download mode. Then connect it to the computer and fire up ODIN. Browse for the downloaded file and flash it. 

by Galaxy Tab Review at August 14, 2015 07:47 PM

August 10, 2015

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




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

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

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



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

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


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


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

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

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



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


Argument: Splash Screen can be implemented correctly.

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

To me this boils down to three main things:

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

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

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

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


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

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

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



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

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

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






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

by Juhani Lehtimäki (noreply@blogger.com) at August 10, 2015 10:30 AM

July 15, 2015

NSNotificationCenter Example in Swift

Here is a simple demo on how to use “NSNotificationCenter” in swift.

NSNotificationCenter is particularly useful when there are multiple class or struct instances that need to take action based on something that happens elsewhere in your application.

To Register the notification… we will call

 NSNotificationCenter.defaultCenter().addObserver(self, selector: "updateOnNotification", name: notificationKey, object: nil)

Now to trigger the notification…

 @IBAction func broadcastNotification(sender: UIButton){
    NSNotificationCenter.defaultCenter().postNotificationName(notificationKey, object: self)
}

//This will be triggered once the notification is sent.
func updateOnNotification() {
    println("Notification Sent");
}

The “notificationKey” should be unique for each notification to identify different broadcasts.

for eg : let notificationKey = “notification_key”

IMPORTANT NOTE : A notification observer will be removed once you close a ViewController in which it is added. i.e an observer will be removed once dealloc is called from a ViewController. In Swift it is by default.

Please leave your valuable comments below.

by James at July 15, 2015 10:00 AM

July 12, 2015

XandarMob is now shipping Android hardware with their wireless timing system

XandarMob have just released version 1.6.1 of Wylas Timing® which was targeted at compliance with the US Swimming and FINA regulations surrounding fully and semi automated timing systems.

And to celebrate they have also released Wylas Timing hardware packs containing all the devices necessary to fire up a timing system out of the box.


The packs contain

  • Android Starter, plus electronic starting pistol and personal PA
  • 6-10 Android Timekeepers
  • Android HDMI Display dongle. Capable of showing 3 lanes on a TV.
  • WiFi Router
  • 10 port charging hub
  • Waterproof carry case

Full details at https://wylas-timing.com/wylas-product/
Full release notes at Wylas Timing 1.6.1


by William Ferguson (noreply@blogger.com) at July 12, 2015 01:32 PM

July 04, 2015

Sync Adapter in Android – A Simple Example…

Hello all,

In Today’s article we will be discussing about the SyncAdapters in Android.
SyncAdapter is just a simple plugin like structure for syncing your server and Device.

Check out this post about Account authenticator before proceeding.

Android Sync Adapter

Why do we use SyncAdapter instead of Using Alarm Manger to Sync?

Automated execution
    Sync can be requested based on variety of criteria, including data changes, elapsed time, or time of day.
Automated network checking
     The system only runs your data transfer when the device has network connectivity.
Improved battery performance
     Allows you to centralize all of your app’s data transfer tasks in one place, so that they all run at the same time. Your data transfer is also scheduled in conjunction with data transfers from other apps. These factors reduce the number of times the system has to switch on the network, which reduces battery usage.
Account management and authentication
     If your app requires user credentials or server login, you can optionally integrate account management and authentication into your data transfer.
Automatic Retry
     Failed syncs are retried with exponential backoffs.

What makes the Sync Adapter?

There are three components that makes up the SyncAdapter..

1.A Content-provider that extends ContentProvider.
2. An Adapter that extends AbstractThreadedSyncAdapter.
3. A Service that extends Service – this links the content provider with the sync adapter

The Content- provider and the Service need to be declared in AndroidManifest.xml.

For example the declaration will look like this…

   <provider
            android:name="MyContentProvider"
            android:authorities="@string/content_authority"
            android:exported="false"
            android:label="MyContentProvider"
            android:syncable="true" />
            
   <service
            android:name="AuthenticatorService"
            android:exported="true"
            android:process=":auth" >
            <intent-filter>
                <action android:name="android.accounts.AccountAuthenticator" />
            </intent-filter>

            <meta-data
                android:name="android.accounts.AccountAuthenticator"
                android:resource="@xml/authenticator" />
    </service>
    
	<service
		android:name="SyncService"
		android:exported="true"
		android:process=":sync" >
		<intent-filter>
			<action android:name="android.content.SyncAdapter" />
		</intent-filter>

		<meta-data
			android:name="android.content.SyncAdapter"
			android:resource="@xml/sync_adapter" />
	</service>

Now create a folder inside the “res” folder named “xml” and create two xmls, one for the autheticator and other for the Adapter.

authenticator.xml

<account-authenticator 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:accountType="@string/auth_type"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:smallIcon="@drawable/ic_launcher" />

sync_adapter.xml

<?xml version="1.0" encoding="utf-8"?>
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
              android:contentAuthority="@string/content_authority"
              android:accountType="@string/auth_type"
              android:userVisible="true"
              android:allowParallelSyncs="true"
              android:isAlwaysSyncable="true"
              android:supportsUploading="false"/>

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Android Account Authenticator</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="auth_type">com.coderzheaven.auth_example</string>
    <string name="content_authority">com.coderzheaven.mycont_provider</string>
</resources>

NOTE : The “android:authorities” in the Provider Declaration and “android:contentAuthority” in the Sync Adapter should match.
That is why I put it in the strings.xml and gave a common name.

Authority is the string which establishes the relationship among the service, content provider and sync adapter.
In the above example “com.coderzheaven.mycont_provider”.

To Start Sync.

ContentResolver.requestSync(account, authority, bundle);  

The account should be valid.

For periodic Syncing.

ContentResolver.addPeriodicSync (account, authority, extras,frequency)

When you request Sync, the System may not start the Syncing immediately, because it will wait for the best battery performance.

Sync Immediately.

If we want to Sync immediately…

 Bundle bundle = new Bundle();  
 //Set below two flags
 bundle.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true);  
 bundle.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);  
 ContentResolver.requestSync(account, authority, bundle);  

NOTE : Periodic syncs are not allowed to have any of SYNC_EXTRAS_DO_NOT_RETRY, SYNC_EXTRAS_IGNORE_BACKOFF,
SYNC_EXTRAS_IGNORE_SETTINGS, SYNC_EXTRAS_INITIALIZE, SYNC_EXTRAS_FORCE,SYNC_EXTRAS_EXPEDITED, SYNC_EXTRAS_MANUAL set to true.
If any are supplied then an IllegalArgumentException will be thrown.

if we request an immediate sync when another sync is already in progress, then sync would be retried after 10 seconds.

NOTE : In Some devices Periodic Sync will not work unless “Auto-Sync” is turned on.

Full Source code that implements Android Authenticator and Sync Adapter is available here.

Please leave your valuable comments below.

by James at July 04, 2015 06:16 PM

June 24, 2015

Beato Bezel Adds an Extra Control Method to the Moto 360

e6fa4f7636ec308a1fd869480678cdd8_original

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

 

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

 

fa4f14b5112db06232e10d9e4cebf7ae_original

 

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

 

c54ad89d98b00af9798e8a8e1cf71284_original

 

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

 

 

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

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

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

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

June 18, 2015

Where are the vogella example projects at Github?

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

Lets the Pull Request be coming. :-)

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

June 09, 2015

Developing for Android

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

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

by Chet Haase (noreply@blogger.com) at June 09, 2015 04:02 PM

May 29, 2015

Android Design Support Library

Posted by Ian Lake, Developer Advocate

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

Navigation View

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

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

<android.support.v4.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">

    <!-- your content layout -->

    <android.support.design.widget.NavigationView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            app:headerLayout="@layout/drawer_header"
            app:menu="@menu/drawer"/>
</android.support.v4.widget.DrawerLayout>

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

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

<group android:checkableBehavior="single">
    <item
        android:id="@+id/navigation_item_1"
        android:checked="true"
        android:icon="@drawable/ic_android"
        android:title="@string/navigation_item_1"/>
    <item
        android:id="@+id/navigation_item_2"
        android:icon="@drawable/ic_android"
        android:title="@string/navigation_item_2"/>
</group>

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

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

<item
    android:id="@+id/navigation_subheader"
    android:title="@string/navigation_subheader">
    <menu>
        <item
            android:id="@+id/navigation_sub_item_1"
            android:icon="@drawable/ic_android"
            android:title="@string/navigation_sub_item_1"/>
        <item
            android:id="@+id/navigation_sub_item_2"
            android:icon="@drawable/ic_android"
            android:title="@string/navigation_sub_item_2"/>
    </menu>
</item>

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

Floating labels for editing text

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

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

Floating Action Button

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

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

Snackbar

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

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

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

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

Tabs

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

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

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

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

CoordinatorLayout, motion, and scrolling

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

CoordinatorLayout and floating action buttons

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

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

CoordinatorLayout and the app bar

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

 <android.support.design.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
     
     <! -- Your Scrollable View -->
    <android.support.v7.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
   <android.support.v7.widget.Toolbar
                  ...
                  app:layout_scrollFlags="scroll|enterAlways">

        <android.support.design.widget.TabLayout
                  ...
                  app:layout_scrollFlags="scroll|enterAlways">
     </android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>

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

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

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

Collapsing Toolbars

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

<android.support.design.widget.AppBarLayout
        android:layout_height="192dp"
        android:layout_width="match_parent">
    <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">
        <android.support.v7.widget.Toolbar
                android:layout_height="?attr/actionBarSize"
                android:layout_width="match_parent"
                app:layout_collapseMode="pin"/>
        </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>

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

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

CoordinatorLayout and custom views

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

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

Available now!

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

 compile 'com.android.support:design:22.2.0'

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

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

by Reto Meier (noreply@blogger.com) at May 29, 2015 05:43 PM

May 28, 2015

Tutorial: How to Implement In-app Billing in Android – Part 2

Part 1 of this article was my guide on how to get started with in-app purchases in Android. It was published in July 2014. Finally, here is part 2. ... Part 1 covered the operational side of things: defining in-app products, application keys, etc. In this article, I will offer some suggestions on how to adapt the TrivialDrive code for your own app. The code provided with TrivialDrive is very well structured and we all can learn a lot from it. Most of the hard work is done in classes inside the util package of TrivialDrive. Without that package, the MainActivity would be much more difficult. The changes I suggest below are refinements on what is in the MainActivity provided by the Google team. .. For my own work, I made the transition from the in-app purchases of the TrivialDrive sample app (Figure 1, left) to the purchases of my space war app (Figure 2, right). Continue reading

by Bill Lahti at May 28, 2015 11:31 AM

May 18, 2015

Lexathon word jumble pronounces dictionary words


XandarMob has released Lexathon 2.6.2 their Android word jumble. This new version let's those with a Lollipop device listen to the pronunciation of any of the dictionary words.

There have been further upgrades to the dictionary and a number of bug fixes to make the game more stable.

Lexathon 2.6.2 can be downloaded from Google Play.

So dig in and get jumbling.

by William Ferguson (noreply@blogger.com) at May 18, 2015 12:58 PM

May 08, 2015

Update – Java Version of Super Star Trek

I have updated the Java code for my port of the old Super Star Trek game. I first wrote about this about a year ago. See "Java Version of Super Star Trek". ... This update has many bug fixes and enhancements, including support for a deathray, a special kind of beacon planet, an alien home world, and firing phasers and torpedos at up to three targets at once. The new code is available on the SST2k page on Wglxy.com. ... MORE NEWS ... Android App. I have built an Android app based on this Java code. The app is more than just destroying alien ships, which is the main objective of Super Star Trek. The app has a storyline about searching the galaxy for the aliens' home world. If you would like to try that game, more information is available here: Beta Test for Double Star. ... SST2k website. The website where I originally found the C code for Super Star Trek is no longer around. I did locate the original SST2k manual in one of the places that caches old web pages. See SST2k game instructions. ... Review on Space Game Junkie. The old game was recently reviewed on the Space Game Junkie website. That website is a fun place to visit if you like space games. Brian Rubin did a four part series on Super Star Trek. The link to the first of the series is here: Super Star Trek (entry 1). If you like the game, you will undoubtedly enjoy Brian's entertaining attempt to learn the game. If you visit his Google+ game, you will find a post from me about movement, where I try to explain why his encounters with blackholes are not as unpredictable as he thought. Continue reading

by Bill Lahti at May 08, 2015 11:39 AM

May 05, 2015

Thoughts on Designing for Smartwatches

There's been more and more discussion about wearable tech and especially smartwatches lately. Apple's Apple Watch certainly threw some more fuel to the fire when many tech journalists rushed out their reviews of the device. Many of the reviews of the Apple's device made a big deal about notifications and how irritating and disturbing they were. I believe this to be a symptom of bad journalism and lack of understanding and experience with the device.

While I can't make many claims about the Apple Watch I can, however, talk about the effects of smartwatch use in my life. I have been using Android Wear devices daily since the last year's Google I/O. While the things I'm writing in this article are very much anecdotal I've heard others expressing very similar thoughts during the last year.

At the start, I was extremely sceptical about wearing a smartwatch. Firstly, I abandoned wristwatches years ago. Last time I wore one was when serving in the army in -99. Going back to having something on my wrist was not an easy thing to do. But then again, I'm an Android developer and when something new arrives to my domain I feel that I have to give it a try so I can talk about it to our customers. Second, I really didn't see the point of the watch. Why would I use the small screen when I have a perfectly fine screen in my pocket.

So I did. At the morning of June 26th 2014 I wrapped an LG G Watch to my wrist, jumped through few hoops to get it running with the pre-release software, and I haven't looked back since.


The Watch Extends Your Phone

One thing people (and tech bloggers) keep asking about smartwatches is: "what does it do?". The answer currently is: "not much" and that is good.

Let's first accept few facts. The smartwatch screen is tiny. The currently available watches also have fairly poor hardware behind the tiny screen. Both of these factors limit what you actually want to do on the watch.

A good thought experiment to do is to see how long the task you're thinking about doing on the watch takes. If it takes longer than 5 seconds from start to end you probably don't want to use your watch for it. Think about it. You already have a perfectly fine larger screen in your pocket. taking the phone out and turning on the screen and focusing to the task takes only few seconds.

Apps - not so important - yet

The way Google kickstarted the Wear ecosystem was well thought out. Your Wear device directly hooks into the already powerful Android notification system. Actions on notifications are available on the watch without developers having to update their apps. This is why one could argue that Wear had millions of apps available on the launch day.

The Wear devices can, however, run much more complex apps than just glorified notifications. In fact, your Wear device runs nearly full Android OS. Building complex apps for Wear is easy and fast but that doesn't mean you should.

I already referred to the 5-second thought experiment. Would you actually want to reply to a text message on the tiny wrist screen or would you rather pull out your phone and use the comfortable keyboard on it? I know I would just use my phone.

Interaction is a big problem when it comes to building apps for smartwatches. How do you do user input? There are few attempts trying to implement keyboards for Android Wear but all of them fall short in comfort of use. If the user input you expect is any longer than two words users there's no point trying to get the task done on the wearable.

There is voice, of course, but voice has a very limited use for multitude of reasons. Privacy in crowded places, voice recognition issues in loud areas and so on.



There are limited use cases for apps running on the watch fitting these limitations. Apps running on the watch must behave like extension to their mobile counterparts. Fully standalone Wear apps are unlikely to ever become very useful.

All configuration and data input must happen either via a web client or a mobile app. Never ask user input on the wearable beyond a very simple one-tap interaction.

Let’s look at an app I find really good: Bring! Shopping List which also happens to be pretty much the only app I'm currently using on my watch beyond notifications.

Bring! is a shared shopping list app. The app itself is nicely made and I can recommend to everyone (I just wish they would add Google login to the app). In this context it's the Wear extension that we're interested about.

The Bring Wear extension shows you the current shopping list. From feature point of view it is very limited. You cannot, for example, add new items to your shopping list or send notifications to your partner. For someone who is not a Wear user this might seem to be limited but it is, in fact, very well thought out approach. The only actions you can take on the Wear app is to mark items done. That's all. Any more complex tasks the mobile app is better anyways and your phone is in your pocket anyways.

The simple approach of Bring! Wear app design allows them to keep the UI clean and usable. Shopping list is also a use case where it makes sense for users not to have their phone out all the time and making the shopping list available to your wrists is actually very useful. I use this app when shopping all the time!

In short. Bring! on your wrist makes sense while most apps don't because of:

  • It is used in a situation where users hands might not be available for holding a phone.
  • It seamlessly maintains the shopping list based on what you add on your phone.
  • The interactions are designed to be very simple and straightforward.
  • Only a very limited and therefore focused use cases are supported on the wear. Because of this small focus the UI can be highly optimised for completing the task.


Bring! might not be the killer app that sells the smartwatch use to the general public but their app design approach most certainly is spot on. When you're thinking about extending your app to a wearable think first. Is it needed? Why would users use the wearable instead of their phone? What kind of situations it is for? If you can't answer these questions maybe your time is better spent polishing your mobile app.

This is still a new area for apps. The apps that we're celebrating year or two from now are probably something we don't even think about yet. So keep trying! Just remember to keep thinking about the use context. Instagram feed on your wrists doesn't make sense in any context...

Notifications, notifications, notifications

While we're waiting for the killer apps to emerge let's focus on what is currently the killer feature of smartwatches. Notifications. The way smartwatches help you to handle the constant notification stream is great. To me, personally, this is the reason I wear mine every day. But this is also the place where people are going to be split into two groups: smartwatch users and non-smartwatch users.

Let's start with a screenshot:


If you're a type of person who is annoyed by the flood of notifications in the screenshot smartwatch is probably for you. If you, on the other hand, don't really mind a smartwatch might no really help you.

To me, Android notifications represent a todo list. As long as I have notifications up there I need to do something. Often the "do something" is simply reading the notification and swiping it away. Sometimes it is more like reading an email, replying to G+ comment and so on.

The power of Wear, to me, is that I can filter my notifications (my todo) without taking out my phone every time I receive a notification. Firstly, with a quick glance I can determine the priority of a notification.

The latest notification shows key aspects of the events immediately (depending on the app). In case of G+, GMail and Hangouts I always know which app notified me and who did something to cause the notification. Usually that's enough information to device what to do with the notification. Sometimes it's OK to ignore the notifications while sometimes I want to react to it immediately.



But  this is just the first step. Second, and the most powerful one, is the gestures that allow me to put the notification to its right category.

I can:

  • Pull out my phone, act on the notification immediately. For example, in case of a hangout message from someone I'm waiting to meet.
  • Swipe the notification down. This way the notification is going to stay on my phone. These are the things I want to react to soon but not right now. Maybe a hangout message from a friend but when I'm currently in a situation I can't talk right now. Next time I pull my phone out the notification is going to be there to remind me.
  • Swipe the notification away. These are cases where I get all the info I needed from the notification and I don't wish to react to it on my phone at all. This could be a notification from Swarm, for example. The notification already told me everything there's to know about it. Done.
    Other case for this is an email that is something I want to read but there's no hurry. Swiping the notification away will dismiss it from my phone as well but the email itself stays in the inbox unread and will be waiting for me when I'm in front of my computer the next time.
  • I can perform actions to the notifications. Most useful of all of these is the GMail notifications. If I get an email I can either directly archive it from my watch with one swipe & tap or tap the email to read a bit more before making the decision. I do this A LOT. When I get promo emails which I don't really care so much about I tend to glance at them and archive directly if there's no interesting topics. This way the notification is gone and the email with it.



I keep hearing people (and reviewers) saying that they hate notifications and the last thing they want is more notifications on their wrist. I think this is a misconception. A Wear device doesn't add more notifications to your life. It allows you to get rid of the ones you don't want much more easily. THAT is the best thing about Android Wear in its current form.

Notification on the wrist are not annoying. They do not interrupt you (at least on Wear). You can keep ignoring the subtle vibration on your wrist if you want but it's there if you need it and you don't need to pull out your phone. And of course you can prevent apps you never want to see on your wrists from posting notifications to the Wear.


This is, however, something that takes time to get used to. That's also why I feel that almost all of the Apple Watch reviews were posted too soon and the reviewer didn't actually have any idea of the impact of the wearable. For me, it took more than a month to get used to not pulling out my phone every chance I got to check if I had missed something. Also, when waiting for a message from someone I no-longer was holding the phone on my hand to make sure I don't miss it. My Wear device takes care of that.

It takes time to change your habits but once you do wearables starts to make sense.

Importance of the watch face

As I already said apps don't make much sense on smartwatches. Watch faces, however, do! It's still a watch and users do use it to tell time. On Android Wear watch face is the most persistent part of the user experience. Watch face is the part user sees every time they look at their wrist.

Watch faces also allow personalisation of the device. Different people like different style. Watch faces are going to be one of the key selling points of future smart watches, I'm sure.

On Android Wear the watch faces API was recently opened to devs. Even before there already was a flood of custom watch faces in the Play Store. Today we're spoiled for options.



There are two basic approaches to watch faces on Android Wear at the time of writing this: 1) customisable watch face platforms 2) masterfully designed preset watch faces with little or no customisation options.

When building a customisable watch face there are couple of things to think about. Firstly, if your configuration has a lot of options don't expose them on the watch, do it on the phone.

Probably the best example of doing things right is the Puije Black watch face. Their phone configuration app is easy to use and also follows Android design guidelines. Their preview is live rendering of the watch face available for round and square screens.

If your watch face is highly configurable take more time designing your configuration app. All normal app design guidelines apply here. Think about users. Use Android components and patterns.  Your users will give up if they can't figure out how to make the watch face theirs.


Smartwatches are not for everyone

Wearing a watch is a personal choice and so is spending hundreds of euros for yet another tech device you'll be upgrading in a year or two. Smartwatches are definitely not for everyone. I don't think the potential market for Android Wear in its current form is more than 15% of all Android phone users. How many of them will get one is an even more difficult question.

Even with those limited numbers it makes sense to think about Wear when you're building your app. Making sure you handle notifications correctly is an easy way to please Wear users. Building a Wear app is also very easy as Wear is just Android. But take a minute thinking if building one for your app makes sense.

I like my watch so much that if I accidentally leave it home I really miss it and find it annoying to use my phone. But I completely understand people who don't think they need one. Android Wear is great but not for everyone!

by Juhani Lehtimäki (noreply@blogger.com) at May 05, 2015 01:32 PM

May 04, 2015

Samsung Galaxy Tab S2 to be announced in June

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

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

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

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

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

April 29, 2015

Wallpaper Wednesday – Foggy Mountain Pass

This week’s wallpaper is called Foggy Mountain Pass.

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

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

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

April 22, 2015

Infared imaging with Android devices


One of the most evident sensors of Android devices is the camera. An ordinary smartphone's camera is able to capture a lot of interesting information but has its limitations too. Most evidently, its viewing angle depends on the position of the device (so it is not fixed and hard to measure) and its bandwidth is (mostly) restricted to the visible light. It is therefore an exciting idea to connect special cameras to Android devices.




In this post, I will present an integration of FLIR Lepton Long-wavelength Infrared Camera to an Android application over Bluetooth Low Energy connection. Long-wavelength IR (LWIR) cameras are not new. Previously, however, they were priced in the thousands of dollars range (if not higher). Lepton is still pricey (currently about 300 USD) but its price is low enough so that mere mortals can play with it. FLIR sells a smartphone integration product (called FLIR One) but it is currently only available for iPhone and locks the camera to one device. Our prototype allows any device with BLE connection to access this very special camera.

The prototype system presented here needs a relatively long list of external hardware components and it is also not trivial to prepare these components. This list is the following:


  • An Android phone with Bluetooth 4.0 capability. I used Nexus 5 for these experiments.
  • An FLIR Lepton module. My recommendation is the FLIR Dev Kit from Sparkfun that has the camera module mounted on a breakout panel that is much easier to handle than the original FLIR socket.
  • A BeagleBone Black card with an SD Card >4GB.
  • A BLED112 BLE dongle from Silicon Labs (formerly Bluegiga).
The software for the prototype can be downloaded in two packages.

Once you got all these, prepare the ingredients.

1. Hook up the FLIR camera with the BeagleBone Black

Fortunately the BBB's SPI interface is completely compatible with the Lepton's so the "hardware" just needs a couple of wires. Do the following connections (P9 refers to the BBB's P9 extension port).


FLIR BBB
CS P9/28 (SPI1_CS0)
MOSI P9/30 (SPI1_D1)
MISO P9/29 (SPI1_D0)
CLK P9/31 (SPI1_SCLK)
GND P9/1 (GND)
VIN P9/4 (DC, 3.3V)


2. Prepare the BBB environment

I use Snappy Ubuntu. Grab the SD card and download the image as documented here. Before flashing the SD card, we have to update the device tree in the image so that the SPI port is correctly enabled. Unpack bt_ircamera.zip that you have just downloaded and go to the dt subdirectory. There you find a device tree file that I used for this project. Beside the SPI1 port, it also enables some serial ports. These are not necessary for this project but may come handy.

Compile the device tree:

dtc -O dtb -o am335x-boneblack.dtb am335x-boneblack.dts

The output is the binary device tree (am335x-boneblack.dtb) that needs to be put into the kernel image file. Let's suppose that the downloaded image file is ubuntu-15.04-snappy-armhf-bbb.img and you have an empty directory at /mnt/img. Then do the following:

fdisk -l ubuntu-15.04-snappy-armhf-bbb.img

Look for the first partition and note the partition image name and the offset:

ubuntu-15.04-snappy-armhf-bbb.img1   *        8192      139263       65536    c  W95 FAT32 (LBA)
...

Note that the actual partition image name may differ depending on the Snappy image you downloaded. Calculate the offset as 8192*512=4194304
Now mount the partition:

mount -o loop,offset=4194304 ubuntu-15.04-snappy-armhf-bbb.img /mnt/img

Then copy the dtb into the image, unmount and write the image to SD card (on my computer the SD card interface is /dev/sdc, check before you issue the dd command!):

cp am335x-boneblack.dtb /mnt/img/a/dtbs
umount /mnt/img
dd if=ubuntu-15.04-snappy-armhf-bbb.img of=/dev/sdc bs=32M

Now you have an SD card that you can insert into the BBB and boot from it. Once you reached the Ubuntu prompt and logged in (ubuntu/ubuntu), there's one thing more: the Snappy prototype application depends on the libpng package which is not part of the default Snappy image. But before you do it, check whether the SPI device was enabled correctly:
root@localhost:~# ls /dev/spidev1.0                                            
/dev/spidev1.0

Now about the png library. Download the armhf image from this location:

wget http://ports.ubuntu.com/pool/main/libp/libpng/libpng12-0_1.2.50-1ubuntu2_armhf.deb


Copy it to the BBB (update your card's IP address according to your network policies):
scp libpng12-0_1.2.50-1ubuntu2_armhf.deb ubuntu@192.168.1.115:~

Then go to the BBB console and install the deb package:
sudo mount -o remount,rw /
sudo dpkg -i libpng12-0_1.2.50-1ubuntu2_armhf.deb
sudo mount -o remount,ro /

3. Prepare the BLE dongle

The BLED112 stores the GATT tree in its firmware, hence in order to provide the GATT services that connect the BBB with the Android device, a new firmware needs to be generated and installed in the dongle. The config files are located in the config subdirectory in the bt_ircamera.zip archive. Follow the steps in this post to generate and install the new firmware. Once you are done, you can simply plug the dongle into the USB port of the BBB.

4. Install the prototype applications

The prototype system has two parts. The application running on the BBB acts as BLE server, fetches images from the FLIR camera and transmits them over BLE. The Android application acts as BLE client, fetches images from the BLE server and displays them. The BBB part is located in bt_ircamera.zip and the Android part is in IRCamera.zip. The latter is just the source part of the Android Studio project tree - I omitted all the garbage that Android Studio generates into the project folders. For the BBB installation, follow the instructions in this blog post. Launch the BBB application like this as root:
/apps/ircamera.sideload/1.0.0/bin/ircamera /dev/ttyACM0
and you are ready to go. On the Android side, select the BLE node with the name "test", connect, click the "Take picture" button, wait for the image to download and there you are. Note that the images are saved on the SD card, which means that they also appear in the stock "Photos" application.

Now at last we can get to the technical issues with this prototype. One interesting aspect is that there is no standard BLE service that provides the functionalities - image capture triggering, image fetching - our system needs. That's not a problem, we defined our own BLE service. It is easiest to follow this service in irc_gattBLED112.xml (bt_ircamera.zip, config subdirectory).

The service has a custom UUID, generated randomly:

<service uuid="274b15a3-b9cd-4e5e-94c4-1248b42b82f8" advertise="true">

Also, its 3 GATT characteristics are in the non-standard UUID domain:

<characteristic uuid="00000000-b9cd-4e5e-94c4-1248b42b82f8" id="irc_len">
...
<characteristic uuid="00000001-b9cd-4e5e-94c4-1248b42b82f8" id="irc_offs">
...
<characteristic uuid="00000002-b9cd-4e5e-94c4-1248b42b82f8" id="irc_pic">

The interaction goes like the following. The BLE client connects and reads the irc_len characteristic. This characteristic is tagged as "user" on the BLE server side meaning that the BLE application must generate the value on the fly, when the attribute is read. In our case, reading this attribute fetches an image from the FLIR camera, converts it into PNG format and stores it in the apps' data folder, returning only the PNG file size. The Android application now can fetch the image piece by piece. First the Android application writes the irc_offs characteristic to inform the BLE server, what is the starting location of the fragment it wants to fetch. Then it reads the irc_pic characteristic which returns a maximum of 20 bytes of image data. This makes the image download very slow (takes about 10-20 second to download a general 5-6 Kbyte image to the Android application) but the restriction comes from a BLE protocol layer. Maybe the old RFCOMM from Bluetooth Classic would have been actually a better option for this application.

Update: I updated the client/server application to make the download faster (it is still quite slow). In order to speed up, I removed the explicit setting of the file offset (so the irc_offs characteristic is not used anymore). This made the download faster but there's still room for improvement.

Other than the issue with fragment size, both applications are pretty straighforward. Maybe the colors of the IR image are worth discussing a bit. The FLIR camera returns a matrix of 80x60 pixels, each pixel has a depth of 12 bit. Grayscale presentation is the most evident option but most displays have only 256 gray colors. In order to make the IR shades more visible, I used fake coloring. The algorithm is very simple: after the image is fetched, the maximum and the minimum IR intensity is calculated and the range between the two are mapped into a rainbow gradient of 400 colors.

by Gabor Paller (noreply@blogger.com) at April 22, 2015 03:01 PM

March 30, 2015

Building and Distributing Android SDK Add-Ons

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

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

March 25, 2015

Android Performance Case Study Follow-up

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

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

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

Falcon Pro 3

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

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

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

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

adb shell setprop debug.hwui.disable_draw_reorder true

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

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

Tracer for OpenGL

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

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

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

Falcon Pro 3

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

There are several solutions to fix this problem:

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

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

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

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

AOSP Sources in the IDE

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

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

February 24, 2015

AcDisplay and HeadsUp: Better Notification Handling

AcDisplay & HeadsUp

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

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

AcDisplay

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

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

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

HeadsUp

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

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

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

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

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

What’s New?

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

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

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

… and for HeadsUp:

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

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

 

 

 

Get Them Now!

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

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

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

by GermainZ at February 24, 2015 05:50 PM

February 06, 2015

BLED112 on BeagleBone

In the previous post I demonstrated, how a Bluetooth Low Energy dongle can be used to connect a PC and an Android device. While this is sort of project is appealing, connecting PCs and smartphones is not such an interesting use case. It is much more interesting, however, to transfer the PC-side program directly to an embedded device and that's what I will demonstrate in this post.

The Android application used in this post did not change, you can download it here. The BLE server application was updated according to the embedded platform's requirement, you can download the new version here.

There are two baskets of embedded platforms out there. One of them is optimized for low power consumption. They are too limited to run a full-scale operating system therefore their system is often proprietary. Arduino (of which we have seen the RFDuino variant) is one of them but there are many more, e.g. Bluegiga modules also have a proprietary application model. We can typically expect power consumption in the 1-10 mA range with some platforms offering even lower standby consumption.

The other basket contains scaled-down computers and they are able to run stripped down versions of a real operating system. Their power consumption is in the 100-500 mA range and they often sport 100s of megabytes of RAM and gigabytes of flash memory. They are of course not comparable to low power platforms when it comes to power consumption but their much higher performance (which can be relevant for computation-intensive tasks) and compatibility with mainstream operating systems make them very attractive for certain tasks. The card I chose is BeagleBoard Black and my main motivation was that Ubuntu chose this card as a reference platform for its Ubuntu Core variant.

The point I try to make in this post is how easy it is to port an application developed for desktop PC to these embedded computers. Therefore let's just port the BLE server part of the CTS example demo to BeagleBone Black.

There are a handful of operating systems available for this card. I chose Snappy Ubuntu - well, because my own desktop is Ubuntu. Grab an SD card and prepare a Snappy Ubuntu boot media according to this description. It worked for me out of the box. You can also start with this video - it is really that easy. Once you hooked up the card with your PC, let's prepare the development environment.

First fetch the ARM cross-compiler with this command (assuming you are on Ubuntu or Debian):

sudo apt-get install gcc-arm-linux-gnueabihf

Then install snappy developer tools according to this guide.

Then unpack the BLE server application into a directory and set up these environment variables.

export CROSS_COMPILE=arm-linux-gnueabihf-; export ARCH=arm

Enter the beagle_conn_example directory that you unpacked from the ZIP package and execute:

make

This should re-generate cts_1.0.0_all.snap which is already present in the ZIP archive in case you run into problems with building the app. The snap is the new package format for snappy. Then you can install this package on the card.

snappy-remote --url=ssh://192.168.1.123 install ./cts_1.0.0_all.snap

You have to update the IP address according to what your card obtained on your network. The upload tool will prompt you for username/password, it is ubuntu/ubuntu by default.

Update the GATT tree in the BLED112 firmware as described in the previous post. Plug the BLED112 dongle into the BeagleBoard's USB port. Then open a command prompt on the BeagleBoard either using the serial debug interface or by connecting to the instance with ssh and execute the following command:

sudo /apps/cts.sideload/1.0.0/bin/cts /dev/ttyACM0

The familiar console messages appear and you can connect with the Android app as depicted in the image below.


One thing you can notice here is that Snappy's shiny new package system is not ready yet. In order for this package to access the /dev/ttyACM0 device (to which the BLED112 is mapped without problem), it has to run as root. This is something that the Snappy team is yet to figure out. The experience, however, is smooth enough that application development can be started now.



by Gabor Paller (noreply@blogger.com) at February 06, 2015 06:46 PM

February 05, 2015

Guide: In-Depth Look at the Best Android Keyboards

zkujsfetpatncnxcn31l

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

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

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

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

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

Fleksy

Input

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

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

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

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

Multiple languages

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

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

Correcting input and predictions

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

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

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

Themes and customizability

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

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

Other features

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

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

Privacy

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

Download

 

Google Keyboard

Input

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

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

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

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

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

Multiple languages

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

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

Correcting input and predictions

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

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

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

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

Themes and customizability

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

Privacy

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

Download

 

Hacker’s Keyboard

Input

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

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

Text shortcuts and emoji input are not supported.

Multiple languages

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

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

Correcting input and predictions

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

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

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

Themes and customizability

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

Other features

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

Privacy

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

Download

 

Hodor Keyboard

Input

Hodor. Hodor Hodor Hodor HODOR HODOR.

Multiple languages

Hodor.

Correcting input and predictions

Hodor?

Privacy

Hodor!

Download

 

Minuum

Input

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

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

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

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

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

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

Multiple languages

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

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

Correcting input and predictions

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

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

As for predictions, they seem to be very simplistic.

Themes and customizability

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

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

Other features

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

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

Privacy

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

Download

 

Multiling O Keyboard

Input

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

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

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

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

Multiple languages

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

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

Correcting input and predictions

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

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

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

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

Themes and customizability

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

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

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

Other features

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

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

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

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

Privacy

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

Download

 

MyScript Stylus

Input

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

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

Text shortcuts and emoji are not supported.

Multiple languages

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

Correcting input and predictions

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

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

Themes and customizability

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

Privacy

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

Download

 

NextApp Keyboard

Input

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

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

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

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

Multiple languages

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

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

Correcting input and predictions

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

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

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

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

Themes and customizability

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

Other features

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

Privacy

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

Download

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

 

SwiftKey

Input

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

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

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

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

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

Multiple languages

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

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

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

Correcting input and predictions

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

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

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

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

Themes and customizability

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

Other features

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

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

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

Privacy

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

Download

 

Swype

Input

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

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

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

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

Multiple languages

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

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

Correcting input and predictions

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

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

Next word predictions are optional but fairly simple.

Themes and customizability

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

Other features

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

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

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

Privacy

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

Download

 

Thumb Keyboard

Input

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

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

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

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

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

Multiple languages

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

Available alternative keyboard layouts are QWERTY, QWERTZ and AZERTY.

Correcting input and predictions

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

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

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

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

Themes and customizability

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

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

Other features

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

Privacy

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

Download

 

TouchPal

Input

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

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

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

Multiple languages

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

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

Correcting input and predictions

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

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

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

Themes and customizability

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

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

Other features

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

You can pin several buttons to the top bar, which also acts as a suggestions bar once you start typing. These include buttons to quickly access: layouts, the edit screen (offers cursor and clipboard control), themes and more.

Add-ons (currently limited to a custom emoji skin) and sub dictionaries can be downloaded from the TouchPal store. Sub dictionaries add or prioritize jargon (e.g. words related to computers or to the World Cup) or place names (such as Chicago locations).

Word trends are enabled by default, and make your keyboard aware of trending words automatically.

TouchPal Premium ($2.99/year) gives you access to backup and sync features, as well as cloud predictions — smarter predictions from the Internet. A 7-days trial is available.

Privacy

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

Download

 

Summary Table

Note that this table oversimplifies some aspects and completely omits others. It is not meant as a means to compare the different keyboards, but to provide you with a quick idea to see if a keyboard might be suitable for you (for example, if you only want a keyboard that supports emoji, you’ll be able to see which keyboards to check quickly).

For additional details, refer to the in-depth review.

Gesture input Numbers row Text shortcuts Emoji Multiple language input Predictions Themes
Fleksy
Google Keyboard
Hacker’s Keyboard
Hodor Keyboard
Minuum
Multiling O Keyboard
MyScript Stylus Handwriting
NextApp Keyboard
SwiftKey
Swype Swiping & Handwriting
Thumb Keyboard
TouchPal

The post Guide: In-Depth Look at the Best Android Keyboards appeared first on xda-developers.

by GermainZ at February 05, 2015 04:55 PM

January 31, 2015

Send Links to Any Nearby Device with CaastMe

CaastMe

There already are many solutions on the Google Play store if you want to send a link to one of your devices — but what if you wanted to do it quickly without having to install any software or logging in to a website on the recipient end? Most apps require you to do either or both, which can be a hassle (or even a security risk) in some cases.

Luckily, XDA Forum Member wyemun has developed CaastMe. Inspired by how WeChat and WhatsApp use QR codes, the developer took it up as a challenge to code the website and Android app in less than a day. Don’t be fooled by the short time it took, though, as CaastMe is actually very polished and simple to use.

You probably want to know how it works at this point. After you’ve installed CaastMe, only two steps are actually required:

  • First, go to http://caast.me/ (this works on desktop browsers as well as some mobile browsers, although you may need to enable the “View desktop site” option if you have any display problems). A QR code will appear on your screen.
  • From your mobile, share the link you want to CaastMe. This will instantly open your camera, allowing you to scan the QR code. As soon as you do that, you’ll be redirected to the link you just shared.

You can also view the screencast below if you’d like to see it in action. If that’s not enough, you’ll be pleased to know that sharing other data (such as images) is planned for the future.

If you’re looking for a hassle free way to share links that doesn’t involve installing software everywhere or dealing with logins, head over to the CaastMe forum thread now to grab it and give it a try.

The post Send Links to Any Nearby Device with CaastMe appeared first on xda-developers.

by GermainZ at January 31, 2015 02:29 AM

January 28, 2015

Android Development: Lotsa Links

This is meant to be a living archive of Android presentations, articles, videos, whatever that I've presented, co-presented, written, been a witness to, or simply enjoyed and learned from. People ask for this stuff occasionally ("Where can I learn more about performance tuning on Android?" or "Where can I see more videos of Romain? He's so dreamy, with that almost-real French accent!"), so I thought it would be worth recording the links somewhere where I can add new ones over time as stuff comes online (and delete old ones as they become obsolete).

I'll attempt to categorize things, but there is overlap on these topics. So the studious developer will, of course, watch and read everything. Twice.

The links are presented in rough reverse-chronological order in each section. Some talks date way back to 2010, but they're still relevant today (the advantage of APIs that don't go away...).

General Android Development

Android Developers Backstage (Tor Norbye, Chet Haase, and guests)
Tor and I interview other Android developers to talk about whatever it is that they do to help developers better understand how that stuff works.

Performance

Android Performance Workshop, Part 1 (Devoxx 2013) (Romain Guy & Chet Haase)
This presentation is all about memory on Android: how the system works, things to think about to avoid garbage collection, and tools to use to help detect and debug problems.

Android Performance Workshop, Part 2 (Devoxx 2013) (Romain Guy & Chet Haase)
This talk covers some platform improvements, performance tips, and case studies of chasing and fixing performance issues.

Android Graphics Performance (Google I/O 2013) (Romain Guy & Chet Haase)
More performance tips with demos of using the tools to find and fix problems.

Android Performance Case Study (Romain Guy)
This article from Romain shows how he used many of Android's performance tools to debug performance issues like overdraw on a real world app.

For Butter or Worse (Google I/O 2012) (Romain Guy & Chet Haase)
Romain and I discussed the graphics architecture of Android, along with various tips for achieving better performance.

Important Android Stuff, Part 2 (Devoxx 2012) (Romain Guy & Chet Haase)
More performance tips, more tools usage, more finding and fixing performance problems. More, more, more.

Android Tools (Devoxx 2011) (Romain Guy & Chet Haase)
A talk about some of the tools and techniques used for finding and fixing performance problems.

Android Performance Patterns (Colt McAnlis)
This series of videos from Colt helps you understand how things work and what you need to know to write better performing Android apps.

Graphics & Animation

Material Design (Devoxx 2014 keynote) (Nick Butcher & Chet Haase)
This talk is a combination of the design underpinnings of Material Design and some the platform API details for writing Material Design applications on both Android and Polymer.

Material Witness (Devoxx 2014) (Romain Guy & Chet Haase)
A talk about some of the Material Design APIs and techniques in the Android 5.0 Lollipop release, showing how they are used in a couple of sample applications.
This talk overlaps with a talk by the same name at Google I/O 2014, but this version is updated to the final APIs (the Google I/O talk was based on the APIs in the L Developer Preview release).

Material Science (Google I/O 2014) (Adam Powell & Chet Haase)
This is a talk on writing Material Design applications. Some of the API details have changed since this presentation, since it was based on the L Developer Preview release, but the underlying ideas of developing for Material Design is the same.

Important Android Stuff, Part 1 (Devoxx 2012) (Romain Guy & Chet Haase)
An overview of the Animation APIs, both pre-3.0 (the android.view.animation classes) and post-3.0 (the android.animation classes, Object Animator, etc.).

Curved Motion in Android (Chet Haase)
New APIs in Android 5.0 Lollipop make this much easier (and built into the platform), but this article explains how to use ObjectAnimator and TypeEvaluator to make your animations curve on earlier releases.

Android Graphics and Animation (Devoxx 2010) (Romain Guy & Chet Haase)
Romain and I talk about the general process of rendering Views on Android, graphics APIs for achieving various graphical effects, and the pre-3.0 Animation APIs.

Dive Into Android, Part 1 (Devoxx 2010) (Romain Guy)
Romain talks about the broader concepts of layout on Android, and the various built-in layout classes to use. He then steps through an example of creating a simple custom layout, to explain the process of measurement and layout that such a subclass must handle.

Dive Into Android, Part 2 (Devoxx 2010) (Romain Guy & Chet Haase)
Tips and techniques for creating graphical effects in Android applications.

Writing Custom Views for Android (Google I/O 2013) (Romain Guy & Adam Powell)
Romain and Adam Powell talk about custom views.

Stick GUIs (Romain Guy & Chet Haase)
Romain and I talk about various rich graphical effects for Android applications.

Android's Font Renderer (Romain Guy)
Romain's article about how Android renders text using the GPU.

DevBytes (Chet Haase & many others)
It's definitely worth checking out the DevBytes playlist. The content there is diverse, but it's clear to tell from the title whether it's something that you're interested in, and they all provide a quick deep dive into their topic of choice. There are a bunch of videos specific to animation and graphical effects, but there are many more videos on a wide range of Android topics.


by Chet Haase (noreply@blogger.com) at January 28, 2015 02:46 PM

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 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

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

New Tech mine hard difficulty

Another update went live in the market last night. This one fixes various issues introduced in the last update, but the biggest change is to add a hard difficulty to the tech mine.

Hard levels are variations on the normal set, but… harder. In some cases this just means that there are fewer ores, but in others there are subtle differences, large layout changes or even objective changes in place. If it is popular I’ll try and do the same for the rainforest pack.

You can also now play tech mine in freeplay mode (although there is a bug that means you need to go into the mission pack level select screen first, otherwise you’ll get a crash when starting the level – this will be fixed in the net update).

Other changes:

– Fixed visibility beaneath miner when near an edge (the tile beneath you now reveals where approaching an edge)
– Fixed pro/extreme difficulty mix up
– Made objective stars harder to click accidentally
– Improved some menu layouts
– Fixed some bugs in the map screen
– Fixed signs not appearing
– Fixed harold short changing you when he buys multiple items
– Fixed various bugs with photography in tech mine
– Performance improvements


by Psym at October 07, 2014 11:06 PM

September 28, 2014

Reimagining Play: Interview with PlayMG’s Taylor Cavanah

Last month, we brought you a review of the MG, an Android powered handheld gaming system designed for casual games. The combination of vanilla Android and the MG’s custom parental controls made the device a compelling option for gamers young and old alike, and its comparatively low price combined with the vast Android software library offered an unbeatable value.

The team behind the MG had obviously done their homework and targeted the product to a very specific market which was otherwise being ignored. Rather than throwing out a half-realized device that didn’t resonate with any particular use case, the team engineered the hardware and software experience to their target audience to great effect.

Taylor Cavanah

Taylor Cavanah

To learn more about the focus and vision which made the device a reality, we got in touch with MG’s physicist turned meta-gamer Taylor Cavanah.

Creating the MG

The Powerbase: Taylor, thanks for taking the time to talk with us. Can you start by telling our readers a bit about yourself and your background?

Taylor: I’m a physicist and started my career in Nanotechnology at Zyvex.  After finding some success in developing the nanoprobing market for the semiconductor industry I decided to strike out on my own.  My buddies and I started our own software company – Locai – and a year ago we combined forces with the hardware and business guys from ACTScom to launch PlayMG.

The Powerbase: What exactly is your role at PlayMG? What are your day to day responsibilities like?

Taylor: My specific role involves game/app design, platformsoftware design, business development, innovation, and as is the case with all start ups – many more roles.  Day to day I was either talking with game houses, working with the hardware guys to design the user experience, writing the story behind our game within the gaming device app Origins, looking for interesting apps to work with, working with marketing to craft the messaging behind these features we were building, and testing devices in every possible way.

The Powerbase: PlayMG has no qualms about the fact it has targeted the MG to younger gamers. Why do you think the younger gamer is so important? What makes the MG a better option than, say, mom’s old smartphone?

Taylor: Every one has a slightly different opinion on this but for me the younger gamers make the most sense because they can’t have phones.  Whether their parents don’t want them or can’t afford the data plans, there are a lor of younger gamers who love apps but can’t get access to them.  The “hand me down” argument is definitely valid.  I can hand down my phone and just remove the plan and then they have a smart device.  That’s where our added benefits factor in to the equation.  You can’t get Family Collaboration, SpendSmart, or the Origins game in a hand me down.  And sometimes more importantly, you can’t get that “awe” moment when your son or daughter opens up your repackaged device from 2 years ago.

Android and the MG

The Powerbase: Its differences aside, the majority of the MG’s software is straight Android. Would it be safe to say that, if it wasn’t for the open nature of Android, the MG wouldn’t exist in its current form? Would have putting this same hardware out with a proprietary operating system have gotten you as far as Android has?

Taylor: There is no way we would exist without Android.  The barrier of entry previously was just too high.  We got a solid and awe inspiring product to market in 9 months.  Core to that was not having to build an entire OS.  Not just in terms of getting something to market but that greatly helped us focus our time and money where it mattered – on the added benefits like Family Collaboration and Origins.  This is what I love about open source – you get to make products with extremely well designed experiences where it matters.

The Powerbase: One of the biggest selling points early on was that the MG would be a vanilla Android device, meaning it would be as close to AOSP as possible. In the end the MG delivered on that promise, and is one of the few non-Nexus devices available running stock Android. Why was running stock Android so important for the MG?

Taylor: Part of that answer has to do with my previous answer – it’s just easier to not build stuff you don’t need.  I think everyone can point to some larger companies that have large engineering staffs that have to build stuff because those salaries are being spent no matter what.  Then you get a lot of customization away from stock.  But most of that is useless and provides no value to the customer experience.  A lot of engineers also like the job security that building all of this custom stuff gives them.  They will always be needed because only they know how this version of flavored Android operates.  For us it was exactly that overhead that we didn’t want.  If we build our own flavor of Android then every new app or platform we create down the road has to take that into account.  We had to keep our focus on what mattered for the end user.

The Powerbase: From a development perspective, stock Android is generally preferable to manufacturer modified builds, but what about the end user? It’s no secret that the most popular Android devices (such as Samsung’s Galaxy line) make use of manufacturer modifications to their interface and applications, so the public doesn’t seem to mind. Do you ever worry that shipping with stock Android rather than a build with more visual flair and streamlined functionality pleases the developers at the expense of the end users?

Taylor: I have never believed that popularity of a device has anything to do with how well it is designed or received by customers.  The large software guys have proven time and again that being big in a space and having a ton of money can make up for a lot of deficiencies.  I say this because I don’t believe customers buy the Galaxy line because of the manufacturer improvements – most customers have never seen stock Android so they don’t know any better.  My guess is the commercial bashing the iPhone (hilariously with the parents in line) did a lot more than the user experience.  From what I’ve seen all of the added modifications make little difference to the real end users (not us tech types who are too deep in the space).  We found you could do an amazing amount of things just using the widget system in Android to change the user experience – without huge teams to build and then manage modifications.

The Powerbase:  Some would say that shipping the device with vanilla Android only makes sense if it’s kept up to date with AOSP (such as the Nexus line), but the MG is still on 4.0.4. Why hold the MG back? Are there plans on updating to Jelly Bean (and beyond)?

Taylor: We will update to Jelly Bean.  But with such a low saturation of Jelly Bean and many apps still not upgraded for the experience it doesn’t make sense to expend the effort.  Again we’ve got to focus on that end user experience and the only people ever asking for Jelly Bean are analysts or the random parent who just saw some article that mentioned the new Jelly Bean thingy for Android.

Expanding Android Gaming

The Powerbase: One of the best features of the MG, at least for parents, is unquestionably the Family Collaboration System. While it currently sets the MG apart from the competition, would PlayMG consider bringing it to generic Android devices? Perhaps charging a monthly subscription fee when used on non-MG hardware?

Taylor: We are always weighing the pros and cons of releasing some of the proprietary apps to the Play Store.  Right now we only have to manage one device, we get to ignore fragmentation, and we have a competitive advantage.  I don’t see us releasing the apps until we are much more established.

The Powerbase: An advantage of putting out an Android based gaming system is, of course, that you aren’t responsible for developing or publishing games for it (unlike traditional game consoles). That said, are there plans to talk to developers about MG optimized games? Is that already happening?

Taylor: Nothing that I can talk about but we definitely have plans and some preliminary talks about using our PlayMG IP to create games.  Any game developers interested (especially if they want to do something outside of the normal bounds of gaming) should get in touch with us.

The Powerbase: You can’t talk about Android gaming anymore without mentioning the OUYA; while it’s aiming for a completely different market than the MG, are there any parallels you draw between them? Do you see families owning both devices in the future?

Taylor: Mine arrives in 3 weeks (if I had more time and money I would have gotten a developer version).  I would love to work with OUYA in the future and I do believe that console gaming and portable gaming will always be with us.  Where the hardware, software, and interfaces end up who knows but for now there are many opportunities that could be explored between the two companies.  For the next year though I’m guessing both of us will be too busy to pursue them.

Looking Ahead

The Powerbase: A common criticism of the MG is that it lacks physical controls. This was a design decision based on the intended userbase for the MG, but it’s also undeniable that there are hardcore gamers out there that would appreciate an MG-like device with physical input. Is this a challenge PlayMG might take up in the future? Perhaps a device like the Sony Xperia Play, but in a non-contract form like the MG?

Taylor: I don’t see that happening.  Our target user is not hardcore and in fact probably did not grow up with a game system that had controllers.  But at an even deeper philosophical level (get ready for the fan boy to come out) I think the portable gaming systems with controls aren’t just missing the mark but don’t really have a mark to hit.  Portable gaming is about the casual experience on the go or that little block of entertainment that you carry around in your pocket.  I have so many different serious game devices where I can have mind blowingly immersive experiences – but that’s not what you want in a portable gaming device.  At the end of the day we talked to a bunch of “gamers” in our demographic and they wanted a device they could put in their pocket versus a device that let them play games designed for pre-touch devices.

The Powerbase: If it’s not giving too much away, what can you say about the future of PlayMG and the MG itself? Anything current or future owners should be looking out for?

Taylor: We have some great plans for the Family Collaboration System – making it much more collaborative.  A lot of parents and even kids have asked for expanded features here.  I’m most excited about expanding the portable fun in the device.  The entire industry as a whole is barely scratching the surface of what you can do with portable gaming.  We have some very interesting things planned for making shared portable gaming experiences like no one has seen before.  Unfortunately I can’t say much more than that.

Thanks to Taylor and the entire PlayMG team for their assistance and professionalism while we worked on the original hardware review and this interview. We’re very interested in seeing where the future takes PlayMG, keep an eye out here on The Powerbase for future coverage of this unique company and its products.

by Tom Nardi at September 28, 2014 06:47 PM

Win a Free Android Game Console Courtesy of PlayMG!

Free Console???  Yep!

PlayMG, a company dedicated to Android game consoles and safety online, wants to give one lucky Powerbase reader a PlayMG Android game console.  What is a PlayMG?  Well, we spent some time with the device several months ago.  You can read our impressions here.

So, how do you win?  Easy! 

1.) Find us on Google+ or Facebook.  Share the post!

2.) Like us on Facebook or give us a +1 on Google Plus.

3.) Come back here and leave a comment stating why you should win a PlayMG game console!

That’s it!

The winner will be chosen on Nov. 26th, so make sure to keep checking back! 

 

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

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 eur0b0t at July 17, 2014 10:41 AM

June 27, 2014

Google I/O 2014 Slides and Demo

Chet and I gave a talk entitled “Material Witness” at Google I/O today. I am happy to announce that the entire talk is now available on YouTube. I have also published the following resources:

Google I/O 2014 demo

by Romain Guy at June 27, 2014 06:39 AM

June 17, 2014

Moto Maker for Moto X hitting Germany on July 1st

After way too much time as a US-only exclusive and with the phone it pimps to the extreme already starting to show its age, Motorola’s finally ready to launch the Moto Maker customisation service for the Moto X in Europe.

According to Motorola Germany, the case modding service will launch exclusively for those who buy a phone through Phone House in the country. Phone House is the German wing of Carphone Warehouse, so here’s hoping CPW picks up the deal and launches the custom phone option here in the UK too.

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

June 02, 2014

March 30, 2014

Maverick 2.6

Maverick 2.6 is just released with map tiles downloader. You can “paint” areas to download with one finger or select a rectangle block using multi-touch. Select on the left all zoom levels you want to download. Tap and hold to select at once all zoom levels up to the selected level.

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 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 ... Read more

by James Elsey at February 08, 2014 09:56 AM

January 21, 2014

Dragging Images When Scaling Must Be Restricted

I recently retired, but I have one more little tip to blog about. While I have a few ideas for some apps, I doubt that I’ll have to do the kind of intensive problem solving required during my job. Therefore this might be the last post.

I was involved with a suite of clients for business intelligence. The primary clients were created with Adobe Flex and ran in the browser. They provided for creating and viewing reports. The iOS and Android clients provided for viewing reports. Thus features were implemented in the Flex product first, and we who supported the mobile clients had to cope with adding them. The feature relevant to this blog entry was the ability to specify numerous scaling options for images (e.g. photos) that could be incorporated into reports. Some of these scaling options had no natural analog to the Android scaling options for images.

To support the requirement for panning and zooming images I took full advantage of the PhotoView library provided by Chris Banes. This library was a great solution for all but two of the required scaling options. Our product allowed for two rather silly options of fitting an image to the width or to the height of the viewport that the report designer drew on screen. If the other dimension of the image was greater, then part of the image would be invisible. I had to provide support for letting the user drag the image around in the viewport so that all of it could be seen.

The PhotoView library would have handled this except for the fact that we needed to set the scale type on the ImageView class to MATRIX, and PhotoView does not allow that. With no natural analogous scaling type to our “fit width” and “fit height”, I had to create a new subclass of ImageView to handle just the images requiring those types. The ReportImageView class has some code for doing the scaling needed to fit height or fit width, but I am leaving that out here so as to concentrate on the drag support.

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 ... Read more

by James Elsey at December 07, 2013 11:01 AM

November 15, 2013

Moving An Android View By Dragging It

Yes, here is another article about moving or dragging a view with a finger, but I think I can give a complete example in one place. Most of what I read while developing a movable component did not give a fully working result. I started with the article on making sense of multitouch at the Android developers’ blog. Then I had to go search at Stackoverflow. I give some of those references in the code comments.

I had a requirement to provide a magnifier view, or jeweler’s loupe, which would provide a magnified view of a graph as the user dragged the view over the graph. The magnifier would become visible on a long press and stay visible while the user dragged it over the graph. The frame of the magnifier would display the magnified contents as provided by a helper method (not described here). Here’s a rough example from my testing app.

magnifier example

magnifier example

It shows a small bitmap (unmagnified in this test) and some bogus tooltip values to the right of the image. When this magnifier is dragged over the image (i.e. a real graph), the magnified area will update as will the tooltip information.

Let’s look at the code. Here’s the touch listener for the magnifier. It requires that the magnifier (a RelativeLayout) be passed in on the constructor.

private class TouchListener implements View.OnTouchListener{
   public TouchListener(RelativeLayout frame) {
     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

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

July 08, 2013

Disney’s The Lone Ranger Game Limps onto Google Play

lone ranger gameAnother week passes, and another movie tie-in game gets released. This week it’s The Lone Ranger game, and it’s from Disney, so it’s certainly something that grabbed our attention. The Long Ranger game takes place in a world full of outlaws, and you’ll help the Lone Ranger out by taking out bad guys and completing simple quests. The game bills itself as a “3D Role Playing Adventure” and while they got the 3D part right, I would hesitate to call the game adventurous. The Lone Ranger game is energy/time based, and you’ll spend most of your time tapping to search for objects or shoot bad guys. There are duels, but they aren’t much fun and get repetitive quick. It’s also a ‘freemium’ game so be prepared to drop some dough if you run out of juice and want to keep playing.The reviews for the new Lone Ranger movie have been less than kind, and the same can be said for the reviews of The Lone Ranger game. It’s looks good, but there’s not a lot of fun to be had unfortunately. Disney has put out some outstanding Android games, so I’m going to give them a pass on this one, and suggest you do the same as well as the Lone Ranger game is definitely a dud. If you’re in the mood to play a game on autopilot you can pick up Disney’s The Lone Ranger game for free on Google Play. The Lone Ranger

by Adam Field at July 08, 2013 10:35 PM

June 30, 2013

Chocolate Liberation Front releases Figaro Pho Fear Factory for Android

figaro.pho.fear.factory-androidSome people are scared of things like spiders while others have a horrible fear of clowns or thick moustaches. Figaro Pho is just that type of person, and he’s even got a popular ABC show to prove it. He also has his own Android game with the recently released Figaro Pho Fear Factory.

by Adam Field at June 30, 2013 10:13 PM

June 26, 2013

T-Mobile To Announce “Simple Choice with no credit check” plans

It seems that T-Mobile always does this. They introduce something fairly interesting, and then follow it up with something also kind of interesting, but also a little confusing. It got bad a few years ago, when they had multiple tiers of plans and it was difficult to tell the differences between them in many cases. Their latest foray piggybacks their Uncarrier campaign. “Simple Choice with no credit check” will provide the credit-challenged with access to those same Uncarrier plans.

There are many catches, of course, and the confusion of the plan might turn off consumers before they get a chance to see how it can work for them. For starters, this is advertised as, and mostly effective as, a family plan. Individual users with bad credit are better off examining T-Mobile’s traditional prepaid plans, which are pretty close to the Simple Choice plans, but with no deposit.

Yes, a deposit is required for the no credit check plans. That starts at $60 for the first line, followed by a $40 deposit for the second line, and $20 each for the next two lines. A fifth line is also a $20 deposit, but that has to be a non-phone internet device (tablet, for example). The deposit is refundable, so presumably it covers you for potential non-payment.

The biggest loss here is the lack of automatic payments. Why T-Mobile would take that away I don’t understand. Companies absolutely love autobill features, and it’s pretty standard in prepaid. (Virgin Mobile offers a $5 per month discount if you sign up for automatic payments.) Maybe it will be available in the future, but for now it’s off the table.

Combine all that with the necessity of paying for a device in full, up front, and you have a not so attractive plan. There will be many customers, for sure, who will want an option like this. But given the ease of T-Mobile’s Simple Choice plans, it seems as though this appeals only to those who absolutely cannot pass a credit check. In which case, they’re stuck with what T-Mobile offers.

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

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

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