General

Q: What is the target audience of this FAQ?

A: Well considering that most of these questions were asked on #Android@irc.freednode.net, I would say visitors to #android. However, it's really for anyone who has serious technical interest in the Android platform.

Q: Who maintains this FAQ?

A: Brandorr (Brian Gupta) initially wrote the FAQ, but many people have helped. Feel free to contact Brandorr with any suggestions, and any questions that should be added.

Q: How do I get my questions about Android answered?

A: There is a list of mailing lists here: http://source.android.com/discuss Also you can try IRC (#android@ircfreenode.net) Also the xda-developers mailing list has a lot of Android discussion.

Q: What Android related IRC Channels are there?

A: #android, #android-dev and #android-root (All on irc.freenode.net). Also Jay Freeman (saurik) is hosting: #android@irc.saurik.com and last but not least is #android-downloads (our channel, kinda small and empty, but still there)

Freenode:

#android - Official Android-platform channel (IE: OS discussion)

#android-dev - Official channel to discuss app development

#android-firehose - Live stream of all commits to the Android Open Source Project

#android-root - Rooting, custom ROMs, etc

#android-offtopic - Fans of Android can hang out

#androidnyc - New York City Android channel

#nookcolor - Unofficial channel for Nook Color hacking

#cyanogenmod - Forum to discus leading custom ROM

Q: What is infobot?

A: An IRC bot that collects a lot of "interesting", and occasionally (rarely) useful information. Be aware, infobot sits on many IRC channels... and logs: http://ibot.rikers.org/%23android/ (Update: infobot has been banned from #android.)

Q: Can I use the Android "bugdroid" image on my site?

A: Yes, the "bugdroid" is licensed under the creative commons, although the font used in the Android logo is trademarked and off limits. (not the font on the G1, the futuristic font used to create the word "Android" on many of the logos. Here is a freely reusable sample image: http://img125.imageshack.us/img125/8117/greentranparentwm1.png (with transparent background)

Q: Is there an Android development roadmap?

Q: Where can I report bugs?

Q: Why does Android use the a GPL Linux kernel, but libraries and user space apps that are licensed more liberal open source/free software licenses?

A: To put it simply - the Linux kernel has wide hardware and industry support, and keeping GPL code in the kernel as much as possible makes a pretty clear line between GPLed stuff and unencumbered stuff, but vendors are somewhat scared of the GPL, so it is avoided as much as possible outside the kernel. It seems that currently bluez is about the only userspace code in android which is GPLed. Official reasons for why to use a Linux kernel from a Google IO preso:

Relaxed POP3 parser rules so it works with non-compliant email servers.

Password quoting bugs in IMAP. Makes it work for users with funny chars in their password (e.g. spaces).

Various sources of errors in auto & manual account setup.

Improvements on how we report various connection errors. Makes it much easier for user to diagnose failed account setups.

New-mail notifications for POP3 accounts.

Properly recover from POP3 connection failures, so that the next connection has a chance of working properly.

Remove automatic accounts setup entries that were broken or not testable. Minor fixes to a few of the remaining entries. Improvements to warning dialogs used for a few special cases.

New accounts are now set to check every 15 minutes (instead of defaulting to "never").

Fixed a bug causing approximately 1 in 25 outbound messages to freeze up the IMAP connection (to a Gmail based server) when transferred to the Sent folder. This broke the entire connection so new messages could not be downloaded either.

Unit test framework so Email can be extended & tested more reliably.

Fix IMAP manually-created accounts so message delete works properly.

Alarm Clock

Significant bug fixes

Alert now plays audio/vibe directly, rather than through AlarmManager. AlarmClock alert starts playing audio/vibe in its IntentReceiver, rather than on activity start. These changes should prevent alarms from being blocked by modal dialogs.

Package Installer

Significant bug fixes

Bugs related to replacing existing applications.

Settings

New features

New menu option to list running processes in Settings->ManageApplications.

Music

New features

Music playback fades in after suspending for phone call.

New media search intent allows for 3rd party apps to launch or respond to media searches based on artist, album, or title.

Affects: Music Player, YouTube, Browser applications.

Browser

New features

Updated WebKit browser core, synced with Nov 2008 WebKit version.

Support for new, optimized JavaScript engine (SquirrelFish).

Copy / paste is enabled in the browser. To copy with touch, press and hold the shift key and select the text. Releasing the shift key or ending the touch drag copies the text. To copy with the trackball, press and hold the shift key, move the cursor to the selection start, click the trackball, and move the trackball to the extend the selection. Releasing the shift key, or clicking the trackball a second time, copies the text.

Find is enabled in the browser. To find text, choose it from the menu and type the text to find.
Drawing has been sped up substantially by supporting partial content invalidates and partial screen invalidates. Pages with animations are 5x faster.

VoiceDialer

New features

VoiceDialer supports 'open app' command

Camera/Gallery

New features

Video recorder mode

Share intent for videos

Video thumbnails

Local file playback

Download manager

New features

Support for HTTP codes 301, 302, 303 and 307 (redirects).

HTTP code 503 is now handled, with support for retry-after in delay-seconds.

Downloads that were cleanly interrupted are now resumed instead of failing.

Applications can now pause their downloads.

Retry delays are now randomized.

Connectivity is now checked on all interfaces.

Downloads with invalid characters in file name can now be saved.

Framework

New features

Support of touch events in WebView.

New JavaScript engine (SquirrelFish) in WebView.

Input method framework, for soft keyboards and other on-screen input methods. Includes new APIs for applications to interact with input methods, and the ability for third party developers to write their own input methods.

Access to the raw audio data for playback and recording from application code.

New PendingIntent.FLAG_UPDATE_CURRENT option.

Support for top-level boolean resources.

Tactile feedback to the LockPatternView. Tactile feedback can be enabled/disabled by going to Settings > Security & location and then checking/unchecking "Use tactile feedback". Note that this can be used independently of the visual feedback of the lines ("Use visible pattern"). Thus it gives users a middle ground between showing the lines on the screen and having no feedback at all.

PackageManager changes to support un-installation of partially installed applications. Added new flag PackageManager.GET_UNINSTALLED_PACKAGES to include partially installed apps in all relevant PackageManager api's. ManageApplications screen now lists such partially installed apps and the user can uninstall these applications completely.

Support third party updates of system applications. New menu options in Settings->ManageApplications to list updated system applications.

Framework support to list current running processes. New API in ActivityManager.

Fixed issues with saving state in the view hierarchy, so that you can properly subclass from something like TextView and create your own state that inherits from that provided by TextView.

TextView now implements onKeyMultiple(), so that flinging the trackball will result in accelerated scrolling. This required some changes to movement methods, and included some improvements to the acceleration computed when flinging.

Framework bug fixes in PackageManager to share/un-share permissions for applications with shared uid's.

A number of settings in android.provider.Settings.System were moved to android.provider.Settings.Secure. Only system software can modify these settings. Additionally, a new permission, WRITE_SECURE_SETTINGS, is required to access these settings. The old constants in Settings.System have been deprecated. It is possible to read settings values via **** Settings.System using the deprecated constants. However, attempts to modify these settings via Settings.System will result in a log message and the setting value will be left unchanged.

Many bug fixes in the media framework

Bluetooth

New features

Support for A2DP & AVRCP profiles.

Significant bug fixes

First connection after pairing always fails on many carkits.

Mini Cooper and some late model BMW cars fail to use Bluetooth or take 2 minutes for Phone Book transfer.

System software

New features

New kernel based on Linux 2.6.27.

Improvements to the wakelock API.

Work to transition to the USB Gadget Framework underway.

Basic x86 support.

Radio & Telephony

New features

SIM Application Toolkit 1.0.

Green CALL button is no longer a shortcut for "add a new call". This has been a rarely used feature and confusing if triggered accidentally.

Longer in-call screen timeout when using the speakerphone.

"Show dialpad" / "Hide dialpad" item added to the in-call menu, to make it easier to discover the DTMF dialpad.

Significant bug fixes

An obscure case where the Phone UI could cause the device to not go to sleep on its own. This would happen if user bails out of the in-call screen by hitting HOME, followed by the call disconnecting remotely.

Don't allow a single tap to open the in-call dialpad. It is now required to touch and drag it. This makes it much harder to accidentally open the dialpad by touching the screen with your face.

Performance: Android 2.3 includes a variety of improvements across the system that make common operations faster and more efficient for all applications. Of particular interest to game developers are:

Concurrent garbage collector — The Dalivik VM introduces a new, concurrent garbage collector that minimizes application pauses, helping to ensure smoother animation and increased responsiveness in games and similar applications.

Faster event distribution — The plaform now handles touch and keyboard events faster and more efficiently, minimizing CPU utilization during event distribution. The changes improve responsiveness for all applications, but especially benefit games that use touch events in combination with 3D graphics or other CPU-intensive operations.

Native input and sensor events: Applications that use native code can now receive and process input and sensor events directly in their native code, which dramatically improves efficiency and responsiveness.

Native libraries exposed by the platform let applications handle the same types of input events as those available through the framework. Applications can receive events from all supported sensor types and can enable/disable specific sensors and manage event delivery rate and queueing.

Gyroscope and other new sensors, for improved 3D motion processing- Android 2.3 adds API support for several new sensor types, including gyroscope, rotation vector, linear acceleration, gravity, and barometer sensors. Applications can use the new sensors in combination with any other sensors available on the device, to track three-dimensional device motion and orientation change with high precision and accuracy. For example, a game application could use readings from a gyroscope and accelerometer on the device to recognize complex user gestures and motions, such as tilt, spin, thrust, and slice.

Open API for native audio - The platform provides a software implementation of Khronos OpenSL ES, a standard API that gives applications access to powerful audio controls and effects from native code. Applications can use the API to manage audio devices and control audio input, output, and processing directly from native code

Native access to Activity lifecycle, window management - Native applications can declare a new type of Activity class, NativeActivity whose lifecycle callbacks are implemented directly in native code. The NativeActivity and its underlying native code run in the system just as do other Activities — they run in the application's system process and execute on the application's main UI thread, and they receive the same lifecycle callbacks as do other Activities. The platform also exposes native APIs for managing windows, including the ability to lock/unlock the pixel buffer to draw directly into it. Through the API, applications can obtain a native window object associated with a framework Surface object and interact with it directly in native code.

Native access to assets, storage - Applications can now access a native Asset Manager API to retrieve application assets directly from native code without needing to go through JNI. If the assets are compressed, the platform does streaming decompression as the application reads the asset data. There is no longer a limit on the size of compressed .apk assets that can be read. Additionally, applications can access a native Storage Manager API to work directly with OBB files downloaded and managed by the system. Note that although platform support for OBB is available in Android 2.3, development tools for creating and managing OBB files will not be available until early 2011.

Robust native development environment - The Android NDK (r5 or higher) provides a complete set of tools, toolchains, and libraries for developing applications that use the rich native environment offered by the Android 2.3 platform. For more information or to download the NDK, please see the Android NDK page.

New forms of communication

Internet telephony - Developers can now add SIP-based internet telephony features to their applications. Android 2.3 includes a full SIP protocol stack and integrated call management services that let applications easily set up outgoing and incoming voice calls, without having to manage sessions, transport-level communication, or audio record or playback directly. Support for the platform's SIP and internet calling features on specific devices is determined by their manufacturers and associated carriers.

Near Field Communications (NFC) - The platform's support for Near Field Communications (NFC) lets developers get started creating a whole new class of applications for Android. Developers can create new applications that offer proximity-based information and services to users, organizations, merchants, and advertisers. Using the NFC API, applications can respond to NFC tags “discovered” as the user “touches” an NFC-enabled device to elements embedded in stickers, smart posters, and even other devices. When a tag of interest is collected, applications can respond to the tag, read messages from it, and then store the messages, prompting the user as needed. NFC communication relies on wireless technology in the device hardware, so support for the platform's NFC features on specific devices is determined by their manufacturers.

Support for new media formats - The platform now offers built-in support for the VP8 open video compression format and the WebM open container format. The platform also adds support for AAC encoding and AMR wideband encoding (in software), so that applications can capture higher quality audio than narrowband.

Access to multiple cameras - The Camera API now lets developers access any cameras that are available on a device, including a front-facing camera. Applications can query the platform for the number of cameras on the device and their types and characteristics, then open the camera needed. For example, a video chat application might want to access a front-facing camera that offers lower-resolution, while a photo application might prefer a back-facing camera that offers higher-resolution.

New Platform Technologies

Media Framework

New media framework fully replaces OpenCore, maintaining all previous codec/container support for encoding and decoding.

Integrated support for the VP8 open video compression format and the WebM open container format

Adds AAC encoding and AMR wideband encoding

Linux Kernel

Upgraded to 2.6.35

Networking

SIP stack, configurable by device manufacturer

Support for Near Field Communications (NFC), configurable by device manufacturer

Updated BlueZ stack

Dalvik runtime

Dalvik VM:

Concurrent garbage collector (target sub-3ms pauses)

Adds further JIT (code-generation) optimizations

Improved code verification

StrictMode debugging, for identifying performance and memory issues

Core libraries:

Expanded I18N support (full worldwide encodings, more locales)

Faster Formatter and number formatting. For example, float formatting is 2.5x faster.

HTTP responses are gzipped by default. XML and JSON API response sizes may be reduced by 60% or more.

New collections and utilities APIs

Improved network APIs

Improved file read and write controls

Updated JDBC

Updates from upstream projects:

OpenSSL 1.0.0a

BouncyCastle 1.45

ICU 4.4

zlib 1.2.5

Q: What is honeycomb?

A: Will be released as Android 3.0 and 3.1
This release is targeted strictly at tablet devices. For highlights of this version see [1] and [2]

Q: What is ice cream sandwich?

A: 4.0. Expected release Q4 2011
Google has indicated that this release will bring features introduced in Honeycomb to smartphone devices. Features such as the updated "holographic" UI, widget size editing, and improved multitasking where mentioned at Google IO. In addition Google has indicated that ice cream sandwich will be a unified platform that runs on both tablets as well as smartphones.

Q: What is jelly bean?

A: 4.1/4.2/4.3 Released

Q: What is KitKat?

A: 4.4 Released

Q: What is lollipop?

A: 5.0 Announced Oct 15, 2014

Google TV

Q: What is Google TV?

A: Google TV is a family of HDTV consumer video devices that enable convergence between tradition live broadcast digital video, internet video, local media files, some DVR support, and a relatively full featured internet browsing experience. One way this convergence is manifested is as a unified search feature, that allows searching across live TV, internet video, the internet in general, and if supported DVR recordings. In addition all currently shipping Google TV devices allow a single remote, to control all these video sources. In addition Google TV can run specially developed applications. Currently applications are shipped with the devices, but in the future one will be able to install third party applications from the internet. Google TV devices sit either between the primary digital video source (cable, or satellite) and the television set, or are built into the television set itself.

Google TV may also refer to the software stack, maintained by Google, that powers these devices.

Q: How is Google TV related to Android?

A: The software that Google TV runs is a version of Android that has been enhanced to support video search, HDTV signaling, and a full Google Chrome browser. It current'y doesn't support certain Android features like installing third party apps.

Q: What Google TV devices are available?

A: Logitech currently ships the "Revue with Google TV" a "Set-top box", that enables basic Google TV functionality for legacy HDTV televisions. Sony ships a line of HDTV "Internet Televisions" (NSX-24GT1, NSX-32GT1, NSX-40GT1, NSX-46GT1) that have Google TV built in, in addition Sony also ships a Google TV HDTV device that is combined with a optical disc/BlueRay player (NSZ-GT1).
See: http://Logitech.com/GoogleTV and http://www.SonyStyle.com/SonyInternetTV for more information.

Q: What file formats/codecs does Google TV support?

A:

Supported video file formats:MP4

Supported music file formats:MP3/AAC

Supported photo file formats:JPEG/PNG/GIF

Q: What USB accessories does Google TV support?

A:

USB keyboards

USB Mice

USB storage, including flash and hard drive

Certain video cameras

Q: What Bluetooth accessories does Google TV support?

A: Bluetooth input devices. e.g. Keyboard/pointer/remote control. Unfortunately there doesn't seem to be any option for headsets. (The option to support A2DP stereo headsets would be great).

Q: When using an external USB storage device, what filesystems does Google TV?

A: Currently only FAT32. EXT2/EXT4, NTFS and exFAT have been tested and did not automount. (message indicating that USB was Damaged was displayed). Currently there is no supported way to access files larger than 4GB over USB. Hopefully this will be addressed in a future update.

Q: Are there any open source examples of OpenGL apps for Android?

A: Yes.

Andy Ross put together a GPL'd native code OpenGL demo and performance rig. There's a makefile build system and a perl wrapper around the compiler. Probably worth looking at if you need sample code: http://plausible.org/andy/Game1.tar.gz

Q: Is Python available for Android?

A: Yes. Google announced (in June, 2009) the
Android Scripting Environment.
In the blog entry, python is stated as being supported, and they give sample code for an python application which
can run on a phone.

Also, Jython lets you run Python inside the JVM. Jythonroid is a port of Jython to run inside Android's Dalvik JVM, so in theory, you could write Android applications in Python that could interact with Android's APIs.

Damon Kohler also has patches for cross-compiling Python 2.4. It will, however, run as a native application (without access to Android's APIs), so most scripts written will have limited use. Most interesting things will also require a rooted phone.

Q: How do I switch orientation in the emulator?

A: Numpad 7 will do it. CTRL + F12 will also suffice.

Q: Does Android support writing native applications?

A: The Android development team has provided developers with an NDK (native Development Kit) for those edge cases where Java apps do not make sense.

Q: I heard I can't sell NDK apps in the Market. Is this true?

Q: How can I control the keyboard backlight?

A: The keyboard backlight can be controlled via /sys/class/leds/keyboard-backlight/brightness It appears that it's a simple on-off control (echoing '0' turns it off, echoing '1' or higher turns it on). For some reason, the default system backlight control stuff seems to set this to "83", but I don't know why. I can't seem to see any difference between 83 and any other number. The file is readable by anyone, but only writable by root, so you'll need root access to the phone to manipulate it this way.

Q: What countries can I sell my apps in?

Q: What determines the category ("Lifestyle", "Entertainment") that an app is filed under? Does the developer get to pick?

A: The developer selects the category upon upload.

Q: Do the market and openmarket.com have anything in common?

A: Not at all.

Q: As a developer trying to sell or distribute apps into a region that does not yet have an official Android Market, are there any options?

A: Yes. There are a a number of options for either direct distribution or third party apps/websites. Please note for all these methods, the end user will have to enable installation of third party (non Android Market) applications.

Q: Is there a PDF reader for Android?

There is also one produced by HTC for 1.5 (Cupcake) found here: PDFViewer (working) on JF 1.5 and other builds. This particular version is a bit more involved in the installation process and requires that you install files to the system. This can be accomplished with ADB for those without root access.

Q: Is there a free screenshot app for Android?

Alternatively you can use Eclipse with the Android DDMS tools which contains a button to take a screen shot of the phone when it is plugged in and configured properly.

Devices

Phones

Developer Phones

Q: What is this I heard about an Android Developer Device?

A: It has been said (by infobot) that devphones is a phone with magical powers and will make all your wildest dreams come true. You can read about them here: http://code.google.com/android/dev-devices.html - in order to buy one, you have to pay a $25 to be in the "developer club" and then you can get into the back room where they keep them behind a curtain of lava. very expensive to ship outside the US, or sporting this: http://tinyurl.com/54sxg2, or ...

Q: What is the difference between the G1 and the ADP1 (Android Dev Phone 1)?

Q: What is the ADP2?

A: The ADP2 is a HTC Magic (PVT 32B) Qualcomm MSM7201a

Q: Why is shipping so expensive to my country for the Android Developer Phone 1?

A: Quoting from help page on ordering side: "For Orders shipping outside the US, shipping pricing includes cost of shipping service and the applicable customs, duties, import and country specific other fees."

Q: What does it cost to ship one to Canada?

A: It seems it cost about $200 (so says the "Ongoing Android Diary"). Update: $ 40.40 as of April 18, 2010.

Q: Does it come with a warranty?

A: Apparently it comes with a very skimpy warranty (think saran wrap bikini skimpy) that warrants the device is free of defects and nothing else.

Q: I was wondering if there are physical stores you can walk into and buy one of those phones?

A: Nope, sorry. You can only order it online.

Q: Will the Android Developer Phone 1 work on AT&T's network?

A: Yes, however, like the T-Mobile G1, it is not compatible with AT&T's 3G network. (You will be limited to EDGE speeds).

Q: What's this I hear about being able to turn a T-Mobile G1 into an Android Developer Phone?

A: Excluding cosmetic differences, the two differences are the radio lock and the enhanced bootloader. The radio lock can be removed with a simple request to T-Mobile. That only leaves the bootloader as the major difference. There currently is a bootloader floating in the wild, that seems to be very similar to what is expected to be running on the ADP1 (Android Dev Phone 1). The catch is you can only install this boot loader if you are one of the lucky few that has a "rooted" G1. This means that you are out of luck if you are running a stock version of RC30+. See http://www.gotontheinter.net/node/7 for details.

If your phone is not rooted but above RC30 it is still possible to root your phone by downgrading to the insecure version and then re-upgrading with a patched firmware update. See: Root For RC30

Google Nexus One

Q: Where can I buy a Google Nexus One?

Q: What official Google endorsed Nexus One accessories exist?

A: Nexus One Desktop Dock and Nexus One Car Dock

Q: How can I get root on a Nexus One?

A: First connect to the bootloader and run "fastboot oem unlock". Or on newer firmware there actually is a menu in the bootloader, that asks if you want to unlock the bootloader. It does warn you that you will be voiding the warranty though. This will allow you to install any number of rooted firmwares.

Q: How can I access the bootloader?

A: Power on the device with the "volume down" button pressed.

Q: How can I access the recovery console?

A: Boot into the bootloader and select "Recovery." Then when the Android and exclamations logos show up, press the power and volume up buttons at the same time. (Hold power and then press Vol up)

Q: What countries does the Nexus One ship to?

T-Mobile G1 (HTC Dream)

Q: Where can I buy G1 accessories?

A: Android-DLs has created its own little Amazon Store full of accessories for the G1 (and maybe other Android devices once they surface). Find the items you need and help out the site. Also Disconnect (who has helped tremendously in the hacking side of G1 has an Amazon store of his own you should check out here)

Q: What is root, and why do I want it?

A: Root could best be explained (to windows users) as the "administrator" account. For game nerds, think "God Mode", for all others, you already know what root is. Why should you get/keep root?

Q: Where can I download a copy of the G1 manual?

Q: Has anyone been able to get the G1 to do USB Host mode?

A: Short answer: No. Long answer: The chipset supports OTG so it is theoretically possible, but I'm not sure if the G1 hardware would need to be modified. Also, we have no OTG support in the USB driver, and none of the higher level code in android supports host side USB.

Q: Does the G1 have a compass in it, i thought it did.. but I couldn't figure out how to launch it?

A: Yes, it has a built in digital compass. You will need to install an application that calls compass's API in order to actually use it. Search the Market for "compass" to find these applications.

Q: I've heard that magnetic flaps on cell phone cases mess up the G1's compass. Is this True?

Q: Can I get an adapter that lets me listen to the G1, while still charging it?

Q: What is the latest version of the G1 firmware?

Q: Is the G1 supposed to fall back to 2G if 3G is not available?

A: Yes it will fall back to EDGE if 3G is not available? The current implementation seems a bit buggy, however.

Q: Not having root sucks. Any progress on a fix?

A: Yes. If you are running a G1 with rc29 or lower, you can use an exploit. See: Rooting Android. If you are running RC30 (US) or above see Root For RC30 and if you are on RC8 (UK) or above see Root for RC8

Q: Whats the price for the G1 for developers?

A: Same as for anyone else. You may want to investigate the Android Developer Phone 1 instead.

Q: Does the T-Mobile G1 support VOIP?

A: Originally not, and many thought it probably never officially would. From an interview with the CEO of T-Mobile: "When I talked to Cole Brodman, the CTO of T-Mobile, after the event about what would stop something like Skype from designing a program that could run on the phone, negating the need for a massive voice plan, he said he had "worked with Google" to make sure Android couldn't run VOIP." http://blog.wired.com/business/2008/09/three-years-and.html . But more recently Andy Rubin, Google's Vice President of Mobile Platforms made this blog post discounting a newspaper's claim that Android does not support VOIP, writing "the first generation of our Android software did not support full-featured VoIP applications due to technology limitations, we have worked through those limitations in subsequent versions of Android, and developers are now able to build and upload VoIP services.".

There are currently the following Android applications offering [true] VOIP:

Q: Are there any G1 car mounts available?

Q: Are there any extended batteries available for the G1?

A: Please not the base battery that the G1 ships with is a 1150mAH battery. Quite a selection of extended batteries are available now from (barely extended) 1200mAH to the mammoth 2600mAH (no, that is not a typo).

Q: Does G1 or Android support multitouch?

A: Yes and no. What can be achieved is in the works by ryebrye and lucashutch. As soon as something viable (and useable) is out, it will be posted here. They are currently working on adding what they have already created to maps/browser.

Q: When we press side keys for the volume, does it also make respective changes in volume for call and music? If not, how does it work?

A: Sadly the official G1 manual only states: "While receiving incoming call, press either (+) or (-) to silence the ringer." As best as I can tell, the default behavior for the volume keys is to change the ringer volume. Apparently, this can by overriden by the currently running application. e.g. - While on a call, the volume keys change the call volume. While listening to Music, the volume keys change the playback volume. While running connectbot the volume keys change the font size.

June Fabrics (http://www.junefabrics.com/android/index.php) has a USB tethering program called PdaNet (currently freeware, at least to version 1.14beta) for the G1 which does not require root. It does not appear to support FTP transfers, but otherwise is a reasonably stable tethering program. PdaNet for G1 is a bit easier to install and get working than Tetherbot.

Q: What are the specs for the Magic?

Q: Is the HTC Magic the same as the T-Mobile G2?

A: G1 and G2 are trademarks of T-Mobile, and they sell the HTC Dream under the name T-Mobile G1 in various countries. In other countries where T-Mobile does not operate, it is sold as the HTC Dream by other operators - Dream is both the HTC codename for the device, and the name under which is is being sold.

The Magic has been announced (as mentioned) as a Vodafone exclusive, but it is not clear if the exclusivity is time- or territory-limited. As of mid-March, 2009, there has been no announcement from T-Mobile about a G2, although there is a wide expectation that the Magic will be released as the G2 sooner or later. There have been shots of a T-Mobile branded Magic device being used in a demonstration at a conference, but there was no sign of actual G2 branding on the device.

Q: What is the code name used to reference the Magic platform in the source code?

Platform Hacking and Development

Q: Is there any documentation available for the RIL (Radio Interface Layer)?

See also android/hardware/ril/include/telephony/ril.h for more details of RIL functions which needs to be implemented. Also you can get a reference implementation in android/hardware/ril/reference-ril/. That's probably the closest you will find to "documentation".

Q: Is all of the firmware opensourced? If not, what isn't?

A: No. Currently, the kernel is fully opensourced. However there are still some some proprietary userspace bits, which include:

htc RIL (radio interface) library and data files

(this is glue between the telephony layer in android and the AT/QMI
control channels provided via GPL kernel drivers)

Q: What OSes does fastboot support?

A: Linux, OS X, and Windows are all supported by fastboot.

Q: What is RGB565?

A: The file format for splash screens. You probably want to create a 320x480 image. It is unsupported by any other image software, so the only way to create one is to start with a raw rgb888 file (8-bit raw, the default format in gimp or photoshop when saving as "raw image") and run it through rgb2565. Alternatively, you can save as a png and then run this script by RyeBrye on it (assumes you have working ImageMagick as well as a compiled version of rgb2565 in your path.) If you run rgb2565 with no flags, it will create an uncompressed rgb565 file which should be exactly 307200 bytes. This file can be used for replacing the initial screen you see when you start up the phone, which is done by flashing it via fastboot (details here). If, instead, you specify the -rle flag, rgb2565 will compress the image using a simple RLE algorithm. This file can be placed in the root of your boot image and named initlogo.rle, and it will show up after the initial boot screen but before the animated android screen (details here). Do not attempt to use rle compressed files to flash the initial boot screen. See http://android.git.kernel.org/?p=platform/build.git;a=tree;f=tools/rgb2565 to look at source.

Q: Is the UI based on X-Windows?

Q: Does Android support Japanese input?

Q: What is an SPL?

A: Secondary Program Loader, typically, a second stage bootloader. Not a term actually used by Qualcomm for msm7k has a more complex boot path involving both CPUs. Initial/secondary program loader is usually in reference to nand/onenand boot setups where you have a very small initial bootloader (1k to 16k typical), that is just enough to load a much larger secondary bootloader. Often there is something that runs first, in-rom, on-die (this is true of omap and msm chips for example) that is responsible for getting the IPL loaded.

Q: Has there been any work to improve Android with SELinux enhancements?

Q: When I turn on WiFi, why does the G1 listen to UDP port 9000?

Q: For those Android devices that don't have touchscreens, is there a keyboard way to deal with notifications?

A: If you press menu on the home screen there is a Notifications button that will pull down the drawer for you.

Unanswered

Q: How do I change the default system wallpaper via the API?

A:

Q: Is there any information on creating themes for the window manager in the sdk?

A:

Q: Is there some kind of l10n overview?

A:

Q: how does the UI operate?

A:

Q: How do the 3D drivers work?

A: Android uses a special subset of OpenGL called "OpenGL ES", currently maintained by the Khronos corporation. More info here: http://www.khronos.org/opengles/ and here: http://en.wikipedia.org/wiki/OpenGL_ES . OpenGL ES 1.0 had some distinct differences from 'normal' OpenGL, although it generally conformed to OpenGL version 1.5. However OpenGL ES 2.0 is much closer to the ordinary version of OpenGL that it corresponds to: OpenGL 2.0. Note that by 2011, when GL ES 2.0 was widespread on new phones, the most current specification of OpenGL itself was at 4.0. In general OpenGL on Android is 'behind' OpenGL on desktop computers.

Q: It looks like the only part you need root for is the "flash_image" command, right? (eg to add the modified recovery, this is the only reason you need root to do it)