Skip to main content

Android ChatHead Tutorial - (1) Setup ChatHead

Source code: Github (branch "step-1")

Step 1: Setup an Android Project

Android ChatHead requires "SYSTEM_ALERT_WINDOW" permission which is available since API level 1, so minimum API 7 is fine.

Just next, next next... and create a blank activity :)

Step 2: Add ChatHead Service

If you want to know more details about ChatHead service. Read this article by Pierre-Yves Ricau.
Create a ChatHead Class that extends Service.

Create ChatHead layout file.

Add ChatHeadService to AndroidManifest.xml

<service android:name="com.gbinghan.androidchathead.ChatHeadService" ></service>

Add SYSTEM_ALERT_WINDOW to AndroidManifest.xml
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

Your AndroidManifest.xml should look like this.

Step 3: Add a button to launch the service :)

Add OnClickListener in Activity file java/com/gbinghan/androidchathead/
        findViewById( View.OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, ChatHeadService.class);
                intent.putExtra("title", "Hello");
                intent.putExtra("text", "ChatHead");

Add the button in layout file /res/layout/activity_main.xml.

Step 4: Run!

You should see this on your emulator/device.

If you use different package name, remember to replace all instance of "gbinghan".



Popular posts from this blog

Recent activity on my Gmail just revealed that there's this app "Authorized Application (" from IP address assessing my Gmail.

The IP address is from a Amazon server (IP Lookup).

And blacklist check ( shows that the IP is clean too.

Clicking on the "Manage Account Access" didn't give any information on the application "".

After Googling, it appears that the app is Mailbox (source:!topic/gmail/9LVW_etXyTE)

To make things easy, Google should show the applications with their ID.

Backup MySQL to Azure Storage in 30 Seconds

Step 1. Disable password prompt for "mysqldump command"mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect 1. Run "vi ~/.my.cnf"
2. Add the following lines

[mysqldump]user=mysqluser password=secret
3. For Bitnami, you'll need to append the following line in "/opt/bitnami/mysql/my.cnf"

!include ~/.my.cnf
4. Try running to see if the command works.
mysqldump --all-databases > /home/bitnami/backups/db-backup.sql

Step 2(a). Install Azure-CLI Prerequisites: Installing npm.sudo apt-get update sudo apt-get install nodejs sudo apt-get install npm Note: If you facing issue while installing nodejs/npm on Ubuntu 12.04, you can refer to his article for alternative way to install, or this

Install Azure CLI.npm install azure-cl…

Generate GoDaddy SSL Certificate (.crt) for Azure Websites (.pfx)

Step 1: Getting GoDaddy SSL cert.
Let's say you have a domain name of You'll first need to generate the the .csr file for GoDaddy with the following command:

openssl req -new -newkey rsa:2048 -nodes -keyout -out

This gives you 2 files: - This is the private key - This is the Certificate Signing Request

Copy the content of file to the SSL signing authority (GoDaddy).

Once approved, GoDaddy give you back a .zip file with the following 2 files:

18f1c77f369c0b59.crt - This is your cert
gd_bundle-g2-g1.crt - This is the GoDaddy Certificate Chain

Step 2: Convert a CERT/PEM certificate to a PFX certificate
openssl pkcs12 -export -out -inkey -in 18f1c77f369c0b59.crt

Step 3: Certificate to Upload to Azure.

Step 4: Assign SSL Bindings.

Step 5: Done!