Camera2 API

Android's Camera2 API is one of the improvements in Lollipop that hopes to improve the camera experience on Android. While many users simply use a highly automatic single button mode for taking photos, the advancement of smartphone sensors and optics has created interest in greater control over options like ISO, white balance, and overall exposure. Unfortunately, Android's camera API has been quite lacking in many regards, with something as simple as tap to focus not being included until Ice Cream Sandwich. To include more features and improve the camera experience, OEMs and chip makers produced their own undocumented camera APIs. This worked for users who use the stock camera application, but it gave developers no way to create their own camera applications with manual controls. Josh did an article on Camera2 earlier this year after its announcement at Google IO, and rather than restating all of it I'll simply put it here so those interested can take a look at it.

Unfortunately, Google's camera application doesn't use many of the features in Camera2. Google is obviously going with a more automatic approach which will cater to general users, and leaving it up to developers to create applications with manual camera controls. All users really need to know is that Camera2 will give developers the ability to include full manual camera controls, RAW/DNG output, and even custom white balance and exposure algorithms. Unfortunately, I haven't been able to find many third party applications that takes advantage of everything Camera2 has to offer, so this will be something to look forward to in the future. There is an application that is currently in development called L Camera, which you can see pictured above. Anyone who wants to try out the new manual controls in Android Lollipop can check it out here on its Github. I can say that Google's camera application does still benefit from the new API For example, there's a considerable improvement in the capture time for HDR+ photos compared to KitKat.

ART

The move to Android Runtime, or ART, as the only Java runtime on Android Lollipop was one of the big announcements at Google IO. Google had actually included ART as an option that users and developers could enable on Android KitKat, but Google's older Dalvik runtime was still the default option. For users who don't know, Android applications are primarily programmed in Java. An application's Java bytecode is translated into native instructions for the hardware in a device. As of Android 2.2, Dalvik used a Just-in-time (JIT) compiler to compile code when it was run. This was primarily due to the limited RAM and NAND that was included in Android devices in the past. ART uses an Ahead-of-time (AOT) compiler to compile bytecode into native code at the time of install. Although this requires more space to be used by applications due to the storage of the entirely translated application, it allows the conversion from bytecode to native code to be done only the first time an application is run.

This shift from JIT to AOT compilation has large implications for application performance. By giving the compiler a view of the entire codebase, it's possible to do greater optimization than the JIT compiler which could only do optimizations based on the chunks of code it was working with at the time. At IO, Google claimed that benchmarking applications see a performance increase of up to 2x when moving from Dalvik to ART, and certain cases like Chessbench see improvements up to 3x.

Improvements to memory management also contribute to performance improvements. Being written in Java, Android applications rely on automatic memory management. This has unfortunately put them at the mercy of Dalvik's garbage collection routines, which have been a large contributor to visual stutters, or "jank", in the past. For a very in depth look at the new garbage collection in Lollipop, as well as the improvements in ART as a whole, I recommend taking a look at the article Andrei wrote on the subject earlier this year.

Performance: Interface

Most of the people reading this review are likely to be familiar with what jank is, but for those who aren't it can basically be described as the drops in frame rate that have existed on Android since its inception. There are two ways this can be categorized. The first is an outright stutter, where the frame rate of an animation effectively goes to zero for a moment in time as frames are dropped. This has been particularly pronounced during scrolling animations, and it can be reproduced simply by scrolling in the Google Play application. The cause of this usually relates to applications overloading the UI thread, or the Java runtime's garbage collector causing a visible pause in the application. The second category is a frame rate below 60fps, but at some number that allows an animation to be displayed. This is what causes sluggish animations in the interface, where there is some animation that is not as smooth as it could be. There are numerous reasons why applications can have sluggish animations, ranging from a lack in CPU or GPU power, to badly programmed applications. 

With every release of Android, Google continues to claim that they have improved performance on Android by reducing jank. In hindsight, initiatives like Project Butter obviously did bring improvements, but Google clearly oversold them by saying the interface was brought to a consistent 60fps. If it had done that, we wouldn't still be getting the promise of improvement with every subsequent release. Jank has just been a trade off for running Android, and while Google has worked to minimize it through better software, and device makers through faster hardware, it was always there to some extent.

With Android Lollipop, I'm actually confident in saying that many areas where jank was still a problem are now actually running at a consistent 60fps. There is a caveat, which is that I don't know exactly how many devices this is going to end up applying to. For whatever reason, the Nexus 6 has performance issues in areas the Nexus 5 has none. During the writing of this review, I looked over several 240fps videos of animations on the Nexus 5 and Nexus 6, both running Android Lollipop, and I analyzed the time between distinct frames shown on the display. It was clear to me that in any area the Nexus 5 still has issues, the Nexus 6 performs even worse. For that reason, I'm going to limit my impressions to Android Lollipop on the Nexus 5, as I don't think it's fair to judge Lollipop based on whatever poor implementations were made on the Nexus 6.

What's very exciting is that there's actually not much to say, as it can be summed up by saying that Lollipop is really the first time where basically everywhere on my Nexus 5 feels smooth, or "buttery" as it was supposed to be with Android Jellybean. It almost feels uncanny for an Android device. Using Android's onscreen GPU profiling confirms that there are few, if any stutters. There are a couple of problematic areas like scrolling the new Calendar app, and in the eternally poorly performing Google Play app, but these are very rare exceptions in an extremely fast interface. Additionally, I have no reason to believe that the applications that currently have some performance issues can't be improved with future updates. Overall, I think this puts to end any discussion about how Android is slow or laggy, except in some strange situations like the performance of the Nexus 6 which I am really at a loss to explain.

Google Fit and Updated Applications Final Words
Comments Locked

126 Comments

View All Comments

  • lpyihui - Tuesday, December 2, 2014 - link

    How about Project Volta and the battery life on Nexus 5?
  • Brandon Chester - Tuesday, December 2, 2014 - link

    I responded earlier in the comments about this. There's really no way to benchmark Volta, it has no impact on anything like web browsing or video playback tests.
  • genghisquan - Tuesday, December 2, 2014 - link

    My experience with Lollipop went from positive to negative after the first week. I absolutely loved the concept & execution of Material Design. The other things that I was excited for with 5.0 was how smooth everything would feel and better battery performance. I'm so disappointed with those two things because things feel even more sluggish than it did on KitKat, and battery life isn't noticeably better at all! I seriously have sent more complaints/feedback while using Lollipop than I ever did on KitKat.
  • Impulses - Tuesday, December 2, 2014 - link

    Thank the Google Gods there's a setting in Chrome to disable it's tabs from invading the multi tasker, or I probably would've had to switch browsers.
  • jabber - Tuesday, December 2, 2014 - link

    I was really looking forward to just ONE thing from Lollipop for my Nexus 4 and that was the potential to use RAW capability for the camera.

    Unfortunately, Google decided not to update the Nexus 4 camera API. Thanks Google.
  • zodiacfml - Tuesday, December 2, 2014 - link

    1. I don't feel the new Android much since I'm using a different launcher just to remove Google's search bar on the main screen.
    2. I like the flashlight capability, goodbye flashlight app. It still has a bug though. When it sleeps, it just stops working and the camera app will crash.
    3. I appreciate the Auto rotate shortcut missing from the the previous.
    4. Battery life seems the same. I have been using the excellent Greenify App. Yet, there should be a way to control power draining issue when the phone has little or no cellular signal.
    5. ART has probably remove very small stutters in some apps. Overall, my N5 is very smooth and quick and nothing left to ask for.
    6. Google camera HDR has become slower and faster depending on the scene. It's still the best way to get good photos from a smartphone. I hope for manual controls, RAW mode, and other powerful features such as 60 fps video capture on 720p.

    7. Now the UI and most messaging/social apps use white background, there should definitely a content aware Auto Brightness control so that it lowers the backlight for such content and then boosts again for full screen photos or videos.

    8. A very small and niche annoyance for is the missing IP Address from the WiFi information page. In 5.0, I can only find it in About Phone - Status. I currently use my phone to troubleshoot WiFi connectivity at work and implementation of 5GHz AP setup.

    9. I don't like the Photo app. It still feels the Backup Photo App. I have to download a 3rd party app for viewing pictures since they have removed the Gallery app.

    10. There should be an option to bring out the keyboard immediately when unlocking the phone. In 5.0, it will require to swipe the lock icon first which is probably useful if you to want to read your notifications first before deciding to unlock the phone.
  • darkich - Tuesday, December 2, 2014 - link

    What a disappointing review.
    Pointless talk about frame rates and not a word about aspects that actually have practical merit and value - comparative battery endurance and application loading times.

    Sigh
  • Alexey291 - Thursday, December 4, 2014 - link

    I know its like I'm on engadget or something...
  • IKeelU - Tuesday, December 2, 2014 - link

    As an N4 user who's been using the Google Now launcher since it was available as a standalone APK last year (for those who haven't tried it, you can get it from the google play store now and it's terrific), I didn't feel as "shocked" by lollipop as I did by kitkat. Like with all android updates, it feels like the google apps were gradually updated prior to the OS update so I was already sort of used to the design changes.

    If your apps were fully updated, and you've been using Google Now Launcher, in day-to-day use there's really just 3 main changes: notification bar, homescreen, general smoothness. All good changes IMO.
  • oturn - Tuesday, December 2, 2014 - link

    "I think what can be said is that overall, Android is pretty much at the same level as Windows Phone and iOS for animation smoothness and general performance."

    Crazy talk! I have a 2nd gen Moto X with Lollipop, and an iPhone 6. I switch between them weekly. The smoothness and general performance of the iPhone 6 / iOS is ALWAYS a breath of fresh air compared to Android, Lollipop included. I hate it, because I prefer Android, but there it is. It slaps me in the face every time. There's nothing subjective it. It's obvious.

Log in

Don't have an account? Sign up now