Monthly Archives: June 2013


Pengiriman Menggunakan Stomp pada Android

Kali ini akan dijelaskan cara mengirimkan text dari android ke broker ActiveMQ menggunakan stomp. Telebih dahulu yang dilakukan adalah download perlengkapan yang dibutuhkan.

  1. ActiveMQ, dapat diperoleh disini atau mirror
  2. Stomp-j, dapat diperoleh disini atau mirror

Setelah keduanya tersedia, extract activemq, kemudian tambahkan code berikut pada activemq.xml

<transportConnector name="stomp" uri="stomp://0.0.0.0:61613"/>

pada <transportConnectors>, sehingga menjadi:

<transportConnectors>
	<transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
	<transportConnector name="stomp" uri="stomp://0.0.0.0:61613"/>
 </transportConnectors>

Kemudian impan dan jalankan activemq:

13060504.01

Buat project pada android dengan nama Stomp, kemudian copy stompj-0.5.jar pada directory libs.

13060504.02

Klik kanan pada stompj-0.5.jar -> Build Path -> Add to Build Path.

13060504.03

Patikan pada properties project, lib stomp-j sudah ada.

13060504.04

Ganti code pada layout main.xml dengan code berikut berikut:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="Kirim" />

</RelativeLayout>

Ganti code pada MainActivity.java dengan code berikut:

package org.akhal.stomp;

import pk.aamir.stompj.Connection;
import pk.aamir.stompj.StompJException;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

	Button  bt1;
	Connection con;
	ReadThread mReadThread;
	Context context;
	Handler threadHandler;
	 
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		context = this;
		threadHandler = new Handler() {
			 @Override
			 public void handleMessage(Message msg) {
				 switch (msg.what) {
				 	case 0:
				 		Toast.makeText(getApplicationContext(), "Gagal mengirim text", Toast.LENGTH_LONG).show();
				        break;
				 	case 1:
				 		Toast.makeText(getApplicationContext(), "Text berhasil dikirim", Toast.LENGTH_LONG).show();
				        break;
				 }
			 }
		};
		
		con = new Connection("192.168.102.80", 61613);
		bt1 = (Button) findViewById(R.id.button1);
		bt1.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				mReadThread = new ReadThread();
				mReadThread.start();
			}
		});
	}
	
	private class ReadThread extends Thread {
		@Override
		public void run() {
			super.run();
			  try {
				con.connect();
				con.send("Test pengiriman menggunakan stomp", "/queue/akhal");
				threadHandler.sendEmptyMessage(1);
			} catch (StompJException e) {
				threadHandler.sendEmptyMessage(0);
			}
		}
	}

}

Jangan lupa, atur permission pada file manifest, tambahkan kode berikut:

<uses-permission android:name="android.permission.INTERNET"/>

Sehingga menjadi:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.akhal.stomp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="org.akhal.stomp.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Setelah semuanya sudah selesai, kemudian running program. Hasilnya tampak pada gambar dibawah ini.

13060504.05

 

Cek pada broker ActiveMQ, ketikkan url: http://localhost:8161/admin/queues.jsp

13060504.06

13060504.07

 

Untuk sourcode lengkapnya dapat di download disini


Membuat notification pada Android

Untuk menampilkan notification pada android cukup mudah, berikut adalah program:

private void SetNotification() {
	notifManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
	
	int icon = R.drawable.ic_launcher;
    CharSequence show = "Running";
    long when = System.currentTimeMillis();
    Notification notification = new Notification(icon, show, when);
	    
    CharSequence title = "Notification";
    CharSequence text = "Test notification";
    Intent notificationIntent = new Intent(this, MainActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(this,0, notificationIntent, 0);

    notification.setLatestEventInfo(context, title, text, contentIntent);
    notifManager.notify(NOTIFICATION_EX, notification);
}

Panggil setNotification() pada onCreate(). Agar program keluar ketika menekan tombol back, tambahkan syntax berikut:

@Override
protected void onPause() {
    super.onPause();
    if (isFinishing()) { 
    	notifManager.cancel(NOTIFICATION_EX);
    }
}

Berikut adalah source code lengkapnya:

Download