Sunday, February 3, 2013

What next for Android?

Android 5.0 (or 4.3 perhaps) is coming up right around the corner. Speculation says it's going to be released at the next Google I/O in May or June. Nothing is known right now about it, but I pondered what Android really needs.

Camera improvements

While earlier versions have introduced zero shutter lag, panorama, and photosphere, stock Android lags behind greatly compared to skinned versions. I'd like to see HDR, slow motion recording, ISO options, etc. Up till now, Google really hasn't taken the camera software in Android very seriously. We have stupid options for recording video like silly faces, but nothing really practical.

File Manager

It really blows my mind that Android has no dedicated file manager. Third party ROMs like MIUI and CyanogenMod and certain skinned versions of Android all have their own unique file manager programs. The option does exist to download third party options, but something this simple should be included automatically.

Theme capability

One of the nicer things about MIUI, AOKP, CyanogenMod, and others based of these third party ROMs is they have the ability to theme virtually every aspect of the ROM by applying a theme. MIUI has designed their own specific theme engine while CM uses the open source theme engine created by T-Mobile for their MyTouch phones. Forget your average skinning, stock Android could get around these issues of upgrade delays by allowing everyone to change their look as they want. Want it to look like the Galaxy S III? Done.

These are just a few things I think Android would benefit on the whole. No doubt Google will have some unique surprises in store for everyone, but hopefully they improve some of the weaker areas in Android. It's come a long way, but there's always room for improvement.

Sunday, January 20, 2013

Some thoughts on Android 4.2...

I'm just now getting around to using Android 4.2. I find a lot of times initial releases of new Android versions are plagued with bugs or my third party programs haven't caught up with the new version yet. So typically I wait a little while till things stabilize a bit. Now that I am on 4.2, I figured I'd ramble off a few thoughts here and there about the new additions to the OS.

First off, "Daydreams". Let's be realistic here: it's a fancy name for a screensaver. Of course there's nothing wrong with screensavers, but on a phone or even a tablet in which the screen is typically turned off most of the time, a screensaver seems a bit pointless. Still, it's a nice feature. You have choices between a shifting color effect, a clock, and two types of picture displays (my rooted ROM also includes the Jelly Bean easter egg as a choice as well). All of the choices have variable options.

Secondly, notification toggles. Rooted users and those with certain skins already have had these for a while, but this is the first time it comes to stock Android. Overall the implementation is good. The tiles are nice and large give you a good selection of options (my custom ROM gives an even larger selection). I think this is likely the most useful and important of the additions to the OS.

Next, lockscreen widgets. I'll admit, the way they choose to do this threw me for a bit of a loop. Instead of just doing it like you would on a normal homescreen, they choose to basically have you create panels for each individual widget. On the right, you have your camera from the lockscreen option and the widget are on the main lockscreen and any to the left. One thing that irked me was the fact that you have to pull down on the widget or else the unlock controls are in the way. Otherwise, it's a good addition. However, the choices of widgets are limited to certain basic functions and Google apps (my ROM allows for any widgets).

Now, onto keyboard enhancements and photosphere. The biggest thing for the keyboard is a Swype-like style addition. For those who don't have Swype or use it, it allows you to draw lines over the letters to create the word instead of manually punching it in. It's a pretty good implementation, but it has a few drawbacks. Mainly the keyboard isn't very adaptive and requires you to move slowly in order to be assured you inputted the correct word. It also forces you to manually add new words in settings section with the languages as opposed to on the fly like Swype does. Overall, it's a pretty good first effort.

Photosphere is completely gimmicky. Basically, it's like a sphere version of panorama mode. However, the cool effect is that after you take the photo you can push a button in corner of the screen and pan and scroll around the photo you just took . In effect, you create a virtual appearance to it. Problem is it requires 4.2 to take advantage of this feature so sharing with someone on earlier versions is pointless. Secondly, I just can't find that much use for it.

Finally, there are a few misc. additions like support for wireless displays, multiple user accounts (only tablets or custom phone ROMs can access this), SELinux (which apparently existed for 10 years, but Google just now decides security is important), a new clock app, and a few other things not worth mentioning.

Overall, I think 4.2 is mostly fluff. There aren't any groundbreaking features or performance enhancements. Most of the things added I already had in one form or another such as Swype or notification toggles on earlier custom builds of Android. Basically, this is closer to Gingerbread than it is Froyo. Most aesthetic rather than functional.

Thursday, January 17, 2013

The Nexus program is in danger of becoming a failure...

I find it amazing how fast technology advances. About 10 or so years ago, I bought my first computer. It was  top of the line hardware with a 1 GHz processor. Nowadays, we have more powerful processors in our phones.

Just five years ago, Android was introduced to the world. While Apple was burning up the scene with the iPhone, Android quietly appeared in beta form in November of 2007. It would be another year before it hit the public commercially with the HTC Dream or G1 as it was better known.

For the first two years, Android couldn't gain much traction. My first Android phone was a Samsung Behold II in late 2009. It was abysmal. The software was pitiful, the hardware was pretty average for that day, and the battery never lasted more than 10 hours thanks to the earlier version of Android. These weren't good times. In fact, I nearly abandoned the operating system early on because of the bad experience I had with that phone.

In early 2010, Google decided to release their own phone to show other manufacturers how Android phones should be. Their first phone was the Nexus One. It was far more powerful than any other phone on the market. In fact, it remained the most powerful phone on the market until the release of the Galaxy S series in June 2010.

The Nexus One and by extension all later Nexus phones, were intended as models for the pure Android experience. Most manufacturers put custom skins on their versions of Android to differentiate themselves from everyone else. Nexus phones have the stock appearance that Google designs for each version. In fact, each version of Android are developed for the specific Nexus phone that comes with it.

As well as a pure experience, Nexus phones were designed for developers. They have unlock-able bootloaders and they run on any GSM network on the planet. Each Nexus phone tends to advance hardware, adding new ideas to what can be done with the platform. So let's look what they have done with it.

The Nexus One, while the most advanced hardware of the time, had a hardware glitch in the touchscreen that prevented more than two points of interaction. In comparison, most phones today have at least five points of interaction. The Nexus One also suffered from customer service issues as Google didn't really offer any additional support.

The Nexus S came next about 10 months later. Its guts were the same as the Galaxy S, but with an added NFC chip. The Nexus S was sold through a partnership with Best Buy as well as online as before. Unfortunately, the NFC prevented the phone from recording 720p video because they had to replace the original camera of the Galaxy S with a different one. Even worse was the lack of takeoff of NFC. While the technology is popular overseas, it never developed into much here.

My current phone, the Galaxy Nexus, launched a year later to almost immediate disaster. Google partnered this time with Verizon to release a timed exclusive on the their network. Given the fact that Verizon runs on a CDMA network (and LTE by the time of the release), it violated the unspoken spirit of the Nexus phones being globally tuned. The GSM version did release a little later, but without a store partnership as before. The big push here wasn't so much tech (though the phone was the first with a 720p screen) but Google Wallet. Google had planned to make paying with your phone the next big thing. Google Wallet never gained much traction on the Nexus S or Galaxy Nexus largely due to all the other major carriers besides Sprint supporting ISIS instead.

So here we are, at the Nexus 4. It is truly an amazing phone. Once again, the Nexus is sporting top of the line hardware at a phenomenal price ($300-$350). If you can get a hold of it that is. Right now, there's a bit of finger pointing between the manufacturer LG and Google. Supplies are incredibly limited and what's out there are going for outrageous prices on eBay. T-Mobile partnered with Google to release the phone on their sites, but even they have no stock.

It's really sad to see the Nexus program go this way. While they have had some success, mostly with the Nexus 7 tablet, Google really needs someone to work with them to market the Nexus phones properly. The Nexus phones are the answer to many different things. They are an answer to carrier subsidies, offering high-powered low cost phones that are unlocked. This is the sort of thing that works in Europe and Asia. They are also demoing the newest versions of Android and Google could be pitting these phones directly against Apple's iPhone. Before they could have been looked as niche, but with four different phones, two tablets, and a failed media center device, it's obvious that Google wants to develop the Nexus brand into something great. It's just that they keep screwing up. It saddens me so because Google is on the right path, but keep taking the wrong execution.

Hopefully, LG and Google sort out this supply issue. I've owned every single Nexus phone and have plans on buying some of the tablets as well, but I refuse to pay eBay prices as high as $600 when they should be available for almost half of that. Google needs to get things in gear or I'll likely have to pass on this Nexus phone and that's a shame.


Wednesday, October 3, 2012

A little more phone work...

I think by now I have my phone where I want it. After tinkering with just about everything, I've found the balance in performance and battery life I like.

First off, sticking with the Wheatley governor. I tested OnDemand and Interactive along with Wheatley. OnDemand generated the best battery life, but suffered jerky frame rates occasionally. Interactive arguably provided the most fluid performance, but battery life suffered. The phone didn't sleep nearly as much as it should. I would guess I lost about 20% battery life over the other governors. In the end, I found Wheatley, the governor that was specially designed for this kernel, provided the best of both worlds. It's really more of a jack of all trades. It doesn't excel in either, but overall is the best for day to day use.

The I/O scheduler was initially a wash, but further work with noop proved that it was the inferior of the two. Noop showed more lag, reduced battery life, and overall degrading performance. Sio is now my preferred scheduler, which is also the stock setting.

GPU remains constant at 384 MHz. The small boost in performance over the stock setting of 307 MHz without battery loss is obvious. The 512 MHz caused tons of visual glitches while scrolling through menus and such. This setting remains the same as before.

FSync off is a setting I found benefited the system quite a bit. At the cost of potential data loss on a crash, I noticed less lag and overall smoothness in animations. With the setting off it also boosts battery slightly.

Core and MPU overclock are staying at stock. Core OC caused reboots frequently and greatly reduced stability. MPU overclock is a bit of a wash. You can shift the setting either way to the maximum of 1.6 or 1.712 GHz, but overall the performance didn't pan out that much better. For benchmarking, it's a good idea, but daily use it just reduces stability and battery life.

Voltages are still keyed with the smart reflex system. I've reduced them as low as the system says is safe and have noticed a greatly enhanced battery life.

All other settings remained stock. Overall, I'm pleased with the development of the GLADoS kernel. The developer has gone out of his way to write not only an excellent control program, but also set the kernel up so tweaking is almost completely unnecessary.

Thursday, August 23, 2012

Playing with the processor on my Galaxy Nexus

Been testing the processor out on my Galaxy Nexus. I rooted it and installed a custom kernel (GLaDOS). Some of my observations.

First off, the kernel control program has options for nearly everything: sound enhancement, screen coloring, vibration control, MPU/Core/GPU adjustments, voltage tables, and more. It's a blast to work with since long pressing any option usually gives you an explanation as to what it does.

First off, core speed adjustments. The core or bus speed is usually involving the RAM. Running at 400 MHz, the program adjusts it up in percentages. Therefore, 110% equals boosting the core speed to 440 MHz. Strangely, I noticed markedly weaker performance.

This is likely due to the fact that the governor for the kernel, Wheatley, is a specially designed version for the phone itself. It works by keeping the processor at its highest frequency set in order to conserve battery. As insane as that sounds, it works. Think of using cruise control on your car to help fuel efficiency and how acceleration reduces it when you start off from a complete stop. The same thing applies here. Forcing the CPU to ramp up, as with OnDemand, the stock governor across most Android phones, wastes energy. I've sampled OnDemand, Wheatley, and Performance (for benchmarking) and have noticed much better response and battery life with Wheatley which is what I maintain for daily use. Core boosting really only seemed to assist benchmarking. Day to day use was impacted negatively. It also was unstable. Approximately one out of four times when I would adjust it, I would suffer a reboot.

MPU adjusting or the stereotypical thought of overclocking is by adjusting the frequency sets for the CPU. My kernel allows for up to 2 GHz, but this varies greatly between chips. My phone can obtain 1.6 GHz before it suffers reboots and freezes. Performance increased across the board from day to day use and benchmarking. Battery life was impacted only slightly and there was obvious heat increases. For maintaining the life of the battery and CPU, I don't think it's good for long term use. The control program also has live OC which allows you to step up the speed in percentages. This can boost performance and speed in a more controlled manner than just jumping to a different frequency set. However, the trade off is reduced stability. My phone may be able to exceed 1.6 GHz, but it will require live OC and voltage increases.

GPU overclocking sets at either 384 or 512 MHz. 384 MHz provides excellent performances boosts with negligible battery impact. 512 MHz also boosted performance without battery impact, but resulted in screen tearing and artifacts. The only way to mitigate this was to boost the core speed. Likely an issue with RAM bottlenecks as the phone wasn't intended to be pushed to this level of speed.

Voltages are controlled in the program and the CPU has a system called Smart Reflex Voltage. This combined with the control program tells me exactly what the optimum voltage is for each frequency set. Adjusting this to the optimum dramatically increased battery life with no stability loss. An amazing idea that really works out. You can adjust even lower to some degree in case the system didn't calibrate correctly, but I wouldn't jump more than 10 at a time for safety. Sometimes when you do reduce it actually re-calibrates it to your value proving it could go just a little lower.

A few other options can boost performance. FSync control reduces I/O operations increasing speed and battery life, but a crash can result in lost data. TCP congestion scheduler settings can boost data speeds. The default is set to westwood, but I found that Reno increased both ping and download speeds. The other two schedulers reduced speeds to a small degree instead.

I haven't done anything with the I/O schedulers. In the past, I've rarely seen much difference in performance. At least on this type of phone. Some earlier phones with weaker processors benefited from a change in scheduler, but with Project Butter, I see no real differences in performance pertaining to this as the only other scheduler is noop which is very similar to sio anyway.

Overall, the kernel and CPU performs admirably. The only real adjustments I found beneficial in the long run were boosting the GPU slightly, undervolting the processor, and TCP adjustments.

Update: I've found that my processor can achieve 1.712 GHz before suffering freezes and reboots. I'm going to be looking into whether underclocking the phone with Wheatley benefits the battery in any way soon.

Friday, August 10, 2012

A Review of the Samsung Galaxy Nexus and Jelly Bean (Android 4.1)

Well, it's that time again. It's time to look at a new Nexus phone and a new version of Android. This time, I'm feeling very happy about the newest version of Android (but not just because of what Google did with it) and the (now aging) Galaxy Nexus.

The Galaxy Nexus is already nine months old (practically a dinosaur in this day and age), but I just had to pick one up once I seen Jelly Bean in action. I initially was going to pick up the Galaxy Nexus back in February, but my distaste of Ice Cream Sandwich forced me to choose the HTC Sensation instead. I was also going to consider the Amaze, but the cheaper price for Sensation along with the ability to root it fully drove me to the Sensation.

Upon first viewing the Galaxy Nexus in the flesh, I was really pleasantly surprised by its appearance. The pure black slate front is faceless. There are no capacitive buttons whatsoever and there is only a volume rocker and a power button on each side of the phone respectively. Combined with these qualities, I've watched humorously numerous times as people who attempt to use my phone struggle to even figure it out.

The iconic camera bezel is still there of course and the larger and more powerful front facing camera is more prominent than the Nexus S. One nice addition, however, is a three color LED notification below the screen. This was something that was missing from the Nexus S. (Third party ROMs got around the limitations by making the capacitive buttons blink and light up on notifications.) Surprisingly, I never found the much larger size of the Galaxy Nexus that foreign. In fact, after using my Sensation and then this phone, I wondered why Android phones weren't always this big before.

Still, not all is great. The hardware still suffers from the lack of premium build materials. The plastic battery cover is extremely flimsy, but one benefit to it is it doesn't contain the NFC chip antenna and can be replaced with another (I chose to replace it with an aluminium one to give it a more premium feel and increase the weight to balance it a little more in my hand.).

Internally, the Galaxy Nexus packs a 1.2 GHz dual-core TI OMAP 4460 with a juiced up PowerVR SGX 540 GPU running at 307 MHz. The GPU is the same one found in the original Hummingbird chipset and the Nexus S by extension. It comes with 1 GB of RAM, 16 GB of user space, Bluetooth 3.0, GPS, NFC, Wifi (with all the variants), GSM radios with pentaband HSPA+ running at 21 Mbits, and a barometer (oddly). There are also a few other unique tricks like MHL and USB-on-the-go.

Likely the most noticeable feature is the 1280 x 720 resolution Super AMOLED screen. With a pixel density of 326, it rivals the iPhone. It's visually impressive to behold, has excellent feedback, and you can barely even tell that it uses the pentile arrangement.

Overall, I'm impressed with the hardware, especially since Google decided to reduce the price of the phone down to $349 (I got mine for $430 during the import ban). The phone can work on any carrier that uses GSM and it has a bevy of features that help it keep pace even by today's standards. The only real drawbacks I seen were the 16 GB of storage and reliance on the SGX 540. While the phone runs any game out there today efficiently, I felt it was a cheap choice to use (considering when this phone first hit it was around $600). As for storage, the Galaxy Nexus uses a different storage protocol called MTP instead of your regular mass storage mode. It's a bit different, but it allows the phone to incorporate app storage and USB into one allowing apps as near large as you need. However, 16 GB feels dated now. 32 GB should have been the minimum and I hope the next Nexus goes that route.

Booting up the phone, I immediately rooted it and installed a custom version of Jelly Bean on the phone. Any differences from the original will be noted as I run into them. Jelly Bean itself brings a fairly large amount of changes to the board, but the two things major things are Project Butter and Google Now.

Project Butter is the most obvious. Google has gone a great distance to make everything as smooth and fluid as the iPhone in respects. The end result isn't quite as smooth as the iPhone (that's owing to the fact that iOS is programmed directly for the hardware whereas Android has to function on many different phones), but it's still very close. In fact, Project Butter completely revived the Galaxy Nexus. The phone feels as fast as some phones that have just been released. That's one hell of an achievement and tells me that Project Butter is successful.

The other major thing is Google Now. Now is a sort of intelligent push version of Siri. Instead of asking it a bunch of questions, Google Now automatically presents you with the most relevant information based on previous searches (you can still do voice searches and commands as well by the way). This of course means you need to use Google's services, but if you're not, what the hell are you doing with an Android phone anyway? I haven't gotten that much use out of it so far myself. This is partly because I constantly switch ROMs, resetting all my data and because a lot of the push information is things I don't need (public transit, sports scores). Still, my hope is that it becomes even more feature rich in the future and learns even more of my habits. I'd hope one day for it simply tell me things like appointments in case I forget or how long it's going to take to get to work based on traffic conditions.

There are a few mundane things added to Jelly Bean that make it nicer. New animations for all the windows, expandable notifications, and some minor UI redesigns and flair. All in all, Jelly Bean is much more responsive, fluid, and enjoyable than it's predecessor.

A few things of note before I end this. My version of Jelly Bean came with several additions not seen in the original. First, it has an optional menu key. This was something I loathed about ICS on the Galaxy Nexus initially. There are customizations like toggles in the notification bar, settings to adjust the battery style and clock, and skipping music tracks by holding down on either of the volume buttons when the screen is off. Of course, the biggest is the Theme Chooser engine made popular by CyanogenMod that can entirely change the experience of the ROM.

I'm also running a custom kernel controlled by its own app. The app allows me to increase sound output, change frequency sets, overclock the GPU, reduce the voltages, and a few other unique things that really push the level of control I have over my phone.

Overall, the Galaxy Nexus is a purchase I definitely don't regret. I'm happy with its features and I can't wait to see what Google has in store for its next Nexus device.

Wednesday, December 21, 2011

Android 4.0: A disappointment

I feel bad about making this post, I really do. Android 4.0 or Ice Cream Sandwich (ICS for short for the rest of the blog) has been a major letdown for me.

First off, let me preface this with the good. There are a lot of great things I do like about ICS. First of all, hardware acceleration. This has what fans of Android have been clamoring for since the beginning. The buttery smooth action of the iPhone is very desirable and most thought this would be it. Sadly, an Android developer has said that it won't happen because of the way Android is made. However, it does create a very good amount of smooth transitions between windows on the main UI. Other programs can take advantage of this and I've seen some so far like ADW Ex Launcher which is as smooth as the iPhone.

A few other good things. Syncing with Chrome bookmarks, a redesigned and faster browser with very smooth zooming, syncing pictures to your gmail account, some much needed UI polish, a few tricks pulled from third party ROMs like swipe to remove notifications.

However, there are some major issues. First, the stock launcher. While the Eclair/Froyo/Gingerbread launcher was very smooth with its opening transition animation and 3D rolodex drawer, the stock launcher on ICS is choppy, counter intuitive, and buggy. The opening animation for the drawer often takes at least a second to even register compared to 2.1-2.3 where it was always instant. The removal of the widgets selection when holding down on the screen to integrating it into the launcher is confusing to say the least and very slow. Having to flick through many different widgets depending on what you have installed to find the one you want as opposed to just a list is a major turn-off. Thankfully, the original method still exists in third party launchers. I also have experienced many crashes of the launcher itself.

The UI, while refined, is really all over the place. Every part of ICS looks like it belongs somewhere else. The calendar has one look while the browser another. The UI only look vaguely uniform and it can really be a distraction for those used to Froyo or Gingerbread stock.

I also seem to encounter a bug where the gallery won't read my SD card (or partition when talking about the Nexus S). It takes a bit of fiddling around with the gallery's data and the camera to get my files to show up. Definitely a deal breaker as I use custom wallpapers.

Lately, it's been shown that the build has a bug, specifically for the Nexus S, but likely for all phones, that prevents the phone from sleeping. This was the dreaded bug that basically ruined Android in the earlier versions (pre 2.0). My Behold II had this problem and I could lose battery after mere hours. I'm certainly not going to upgrade unless Google gets this fixed.

I'm not giving my seal of approval on ICS. While Eclair/Froyo/Gingerbread maintained the good components of the previous generation and added to it, ICS seems to be a step back for Android. This is one of those rare instances where a skinned version of Android is going to be better than stock.