[Nexus One Android Development] storm99999:
One of the most common criticisms of the Nexus One is its screen. Beyond a few touchscreen problems, a lot of people have had problems with the screen being too blue. This mod attempts to correct this color cast.

The top is with my hack, the bottom is without. This is a color accurate version. The weird green band is just the combination of my camera and what is on the page.

Here is a screenshot of the .apk:

UI, on Flickr

Currently, the color cast is corrected for most people's taste and there is an app to configure it.

Beyond color casts, it is theoretically possible to fix the gamma. It is currently 1.5 when it should be 2.2. That is a fairly bad setting. The roadblock to the implementation of this is that SurfaceFlinger, the window control application in Android, would have to be converted to OpenGL ES 2.0, which some devices don't support, and I would have to figure out how to write the right shader. If you or someone you know is experienced in GLSL for mobile devices, let me know.

Installation:

Anything earlier than Froyo is not supported. If you really want me to add support, let me know, but I'm not putting the time in unless there is a strong need.

For CM6 Nightlies (after Aug 8th) or CM6 final you don't need to flash anything, just install the CM .apk.

For most other roms, you want Universal .zip and normal .apk.

If universal doesn't work due to a failure to flash (so far, this is confirmed for eVIL's Sense V1.00 rom, but not later versions), try the one labeled Sense.

After you install the .zip and there are no errors during flashing, then install the Calibrator Control app.

Use:

To control it, open the Calibration Settings app and just change the numbers. Let me know what numbers you find pleasing to your eye. We currently use: Red = 975, Green = 937, Blue = 854 for the settings for reference. It will save your settings and load them on boot. This feature only works if you have the app installed on the phone and not on the SD card.

As always, there is no warranty with regards to this hack.

Credit goes to Cyanogen and his team for maintaining the source I based my small tweak off of and the authors of the original source, RixKliq for the great icon, and xenio2000 for the UI improvements and help with presets.

Changelog:

V1.0 - First hacky implementation

V2.0 - Cleaned up implementation, integrated better

V2.0b - Fixed signing issues.

V3.0 - Added 3 presets, of which the neutral one loads at boot.

V3.1 - Moved presets slightly cooler, added low red mode for low brightness screens and those who hate red.

V3.2 - Changed profile to be significantly more accurate and fixed multilingual bug.

V4.0 - API not changed, but new .apk allows on boot loading of any color setting you want.

V4.1 - API changed, but only to add a wider rom support. It still requires froyo though.

V4.2 - API not changed, added support for roms that moved libraries to /data/lib, enhanced UI.

V5.0 - API not changed, sadly, but added presets, major UI overhaul to .apk.

V5.1 - Bugfixes galore!

(Still) Planned:

Adding gamma, much less likely than I thought.

Adding dynamic red decrease as the backlight goes down.

Downloads

V5.1 is an .apk fix only, so no need to get the .zip file.

Universal (AOSP) Download:

http://dl.dropbox.com/u/9780975/calibrated-signed-42-Universal.zip

Sense (Desire) Download:

http://dl.dropbox.com/u/9780975/calibrated-signed-42-Sense.zip

Calibrator Controller V5.1 Normal Download:

http://dl.dropbox.com/u/9780975/Calibrator-5.1-Universal.apk

Calibrator Controller V5.1 CM Nightly (and Final) Download:

http://dl.dropbox.com/u/9780975/Calibrator-5.1-CM6.apk

Known Bugs

If calibration is enabled, Spare Parts will crash when Render Settings is opened.

Some versions may have logcat spam. Let me know if this happens to you.