What is an Android Phone ? Everything to Know
Anyone can answer the question "What is an Android Phone?". But the answer will not be complete in any dimension. Because an it is an electronic device as complex as a computer. In this I will talk about the technologies under the hood of an Android phone. You need to understand these because without this insight you cannot make a very good app for it.
The number of people using android phones is increasing day by day. This is because of the simplicity and the advanced features provided by them which will replace many other devices a person need to have in his daily life. Even though a smartphone looks simple it is not that simple inside. It is a very sophisticated device. It has more components even compared to a computer.
Seriously, there is a lot of work behind building a very good android phone. And a lot of things are happening inside this little device each second. But the user is not aware of it because of the abstraction, i.e. the user interface provided by the smartphones hides the complexity of its internal setup and building process. And this is one of the reasons for Android being the most popular smartphone operating system now.
You cannot even imagine the number of people working to improve Android only because it is an open source operating system. The official Android developers, Linux developers, ROM developers, modders, app developers, users everyone comes under this community.
Do you have any idea in improving any part of Android or do you want to make an app that would be useful to people? Then you need to know more about Android and the smartphones. A normal user also need to know about such things to use the smartphone is the right way. Users can also identify and troubleshoot problems by themselves if they know how things works.
What is a smartphone?
A phone which is smart? True, but that’s an old school definition. Technically a smartphone is a phone with an operating system running inside it. Is old Nokia classic a smartphone? No. Of course they have a software in it. But we call it a "firmware". Such phones have limited functionalities and cannot run an entire OS.
The firmware does some predefined things which is almost constant. Scientific calculators, toy pianos, game consoles, small MP3 players etc. have such firmwares. Another example is, the Modem we use to connect to internet has firmware but the Router which is becoming popular these days has an operating system. That’s why a router takes little bit more time to initialize but has much more control on the internet than a usual modem.
The first smartphone was IBM Simon. But smartphones became more popular when Nokia started building them. My first smartphone was Nokia 5230 running Symbian S60 operating system. I have to say Symbian was damn popular that time that made me reject to buy an android phone. I used to build J2ME (Java Micro Edition) apps for my phone as well as my dad’s LG GM200, which was not a smartphone but had Java support in it. Microsoft had built an OS based on Windows CE and there was iOS for iPhone as well. Later Nokia brought Symbian Belle but was not successful enough. But in the background Android was developing with a higher acceleration and was rolling out new sweeter versions.
As I mentioned earlier Android is an open source operating system. But some parts of it which is Google’s own apps and services are not open source. This is for security purposes I think. Anyway you will get the complete code in Android GitHub repository. You can download and compile your own build of Android by yourself but beware it is really a huge task in terms of bandwidth, memory and processing power.
As you may already know all Android versions are in alphabetical order and they are names of sweets. HTC Dream was the first android phone. It had early versions of Android. Android didn’t had code names until Cupcake except an internal code name for v1.1 called “Petit Four”. First publicly available Android version was Cupcake. and it was only for phone and not tablets. First android version designed for tablets was Honeycomb and it was not available for phones. From the next versions Android was available for both phones and tablets. Now the latest version is Android Nougat.
In each version Google adds many functionalities to Android. Many people work for this project from all around the world and they fix problems in the code and adds new features. This is done through Android’s GitHub repository.
A smartphone hardware is really complex. Let’s start from what you can see.
The first thing you see when you take a smartphone is the display with touch screen. The touch screens are of two types Resistive as well as Capacitive. In resistive touch screen you need to press a little bit harder to activate it. Early devices used resistive touch screens. It is very cheap too. But nowadays Capacitive touch screens are more common and they are obviously easier.
They usually come with a protective layer called Gorilla glass which will prevent scratches. Even a sharp knife can’t scratch the screen (But sand can! And DO NOT TRY THIS AT HOME !!). The layer is harder than metal. But it is only scratch proof. That means if you drop your phone the screen will probably shatter. Now there are shatter proof screen too. For most phones, screen is coupled with the display as a single module.
The display is now manufactured with many different technologies. What we need to know is the resolution. Resolution is the number of pixels (smallest dot) horizontally and vertically in the display. But the pixels can be of any size. So there is another term "Pixel Density". DPI (Dots Per Inch) is the unit for it. So if the DPI and Resolution is higher the picture clarity will be high. There are many other factors too.
Battery is the another important part. It seems almost all new android phones have non-removable battery. This is because, you can guess, the presence of operating system. An OS need to do many things before it is shutting down. You should not break its work in between by cutting the power. It may corrupt the files and make the phone unstable, but it is rare. So how I can forcefully turn off the phone? Press and Hold the power button for at least 20 seconds or may be less, it will force restart the device. Almost all manufactures implement this feature if the battery is non-removable. Some also place a red small panic button, which does the same thing, near the battery which is visible if you remove the back cover.
Batteries come in different capacities. mAh (milli ampere hour) is the unit to represent this capacity. That means if a battery is 2000 mAh it can provide energy to a device that uses 2000 mA (2A) for one hour of time. Usually Android phones uses less than 500 mA during normal usage. But It depends. So if your phone battery has higher mAh value that only means your battery has higher capacity and it does not mean your phone will have more uptime. This is because a bad software or even hardware can cause wake locks, heating issues and may draw more power from battery so that the effective usage time reduces.
Now the sensors. Sensors help the phone to understand about the environment and adapt itself to match the need of users. Android devices use many different sensors. I will list some of them and their uses.
Accelerometer: This sensor helps to detect the movements or acceleration of the phone. Phone can calculate the orientation of it using this information. This is how your phone knows whether you are holding your phone vertically or horizontally and rotates the phone screen accordingly.
Gyro: This little guy works along with accelerometer. Gyro gives the angle information with respect to the gravity of earth. But accelerometer is independent of gravity. So if we use the accelerometer and gyro together we will get the exact movement information. This technique is used to find the gestures such as shake and flip etc. Even accelerometer alone can do that. But it will not be accurate. That is why Virtual Reality apps like Google Cardboard insists the requirement of Gyro sensor in the phone. I’m so sad because my Moto G Turbo doesn’t have it.
Ambient Light: This sensor monitors the light intensity in its surrounding environment. This information is used to automatically adjust the brightness of the phone display.
Proximity: This sensor detects presence of any object very near to it. It will be near to the ear piece of the phone, may be next to the front camera. This is used to automatically deactivate display and touch screen when you bring your phone near to your ear when making a call.
Fingerprint: As you may already know this sensor detects the fingerprint of the user. Its common in new smartphone devices. This brings an easy way to lock and unlock smartphones.
Step: This sensor works like a pedometer, i.e. counts the number of footsteps you made. This is often used in health monitoring apps to calculate the amount of calorie you burned. But this sensor is very rare. I have seen this in my friend’s OnePlus One. Another alternative to this sensor is using accelerometer to detect the movements and count the steps. But compared to a step sensor it is not very accurate.
Magnetometer: This is also known as Compass sensor or Magnetic Field sensor. It works with the help of a Hall Effect sensor, I think. This gives the amount of magnetic field. And yes, it works like a compass too. That means it gives the direction to which your phone is headed. In Map apps this comes very handy. If your phone doesn’t have this sensor it will take some time to recognize the direction in the app. This is sensor is widely used in Virtual Reality apps too.
Temperature, Humidity, Pressure, Heart Rate: You don’t need explanation for these.
There are many techs in a smartphone for connectivity. One is of course the mobile network interface (RIL – Radio Interface Layer). There will be GSM/CDMA for 2G, WCDMA for 3G, 4G LTE etc. There are many extensions to them which enhances the internet bandwidth, call quality etc. They are GPRS, EDGE, HSDPA, HSUPA, HSPA, VoLTE etc. Many of these terms are used in different ways, you just need to know these things exist. Other common technologies are GPS, Bluetooth and WiFi. Some phones have NFC (Near Field Communication) which offers high speed data transfer to other devices which is close to it. Some phones even have Infrared Communication called IrDA. Apps that convert the phone as a universal remote control for TV, A/C, Home Theaters etc. use this feature. It is very rare.
USB comes under wired connectivity. When you plug phone into computer it is detected as MTP (Media Transfer Protocol) or PTP (Picture Transfer Protocol) device. This is not a comfortable access technique, at least for me. It is not like accessing a normal pendrive or an SD card reader. This is because of a technical difficulty. A storage device cannot be mounted at two places at the same time.
Do you remember when you enable mass storage mode in old Nokia phones SD card becomes disabled in phone? What Nokia does is it unmount the card in phone and allow computer to mount it. But this is not the case for an Android device. Because it cannot break the connection to a storage device that easily. Here comes MTP for the rescue. MTP acts like an agent. Phone mounts the SD card and computer access the files through phone using MTP. I hope you got the point.
USB connectivity also enables one of the important features of Android from developer perspective – USB Debugging. In technical terms Android Debug Bridge (ADB). It is used to get more internal information about device and can do many other things on phone from computer. We’ll discuss this later.
Memory or RAM is another important part of a smartphone. When you open an app it is loaded to RAM and starts execution. When you switch to another app does this app leaves RAM? No. It is actually kept in the RAM, cached. What if you go to settings and force stop it? Yes, it is removed from RAM. So if you launch many apps the free RAM will decrease and phone will become unstable? No. This is where Android’s efficient memory management takes place.
When you launch an app Android checks for available RAM. If it is low, then the cached apps will be automatically removed from RAM to make room for the newly launched app. Then why you need more RAM and what is the use of caching? Well, if the phone has more RAM then more apps can be cached. So when you switch from one app to another switching will happen in no time because it is already in RAM. Otherwise Android need to load the app from internal memory to RAM which takes a little bit of time. This is the only benefit of having more RAM. You can also install apps that require huge RAM too. I haven’t seen any apps like that, though.
There is part of apps which stays in memory and continues to execute in background (not cached) which is called Services. Services does the background tasks for an app. For example, WhatsApp’s service checks for new messages frequently. But the app may be cached in memory and may not be executing. When Service detects there is a new message it launches the app from RAM. That means if you have many apps with many background services then it will eat up your RAM. But 1 GB of RAM is enough unless you are very aggressive.
Now the Storage. Storage part of smartphone includes the Internal flash memory and external SD cards. As you know Internal memory holds the operating systems files as well as user files. But Android has partitioned this space intro different blocks for – Linux Kernel, Android OS, Data (for apps + part that is accessible to user as Internal Storage) and several small partitions for bootloader and internal purposes.
Phone formats each partition in a specific way (File System) as in computer. In computer we have FAT32 and NTFS. Similarly, for Android there is EXT4. Almost all Linux operating system uses EXT4 file system. Another one is F2FS which is used by some manufactures like Motorola (Moto Google Play edition phones uses EXT4) and has support for FAT as well as NTFS (Only after Lollipop, I believe). Usually SD cards will be formatted as FAT32.
The new Android Nougat has a different file system called SquashFS. It provides very good compression. That means the ROM will be much smaller than before. But I believe it will be more difficult to root and add system level modifications to Android OS. Let’s see what happens. And it is the same file system used by Ubuntu, Debian etc. in their installation discs to keep the size as low as possible.
Now let’s talk about the Camera. We usually use the word MP (Mega Pixels) to tell others how power full the camera is. But this is not the only thing that tells the ability of an image sensor. There is aperture, focus modes – an auto focus camera take better pictures than a fixed focus, ISO, noise reduction, shutter speed and lot more.
But in almost all branded phones these things are included in a descent quality. Increase in any of these functionalities will give more clarity to the photos but only to an extent. If a photo is really good, 75% of credit goes to the one who took the photo. Because if you know how to take a better picture then you can do that with almost every smartphone camera. Don’t think the phone will do some magic and get you a mind blowing shot in just a click. It may happen in future, who knows!
Another interesting in Android is the Camera2 API. It first appeared in Lollipop. It basically gives you manually control every feature of camera including the focus. That means you can adjust the focus to get blurred background just like in DSLR. I’m not talking about the software method. This happens in the image sensor, the hardware itself. But unfortunately such a sensor is much more complicated and expensive. So it is also very rare. I have seen this in some Xiomi phones and OnePlus One. And this feature was not bad at all.
I’m not talking about speakers. You know about it. There are two. And in new android smartphones there are two microphones too. One is for usual audio input. Other one is for sensing background noise while you are in a call. So the final output is = actual audio from primary mic – noise sound from secondary mic (this is not a simple process as this equation!). The secondary mic will be usually on top. It has another purpose too. When you record a video this is used to give stereo audio and the top microphone will be the left track.
So these are some general components of a smartphone hardware. There are many more too and many I don’t know.
Now, tell me can you find any other device which has more components than that of a smartphone? Negative.
Software part of a android phone is even more complicated than hardware. Because it has to manage a lot of things! Developers have written gigabytes of code for this. Try to imagine the amount work an android smartphone does.
The software contains many other parts.
When you turn on the phone the first thing that is being executed is bootloader. It does many things. It can be used for flashing ROMs (more specifically, system images), recoveries etc. In normal situations bootloader simply loads the Android OS. But if you hold the key combination, may be Power + Vol Up (it is different for different brands) it will not load the OS instead shows the bootloader menu. From there you can choose to do various things such as boot to recovery, factory reset etc. So in short bootloader decides what should be loaded Android or Recovery. In some phone manufacturers such as Samsung, have modified their bootloader in a different way.
Recovery is technically a small operating system. But it has very limited functionality. Its job is to manage or troubleshoot the OS. In case of any software trouble in the phone you can always boot into recovery from bootloader and flash the ROM once again to get things back to work (that’s actually the last resort). You can also take backup of the current ROM, format any partitions etc. There are many recovery softwares such as ClockWorkMod (CWM), Team Win Recovery Project (TWRP) etc. But by default android phones will have the recovery designed by the manufacturer which is pretty much useless.
You may find some similarities between recovery and bootloader in terms of its features. Yes. That’s right. But the main difference is bootloader works at hardware level where are recovery works at operating system level. That means bootloader can access core hardware stuff whereas recovery cannot. But recovery is enough for almost all mad stuff that can be done in Android.
Linux kernel lives in Boot partition. It has all the functionalities for managing hardware parts and organizing it the efficient manner. Yes, it is the mighty Linux, the masterpiece! After bootloader completes its job Kernel starts execution. It is the core of an operating system. Kernel coordinates every other parts of the android phone and contains the drivers for the hardware components such as camera, sensors, speakers, display and everything. After kernel completes loading and initialization of hardware components Android OS starts to execute. Now the boot animation will show up. Till then the still image, often referred to as boot logo will be shown in the screen.
Android OS lives in System partition. It has very sophisticated architecture which includes the Libraries, Android Run Time or Dalvik, Zygote, Android Framework and lot more.
C and C++ is used to code most part of Android OS including kernel, recovery, libraries, run times etc. Java is used to build the apps, frameworks etc. In almost every technology at least the core part will be programmed in C. That means C rules the programming kingdom.
So learn Java to become an app developer but master C to contribute to Android OS. When you build apps you can use C to improve some operations in the app too. I will talk about it later.
Another partition of flash memory is Cache. It stores data, which is output of some difficult process, for a little more time. For example, if you are browsing a website then browser will load the images by downloading it from the server. It will also cache it in the cache partition. So if you open that website again browser will load the image from the cache. That means browser doesn't download the image again. So there is an improvement in page load time and decrease in the data usage.
There are many types of caches in Android. An important one is Dalvik Cache. It holds Optimized/Compiled app components. One thing I noticed is that vendors gives more size to the cache partition. As far as I remember my Moto G 1st gen had 600MB of cache partition. I have never seen cache being used more than 200MB. That means even when I'm struggling with low storage space 400 MB is left free in cache. I don’t know why they do that.
Data partition has two sections. One for apps private data next for user which we call as Internal Storage. An app can access only its own data. It cannot read or modify any other apps data. This is why we cannot backup data of an app in a non rooted phone. When we root the phone the apps like Titanium Backup gain the permission to access the data of other apps and is able to do anything on it. App stores its static files and expansion files (obb) which is either large or are not that secret in the Android folder inside Internal Storage.
A smartphone is a phone with an operating system running inside it. It is as powerful as a computer. Android revolutionized smartphone world with its simplicity and amazing features. Android coordinates variety of hardware components with its sophisticated softwares. But it hides all the complexity using its simplified user interface. Android gives best user experience to the users and humongous collection of tools and functionalities for developers to extend the operating system features to a whole new level.
If you found this article useful then don’t forget to share it. For updates you can follow me in social medias or subscribe to email notification.
To be continued..