HDMI CEC in Android

Consumer electronic control (CEC) is a feature of the HDMI interface 1.3 standard (high definition multimedia interface), which is used to transmit audio/video data for multimedia consumer products such as HDTV, DVDs, satellite receivers etc. For example, One Touch Play lets a media source device turn on the TV and switch its input port automatically, so you don’t have to search for the TV remote to switch from your Chromecast to Blu-ray player or using the remote control of a CEC enabled TV, you can control the set-top box or DVD player, controlling the TV from HDMI-CEC enabled android device via HDMI CEC application. The most commonly used CEC commands are : One Touch Play,System Standby, One Touch Record, System Information,Tuner Control,Routing Control, OSD Display, System Audio Control etc. This article explains the basic of HDMI CEC protocols and how this can be implemented in android framework.

[Read More]

Serial UART Basics

Comparsion in Windows,Linux and Android platform

Introduction A serial port is a serial communication interface through which information transfers in or out one bit at a time. This article explains implementation serial port communication application in different platforms android, Linux and Windows. Serial UART test application The below section explains basic steps in writing serial port applications in Linux, Windows and android (command line application). Linux and Android Like all devices, UNIX provides access to serial ports via device files. [Read More]

Bluetooth SCO in Android

Introduction The Bluetooth architecture transfer data in two different ways. They are Asynchronous Connectionless (ACL) Synchronous Connection-Oriented (SCO) Asynchronous Connectionless (ACL) ACL packets are the basis of communication in Bluetooth. In this method, packets are transmitted without worrying about time slot; This means, two Bluetooth devices, connected as master and slave, can send packets to each other, but neither side expects a packet in any particular time frame. [Read More]

How to add custom hardware codec to Android Framework?

This article explains about media architecture in Android platform and thereby explains the steps to add your own vendor specific hardware encoder/decoder to the Android framework as OpenMAX components.

What is a codec?

A codec is hardware device or a computer program which process input data into output data. A codec that encodes a data stream or a signal for transmission and storage, possibly in encrypted form is called encoder, and the decoder function reverses the encoding for playback or editing. Codecs are widely used in applications such as video conferencing, streaming media, and video editing applications. Following are the few different types of video codec : H.264 Encoder and Decoder, MPEG Encoder and Decoder, MJPEG Encoder and Decoder.

[Read More]

Acoustic Echo Cancellation in Android using webRTC

Echo cancellation is method in telephony/VOIP to improve voice quality by preventing echo from being created or removing it after it is already present.

What is Acoustic echo?

Echo is a sound or sounds caused by the reflection of sound waves from a surface back to the listener. This happens in telephony/VOIP application, when a speaker phone/loud speaker is used, the microphone receives the voice signal from speaker. This results in acoustic echo for the person speaking in the far end.

[Read More]

Android Audio Framework Architecture

An overview of Audio HAL

This article highlights Android audio architecture, audio frameworks, role of audioflinger, audio HAL and its implementation details.

What is Android Audio Architecture?

In general, it is Audio signal processing which involves lot of operations and provide various functionalities such as playing music, recording microphone audio,real-time voice communication, adding audio effects such as echo cancellation, noise suppression etc. The audio architecture in android has to take care of many aspects such as supporting more hardware such as HDMI, earpiece, headset, speaker, mic, Bluetooth SCO, A2DP ectc, relat-time requirements and supporting different software like media player/recoder, VIOP application, SIP application and phone calls.

[Read More]

Position Independent Executable feature from Android Lollipop and later

PIE is a useful security feature, which randomize the address space hence it significantly more difficult for an attacker to exploit bugs in a program.Android 5.0 now requires all dynamically linked executable to support PIE (position-independent executable). This enhances Android’s address space layout randomization (ASLR) implementation. So if command line application complied with out PIE support will through the following error when we try to run them. Error: only position independent executables (PIE) are supported. [Read More]

Understanding BLE Connection

This post looks at Bluetooth Low Energy (BLE) link layer states. There are two forms of Bluetooth wireless technology systems. They are Basic Rate(BR) and Low Energy (LE) communication. This article summaries the connection procedure and its corresponding states . Basically BLE is a star topology network in which master device manages the connection, and can be connected to multiple slaves and slave device can only be connected to one master. Based on the different states, link layer in BLE stack is classified into below sates.

[Read More]

Disable/enable software navigation keys in Android

If you want to play with turning on or off with the little back, home, menu buttons on your Android Lollipop device (Note: You need to give root access to do this), then below steps will be useful for you. Connect your device via adb shell. In the adb shell terminal give the following command to enable/disable these navigation keys. //To turn ON soft keys $ setprop qemu.hw.mainkeys 0 //To turn OFF soft keys $ setprop qemu. [Read More]

Configuring Ethernet in Android

In most of the Android phone, its supports WiFi and data connections for internet connectivity in settings menu. But even though you have USB to Ethernet you may not find Ethernet settings in most of the android phones. Here are the steps to configure Ethernet for static IP. For this you need to access you phone via ADB shell. Commands $ ndc resolver setnetdns eth0 $ ifconfig eth0 up $ route add default gw dev eth0 Below is the example of configuring an static ip using above steps. [Read More]