Install JDK 7.0 di Ubuntu 11.10

Para developer yang mau membangun aplikasi berbasis java harus punya yang namanya JDK. untuk informasi lebih jauh tentang JDK dapat ditemukan di sini, sedangkan untuk mendownload jdk silahkan ke sini.

Tahapan dalam instalasi JDK

- masuk ke folder tempat JDK yang telah didownload

- rubah permission nya agar bisa di eksekusi

sudo chmod +x jdk-7-ea-bin-b125-linux-i586-13_jan_2011.bin

- eksekusi file jdk

sudo ./jdk-7-ea-bin-b125-linux-i586-13_jan_2011.bin

- pindahkan folder jdk hasil eksekusi ke direktori /usr/local (tidak harus di lokasi tsb)

mv jdk1.7.0/ /usr/local/

- instal konfigurasi  alternatif java yang baru

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/jdk1.7.0/bin/java" 1

- update

sudo update-alternatives --set java /usr/local/jdk1.7.0/bin/java

- instal konfigurasi alternatif javac yang baru

sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/jdk1.7.0/bin/javac" 1

-update

sudo update-alternatives --set javac /usr/local/jdk1.7.0/bin/javac

- cek status java dan javac yang baru

- update alternatif java dan javac yang baru

sudo update-alternatives --config java
sudo update-alternatives --config javac

- setting java environtment path  dengan mengedit file environment di folder /etc/ agar dapat dikenali diluar (seperti setting class path di windows)

sudo gedit /etc/environment

berikut screenshot config path nya :

proses instalasi selesai, sekarang jdk udah bisa digunakan :D .

Install SiS Mirage Driver di Ubuntu 11.10

para pengguna notebook yang menggunakan VGA SIS biasanya menderita ketika menggunakan linux( saya mengalaminya :| ), karena resolusi layar yang berukuran 800×600 yg disebabkan driver VGA nya tidak di support oleh Linux :( . sebenarnya masalah ini bukan karena linux nya, tetapi SIS lah yang memang tidak menyediakan driver  VGA besutannya untuk linux. kebanyakan driver vga yang biasa digunakan untuk linux dikembangkan oleh mantan engineer SIS yang sudah keluar  (kata orang sih :D ).

berikut tahapan – tahapan menginstal VGA sis Driver di linux dalam kasus ini menggunakan linux UBUNTU 11.10 . 

- install komponen git untuk ubuntu

sudo apt-get install git xorg-dev mesa-common-dev libdrm-dev libtool build-essential

-clone github project SIS Driver

git clone git :/ / github.com/hellnest/xf86-video-sismedia-0.9.1.git

- kemudian ketikan perintah2 berikut :

cd xf86-video-0.9.1-sismedia
. / Configure - prefix = / usr - disable-static
make
sudo make install

restart komputer, perhatikan apa yang terjadi. namun sampai disini masih menyisakan bug ketika menggunakan aplikasi multimedia ( pemutar Video ). berikut cara penyelesainnya :

cd xf86-video-0.9.1-sismedia 
cd src 
wget http://pastebin.com/raw.php?i=U1SEjXQy-O XvFix.patch 
patch <XvFix.patch 
cd ..
make
sudo make install

selesai sudah ;) . sebenarnya masih ada beberap opsi lain dalam menyelesaikan masalah seperti ini. namun menurut pengalaman saya,cara ini yang memberikan hasil paling baik #halah. sumber forum linux italia

Design Pattern – Singleton

dari pada malam minggu galau ga jelas :’(, mending ngepost blog. berpikir sejenak mau ngepost apa-an. tringgg ahaa (dpet ide #halah)  gmn klo ngebahas design pattern. oke serius ehm…

lahirnya paradigma OOP(Object Oriented Programming) memunculkan banyak opsi solusi dalam menyelasaikan masalah dalam dunia pemrograman. dalam menyelesaikan suatu kasus ditemukan suatu pola yang sama namun fleksibel dalam penerapannya. pola tersebutlah yang disebut dengan design pattern / pola design.

menurut beberap reverensi design pattern pertama kali diperkenalkan oleh “Gang of Four” yang terdiri dari 4 pakar software enggineering yaitu Erich Gamma, Richard Helm, Raph Johnson  dan John Vlissides. konsep ini muncul ketika mereka menemukan suatu pola yang sering muncul dalam kode program yang ditulis.

Design pattern pertama kali diperkenalkan oleh Erich Gamma, Richard Helm, Ralph Johnson, dan John Vlissides yang dikenal dengan “Gang of four”. Mereka mendapati di dalam kode program mereka, terdapat suatu pola yang sering muncul. menurut *GoF*  terdapat 23 design pattern yang yang terbagi dalam tiga kategori yaitu creational, structural dan behavior. berikut daftar ke 23 design pattern tersebut.

Creational

1. Singleton
2. Factory Method
3. Abstract Factory
4. Builder
5. Prototype

- Structural
6. Bridge
7. Adapter
8. Composite
9. Decorator
10. Facade
11. Proxy

- Behavioral
12. Command
13. Template Method
14. Chain of Responsibility
15. Interpreter
16. Mediator
17. Iterator
18. Memento
19. Flyweight
20. Observer
21. Visitor
22. Strategy
23. State

salah satu pattern yang sering digunakan adalah Singleton. pattern ini digunakan ketika ditemukan suatu resource yang hanya digunakan oleh satu instance objek saja. penggunaan resource database merupakan salah satu contoh penggunaan pattern singleton. dalam penggunaan resource pengaksesan database, digunakan satu instance saja  yang digunakan oleh objek lainya dalam melakukan koneksi ke database. hal ini dapat mencegah pemborosan memori.

oke langsung saja, implementasi  sederhana singleton pada bahasa pemrograman Java. kenapa java ??? ya terserah saya :D

/**
 *
 * @author ulhack
 */
    public class DBConnection {
        // instan properti yang berfungsi sebagai instnce dari kelas DBConnection
        private static DBConnection myConn;

        //konsturktor dibuat private untuk mencegah instansi objek
        private DBConnection() {
            //...
            //...
        }

        public static DBConnection getInstance() {
            //memastikan hanya ada satu instan yang dibuat
            if (myConn == null) {
                myConn = new DBConnection();
            }
            return myConn;
        }

        //...
        //..
    }

selesai sudah . dilain waktu kita akan membahas pattern lainya ;)

String Matching with Brute Force Algorithm

hi guys, this time we will discuss how to find a pattern in a string with brute force algortihm. fairly simple way,we have to compare one by one pattern that we want on a string.
for example:
text: informatics engineering
pattern: tic
result: tic pattern was found at index 8

 

procedure StringMatch(input P : string, T
: string,
n, m : integer,
output idx :
integer)

Deklaration
i : integer
found : boolean
Algorithm:
i<-0
found<-false
while (i <= n-m) and (not found) do
j<-1
while (j <= m) and (Pj = Ti+j ) do
j<-j+1
endwhile
{ j > m or Pj != Ti+j }
if j = m then { string match not found }
found <-true
else
i<-i+1 {sliding patern one charachter }
endif
endfor
{ i > n – m or found }
if found then
idx<- i+1
else
idx<- -1
endif

this implementation in c language :
 #include<cstdlib>
#include <iostream>

using namespace std;

void stringMatch( char * Teks, int pTeks, char * Pola, int pPola )
{
  int i, j;
  i=0;
 while( i <= ( pTeks - pPola ))
  {
    j=0;
    while(j < pPola)
    {
      if ( Teks[i + j] == Pola[j] ){

        j++;
      }
      else
        break;
    }
    
    if ( j == pPola )
     cout<<" PATTERN "<<Pola<<" WAS FOUND at index : "<<i+1<<endl;

    i++;
  }
}

int main( )
{
  stringMatch( "informatics engineering", 23, "tic", 3 );

     system("PAUSE");
    return EXIT_SUCCESS;
}


happy coding :)

Determine the Closest Pairs Using Brute Force Algorithm

hi guys, this time we try to solve the case of searching the closest pair from somepoint with a brute force algorithm. okay following the short theory :) :
ie there are n points on the coordinates (x, y). The following picture:

to find the distance between two points then we use the Pythagoras’ theorem
r = (a ^ 2 + b ^ 2) ^ (1/2)
thus, if we apply the point: will be:

to determine the distance to the nearest we have to compare all the distances between the points.
to understanding these theory let’s see the psoudecode :

procedure CariDuaTitikTerdekat(input P : SetOfPoint,
n : integer,
output P1, P2 : Point)
{
type Point = record(x : real, y : real)
type SetOfPoint = array [1..n] of Point
}
Deklaration
d, dmin : real
i, j : integer
Algorithm:
dmin<-9999
for ifor jdif d < dmin then { update closet pair }
dmin<-d
P1<-Pi
P2<-Pj
endif
endfor
endfor

This is  implementation in c + + :

#include <cstdlib>
#include <iostream>
#include <math.h>
#define SIZE 100
using namespace std;

class Point
{
  public :
  int x, y;
};

void closestPair( Point * p, int n, Point &p1, Point &p2 )
{
  float d, dmin;
  int i, j;

  dmin = 9999;
  for ( i = 1; i < n; i++ )
  {
    for ( j = i + 1; j     {
      d = sqrt( pow(( p[i].x - p[j].x ),2) + pow(( p[i].y - p[j].y ),2) );
      if ( d < dmin )
      {
        dmin = d;
        p1 = p[i];
        p2 = p[j];
      }
    }

  }
}

int main(int argc, char *argv[])
{
    int n;
  Point p[SIZE];
  Point p1,p2;
  cout<>n;
  for(int i=1;i<=n;i++){
   cout<<"point "<<i<>p[i].x;
   cout<<"point "<<i<>p[i].y;
  }
  closestPair(p,n, p1, p2);
  cout<  cout<  cout<<endl;
  cout<  cout<
    system("PAUSE");
    return EXIT_SUCCESS;
}


see you next time :D

CRUD SQLite di Android

kali ini kita akan mencoba operasi CRUD SQLite pada android. pasti udah pada tau kan apa itu SQLite, kalo belum bisa dilihat disini

untuk referensi dan dokumentasi nya bisa dilihat di sini :

http://www.sqlite.org/

http://www.sqlite.org/docs.html

http://sqlitebrowser.sourceforge.net/

pada sample kali ini kita akan melukakan operasi CRUD pada entitas mahasiswa yang beratribut nim, dan nama.

pertama kita buat project android. setelah memebuat project, kita mendesain UInya menggunakan xml yang ada di main.xml, berikut kodenya :

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent" android:layout_height="fill_parent">

	<LinearLayout android:orientation="vertical"
		android:layout_width="fill_parent" android:layout_height="fill_parent">

		<TextView android:layout_width="fill_parent"
			android:layout_height="wrap_content" android:text="@string/hello" />
		<TextView android:text="nim : " android:id="@+id/textView1"
			android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
		<EditText android:id="@+id/editText1" android:layout_width="match_parent"
			android:layout_height="wrap_content">
			<requestFocus></requestFocus>
		</EditText>
		<TextView android:text="nama : " android:id="@+id/textView2"
			android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
		<EditText android:id="@+id/editText2" android:layout_width="match_parent"
			android:layout_height="wrap_content"></EditText>

		<LinearLayout android:orientation="horizontal" android:layout_height="wrap_content" android:layout_width="match_parent">
		<Button android:id="@+id/btnSave" android:text="simpan"
			android:layout_width="wrap_content" android:layout_height="wrap_content" />
		<Button android:layout_width="wrap_content" android:text="ubah" android:layout_height="wrap_content" android:id="@+id/btnEdit"></Button>
		<Button android:text="hapus" android:id="@+id/btnDelete" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
		<Button android:text="refresh" android:id="@+id/btnRefresh" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
		</LinearLayout>

		<LinearLayout android:orientation="horizontal"
			android:layout_width="fill_parent" android:layout_height="wrap_content"
			android:layout_gravity="center">
			<TextView android:layout_marginTop="20px"
				android:layout_width="fill_parent" android:layout_height="wrap_content"
				android:layout_weight="1" android:text="nim" android:gravity="center"></TextView>
			<TextView android:layout_marginTop="20px"
				android:layout_width="fill_parent" android:layout_height="wrap_content"
				android:layout_weight="1" android:text="nama" android:gravity="center"></TextView>
		</LinearLayout>
		<LinearLayout android:orientation="horizontal"
			android:layout_width="fill_parent" android:layout_height="fill_parent">
			<TextView android:id="@+id/tNim" android:layout_marginTop="5px"
				android:layout_width="fill_parent" android:layout_height="wrap_content"
				android:layout_weight="1" android:gravity="center"></TextView>
			<TextView android:id="@+id/tNama" android:layout_marginTop="5px"
				android:layout_width="fill_parent" android:layout_height="wrap_content"
				android:layout_weight="1" android:gravity="center"></TextView>
		</LinearLayout>
	</LinearLayout>
</ScrollView>

setelah mendesain UInya, selanjutnya kita membuat suatu kelas helper yang menghandle setiap request ke database, misal DBHelper.java

package com.ulhack.sqlite;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBHelper extends SQLiteOpenHelper{
private static final String DATABASE_NAME = "basisdata";
private static final int DATABASE_VERSION = 1;
private final static String TABLES []={"Nim","Nama"};
public DBHelper (Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}

public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
}

public void createTableMahasiswa(SQLiteDatabase db){
db.execSQL("CREATE TABLE if not exists Mahasiswa (Nim TEXT PRIMARY KEY, Nama TEXT);");
}

public void addDataMahasiswa(SQLiteDatabase databasis, String nim, String nama){
ContentValues NilaiBaru = new ContentValues();
NilaiBaru.put("Nim", nim);
NilaiBaru.put("Nama", nama);
databasis.insert("Mahasiswa", null, NilaiBaru);
}

public void editDataMahasiswa(SQLiteDatabase databasis, String nim, String nama){
ContentValues UbahNilai = new ContentValues();
UbahNilai.put("Nama", nama);
databasis.update("Mahasiswa", UbahNilai, "Nim ="+nim, null);
}

public void deleteDataMahasiswa(SQLiteDatabase databasis, String nim){
databasis.delete("Mahasiswa", "Nim ="+nim, null);
}

public Cursor getAll(SQLiteDatabase db){

return db.query("Mahasiswa", TABLES, null, null, null, null, null);
}
}

terlihat setiap operasi untuk proses CRUD di handle di kelas ini. selanjutnya kita mengubah kelas activity nya(di src/nama_package). berikut kode lengkapnya :

</pre>
package com.ulhack.sqlite;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class SikiliteActivity extends Activity {
private SQLiteDatabase db;
private DBHelper pustakaDB;
private EditText nim, nama;
private Button btnAdd, btnEdit, btnDelete, btnRefresh;
private TextView tNim,tNama;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

pustakaDB = new DBHelper(this);
db = pustakaDB.getWritableDatabase();
pustakaDB.createTableMahasiswa(db);

nim = (EditText)findViewById(R.id.editText1);
nama = (EditText)findViewById(R.id.editText2);

tNama = (TextView)findViewById(R.id.tNama);
tNim = (TextView)findViewById(R.id.tNim);

btnDelete = (Button)findViewById(R.id.btnDelete);
btnRefresh = (Button)findViewById(R.id.btnRefresh);
btnEdit = (Button)findViewById(R.id.btnEdit);
btnAdd = (Button)findViewById(R.id.btnSave);

getAll();
buttonEvenListener();

}

private void getAll(){
String fnim="", fnama="";
Cursor cursor = pustakaDB.getAll(db);
while(cursor.moveToNext()){
String nims = cursor.getString(0);
String namas = cursor.getString(1);
fnim +=nims+"\n";
fnama +=namas+"\n";

}
tNim.setText(fnim);
tNama.setText(fnama);

}

private void buttonEvenListener(){
btnRefresh.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
// TODO Auto-generated method stub
getAll();
}
});
btnDelete.setOnClickListener(new OnClickListener() {

public void onClick(View arg0) {
// TODO Auto-generated method stub
String isiNim = nim.getText().toString().trim();
pustakaDB.deleteDataMahasiswa(db, isiNim);
Toast.makeText(SikiliteActivity.this, "data berhasil dihapus", Toast.LENGTH_SHORT).show();
getAll();
}
});
btnEdit.setOnClickListener(new OnClickListener() {

public void onClick(View arg0) {
// TODO Auto-generated method stub
String isiNim = nim.getText().toString().trim();
String isiNama = nama.getText().toString();
pustakaDB.editDataMahasiswa(db, isiNim, isiNama);
Toast.makeText(SikiliteActivity.this, "data berhasil dirubah", Toast.LENGTH_SHORT).show();
getAll();
}
});
btnAdd.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
// TODO Auto-generated method stub
String isiNim = nim.getText().toString().trim();
String isiNama = nama.getText().toString();
pustakaDB.addDataMahasiswa(db, isiNim, isiNama);
Toast.makeText(SikiliteActivity.this, "data berhasil disimpan", Toast.LENGTH_SHORT).show();
getAll();
}
});

}

}
<pre>

oke deh tinggal dijalan kan… :D . oh iya berikut tampilan screenshot hasilnya :

delete sqlite

Aplikasi Client-Server menggunakan Android, PHP dan mySQL

pada tutorial kali ini kita mencoba membuat aplikasi client server sederhana menggunakan php, android dan mysql.

untuk server kita menggunakan php dengan database mysql, sedangkan clientnya kita menggunakan si robot hijau (android :D ). aplikasi yg kita akan buat dapat digambarkan sbb :

android php mysql

client - server

yang pertama kita lakukan adalah membuat databasenya , buat lah sturktur database bernama db_akun dengan sebuah tabel akun yg stukturnya sbb :

kemudian kita membuat scrip PHP untuk menghandle operasi CRUD nya misal kita beri nama login.php

<?php
mysql_connect("localhost","root","");
mysql_select_db("db_akun");
switch($_GET['act']){

case "insert" :
$uname = $_GET['uname'];
$pass = $_GET['pass'];

$result = mysql_query("INSERT INTO akun(uname,pass) VALUES('$uname','$pass')");
if($result){
echo "berhasil insert data";
}
else{
echo "uname".$uname;
}

break;
case "update":
$uname = $_GET['uname'];
$pass = $_GET['pass'];

$result = mysql_query("UPDATE akun SET pass='$pass' WHERE uname='$uname'");
if($result){
echo "berhasil ubah data";
}
else{
echo "gagal ubah data";
}
break;

case "delete":

$uname = $_GET['uname'];

$result = mysql_query("DELETE FROM akun WHERE uname='$uname'");
if($result){
echo "berhasil hapus data";
}
else{
echo "gagal hapus data";
}

break;
}
?>

skrip php ini digunakan untuk menerima request dari client dengan metode GET dan kemudian memberikan respon balik ke client nya.

kemudian kita membuat project android, pada kelas activity nya (dlm contoh ini adalah Prak8Activity.java) kita ubah menjadi sbb :

package com.ulhack.prak8;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Prak8Activity extends Activity {
    /** Called when the activity is first created. */
	private EditText username, password, status;
	private Button insert,update,delete;
	private String uname;
	private String pass;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        username = (EditText)findViewById(R.id.editUsername);
        password = (EditText)findViewById(R.id.editPassword);
        status = (EditText)findViewById(R.id.editStatus);
        insert = (Button)findViewById(R.id.buttonInsert);
        update = (Button)findViewById(R.id.buttonUpdate);
        delete = (Button)findViewById(R.id.buttonDelete);

        insert.setOnClickListener(new OnClickListener() {

			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				 uname = username.getText().toString();
				 pass = password.getText().toString();

				String url = "http://10.0.2.2/login/login.php?act=insert&uname="+uname+"&pass="+pass;
				getRequest(status, url);
			}
		});

        update.setOnClickListener(new OnClickListener() {

			public void onClick(View arg0) {
				 uname = username.getText().toString();
				 pass = password.getText().toString();
				String url = "http://10.0.2.2/login/login.php?act=update&uname="+uname+"&pass="+pass;
				getRequest(status, url);
			}
		});

        delete.setOnClickListener(new OnClickListener() {

			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				uname = username.getText().toString();
				String url = "http://10.0.2.2/login/login.php?act=delete&uname="+uname;
				getRequest(status, url);
			}
		});
    }

    private void getRequest(EditText txtResult, String URL) {
		Log.d("getRequest", URL);
		HttpClient client = new DefaultHttpClient();
		HttpGet request = new HttpGet(URL);

		try {
			HttpResponse response = client.execute(request);
			txtResult.setText(request(response));
		} catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

    private static String request(HttpResponse response){
    	String result = "";
    	try {
			InputStream in = response.getEntity().getContent();
			BufferedReader reader = new BufferedReader(new InputStreamReader(in));
			StringBuilder str = new StringBuilder();
			String line = null;

			while ((line = reader.readLine()) != null) {
				str.append(line+"\n");
			}
			in.close();
			result = str.toString();

		} catch (IllegalStateException e) {
			// TODO Auto-generated catch block
			result = "error";
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			result = "error";
		}
    	return result;
    }

}

setelah itu kita ubah code xml UI nya menjadi sbb :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<TextView android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:text="@string/hello" />
	<TextView android:text="username" android:id="@+id/textView1"
		android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
	<EditText android:layout_width="match_parent"
		android:layout_height="wrap_content" android:id="@+id/editUsername"
		android:inputType="textPersonName">
		<requestFocus></requestFocus>
	</EditText>
	<TextView android:text="password" android:id="@+id/textView2"
		android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
	<EditText android:layout_width="match_parent"
		android:layout_height="wrap_content" android:id="@+id/editPassword"
		android:inputType="textPassword"></EditText>
	<LinearLayout android:layout_height="wrap_content"
		android:layout_width="match_parent" android:id="@+id/linearLayout1">
		<Button android:id="@+id/buttonInsert" android:text="insert"
			android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
		<Button android:text="update" android:id="@+id/buttonUpdate"
			android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
		<Button android:text="delete" android:id="@+id/buttonDelete"
			android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
	</LinearLayout>
	<TextView android:text="status" android:id="@+id/textView3"
		android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
	<EditText android:layout_width="match_parent"
		android:layout_height="wrap_content" android:id="@+id/editStatus"></EditText>
</LinearLayout>

tinggal ubah tambahkan permission internet di androidmanifest.xml nya.
kemudian jalankan aplikasinya :) selesai

berikut screen shoot nya :


Membuat Menu di Android

sebenarnya ada 2 cara membuat menu di android, yg prtama dilayoutnya dgn xml, yg kedua menggunakan code javanya..

untuk membuat menu di android,pertama yg harus dilakukan adalah membuat project android baru (asumsi udah bisa membuat project android :) )

kemudian desain : uinya pada main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/bg">
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    android:textColor="#000000"
    />
<EditText android:id="@+id/editText1" android:layout_width="fill_parent" android:layout_height="wrap_content">
    <requestFocus></requestFocus>
</EditText>
<EditText android:id="@+id/editText2" android:layout_width="fill_parent" android:layout_height="wrap_content"></EditText>
</LinearLayout>

kemudian pada kelas activity(misal : MenuAndroidActivity.java) di folder src dirubah menjadi sbb :

package com.ulhack.menu;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.Toast;

public class MenuAndroidActivity extends Activity {
    /** Called when the activity is first created. */
	private EditText editText1,editText2;
	private int edit1,edit2,edithasil;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        editText1 = (EditText)findViewById(R.id.editText1);
        editText2 = (EditText)findViewById(R.id.editText2);
    }

    private void createMenu(Menu menu){
    	menu.setQwertyMode(true);
    	MenuItem menu1 = menu.add(0, 0, 0, "menu tambah");
    	{
    		menu1.setAlphabeticShortcut('a');
    		menu1.setIcon(android.R.drawable.btn_plus);
    	}

    	MenuItem menu2 = menu.add(0, 1, 0, "menu kurang");
    	{
    		menu2.setAlphabeticShortcut('b');
    		menu2.setIcon(android.R.drawable.btn_minus);
    	}

    	MenuItem menu3 = menu.add(0, 2, 0, "keluar");
    	{
    		menu3.setAlphabeticShortcut('c');
    		menu3.setIcon(android.R.drawable.star_off);
    	}
    }

    private boolean menuChoice(MenuItem item) {
    	edit1 = Integer.parseInt(editText1.getText().toString());
    	edit2 = Integer.parseInt(editText2.getText().toString());

		switch (item.getItemId()) {
		case 0:
			edithasil = edit1 + edit2;
			Toast.makeText(this, String.valueOf(edithasil), Toast.LENGTH_LONG).show();
			return true;

		case 1:
			edithasil = edit1 - edit2;
			Toast.makeText(this, String.valueOf(edithasil), Toast.LENGTH_LONG).show();
			return true;

		case 2:
			Toast.makeText(this, "exit", Toast.LENGTH_LONG).show();
			finish();
			return true;
		default:
			break;
		}
    	return false;
	}

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    	// TODO Auto-generated method stub
    	super.onCreateOptionsMenu(menu);
    	createMenu(menu);
    	return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    	// TODO Auto-generated method stub
    	 return menuChoice(item);
    }
}


baris 23 – 60 kode untuk membuat menu nya

kemudian jalankan emulatornya, untuk menampilkan menu pilih tombol menu...

selesai deh :)

Generate Facebook Hash key for For Android Apps

if you want to create Facebook  hash key for android application, you can use this references :

http://sonyarouje.com/2011/09/18/facebook-hash-key-for-android-apps/

http://p-xr.com/implementing-facebook-into-your-app-invalid-key-with-keytool/

https://developers.facebook.com/docs/mobile/android/build/

http://stackoverflow.com/questions/4424492/facebook-sdk-for-android-example-app-wont-work

:D

download add-on Google Map Android

kali  ini ane mau curhat boleh kan (ya pasti lah, kan ini blog ane hhaah :D ), jd gini pas ane lagi maen2 ama gmap di android ada keinginan nge-upgrade google api buat gmap-nya, tp pas ane cek di url disini :

http://dl-ssl.google.com/android/repository/addons_list.xml

yg tampil malah *404 page* alias notfon :) . *oh mai gat* #sambilBantingLaptop (becanda … :D ). terus ane nanya sama ombah gugel setelah lama tanya-tanya sampai keringat dingin(lebai lagi :D ), akhirnya ketemu juga ne, ini link nya :

https://dl-ssl.google.com/android/repository/addon.xml

selain addon buat google map ada juga addon buat web driver,ads buat mobile(bukan mobil :) ), biling market, usb driver,marketing lisensi, dan google tv buat denger radio(becanda, ya buat nonton tv streaming).  pokoe gugel emang #joss dah.

untuk cara donlot nya sama aj am yg lainnya, tinggal kopi dibagian tag sdk-url, terus di replace di bagian addon.xml, beres… selamat ber google map ria :)