Tutorial Android : Contoh Aplikasi Sistem Informasi Akademik
Berbasis AndroidHari ini dan malam minggu kemarin, saya benar-benar
menjadi penghuni setia di lab litbang kampus. Ngebut untuk membuat
jurnal penelitian yang akan disetorkan ke kampus, demi sedikit
recehan untuk makan-makan di KFC. Saya menargetkan 3 jurnal selesai
dalam waktu 1 minggu ke depan, yaw mudah-mudahan saja bisa selesai
tepat waktu. Ada ketentuan baru dalam pengajuan jurnal penelitian
di kampus saya, ruang lingkupnya harus sudah setara dengan skripsi.
Kalau bisa selesai 3 jurnal, artinya saya sudah 3 kali skripsi kali
yaw (#haha). Salah satu dari ketiga jurnal tersebut, saya
menyetorkan jurnal tentang aplikasi sistem informasi akademik
berbasis android dengan memanfaatkan web service. Yuppzzz,
pengembangan dari aplikasi yang saya seminarkan di KNSI STIKOM Bali
bulan februari lalu. Lumayan tuh, bisa jadi judul skripsi bagi
rekan-rekan yang belum punya judul skripsi (#ngakaks). Sekalian
juga deh, saya bagikan contoh aplikasinya disini. Tapi harap maklum
coding-nya masih acakadut, baru belajar nih+aplikasinya cuma dibuat
dalam waktu 1 hari.Tampilannya masih sederhana, saya memanfaatkan
sebuah class khusus untuk mengatur layout pada tampilan dashboard.
Sehingga tombol-tombol yang nangkring disana akan fleksibel
mengikuti ukuran layar. Hanya ada beberapa menu-menu standar,
seperti melihat nilai, jadwal, cek kehadiran dosen, rangking
angkatan, info kampus. Fitur KRS belum sempat saya buatkan, karena
ruang lingkupnya memang segitu aja. Berikut skrinsutnya :
Sederhana banget kan..??? Dan parahnya saya baru tau kalau
aplikasi ini tidak bisa berjalan di android versi 2,3 ke atas :(.
Masalahnya ialah di android 2,3 ke atas pengaksesan via httprequest
tidak diperbolehkan langsung dari main UI. Solusinya bisa
menggunakanAsyncTask(), silahkan ditambahkan sendiri yaw :p. OK
deh, sekian dulu postingan singkat saya kali ini. Sekarang mau
lanjut buat jurnalnya dulu, biar uangnya cepat cair (#haha). Semoga
bisa bermanfaat untuk kita semua.Happy Blogging and Keep Coding
Tutorial Android : Membuat Tab Layout Sederhana di Aplikasi
Android12-year-old girl wins $256,000 lawsuit against her
mother(BWNToday)Proses acc duit beasiswa hari ini cukup membuat
saya jengkel, terkesan berbelit-belit dan dipersulit. Padahal itu
beasiswa dari pusat, kalau misalnya datang dari kampus sih saya
masih bisa terima prosesnya dipersulit. Saya menyesal, karena dulu
duitnya langsung masuk ke rekening kampus, alasannya sih langsung
dipakai untuk bayar semester depan. Besok-besok kalau duit seminar
nasional saya sudah cair,ogahdeh dimasukin ke pembiayaan untuk
semester depan, itu mah akal bulus kampus doang. Nahhh, daripada
ruwet ngurusin kampus yang dari awal saya kuliah gak pernah benar
(apalagi si engkong, dosen dewa yang gak pernah mau disalahkan),
mending posting lagi tentang tutorial android. Tutorial sederhana
kali ini membahas tentangcara membuat sebuah tab layout/tab menu di
aplikasi android. Tab layout ini sama dengan tab menu di
aplikasi-aplikasi pada umumnya, fungsinya agar bisa menampilkan
beberapa tampilan dalam 1 halaman. Tampilan disini maksudnya adalah
beberapa activity yang berbeda. Cara membuatnya cukup mudah dan
berikut langkah-langkahnya. Cekidot gan1. Buat android project baru
seperti biasanya.
2. Disini kita akan membuat 3 tab berbeda, yang membutuhkan 4
activity. 1 sebagai frame layout dan sisanya sebagai view yang akan
nongol di frame tersebut. Otomatis juga membutuhkan 4 buah file
layout xml. Agar keliatan lebih cakep, saya tambahkan beberapa icon
dengan ekstensi .png dan saya tempatkan di
folderdrawable-mdpi.Sekarang kita buat terlebih dahulu layout-nya
(klik kanan folder layout > New > Android XML File).
Filemain.xml:
Fileubuntu.xml:
Filemandriva.xml:
Filearch.xml:
3. Masih berhubungan dengan tampilan alias layout. Saya
tambahkan sedikit agar ketika salah satu tab terseleksi, maka
icon-nya berubah. Buat 3 buah file xml dan tempatkan di
folderdrawable.Filestyle_ubuntu.xml:
Filestyle_mandriva.xml:
Filestyle_arch.xml:
4. Sekarang kita melangkah ke pembuatan activity, karena sudah
terdapat 1 file activity, jadinya kita hanya perlu membuat 3
activity lainnya.FileTabLayoutSederhana.java:public class
TabLayoutSederhanaActivity extends TabActivity { @Override public
void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost tabHost = getTabHost();
TabSpec ubuntu = tabHost.newTabSpec("Ubuntu");
ubuntu.setIndicator("Ubuntu",
getResources().getDrawable(R.drawable.style_ubuntu)); Intent
ubuntuIntent = new Intent(this, UbuntuActivity.class);
ubuntu.setContent(ubuntuIntent);
TabSpec mandriva = tabHost.newTabSpec("Mandriva");
mandriva.setIndicator("Mandriva",
getResources().getDrawable(R.drawable.style_mandriva)); Intent
mandrivaIntent = new Intent(this, MandrivaActivity.class);
mandriva.setContent(mandrivaIntent);
TabSpec arch = tabHost.newTabSpec("Arch Linux");
arch.setIndicator("Arch Linux",
getResources().getDrawable(R.drawable.style_arch)); Intent
archIntent = new Intent(this, ArchActivity.class);
arch.setContent(archIntent);
tabHost.addTab(ubuntu); tabHost.addTab(mandriva);
tabHost.addTab(arch); }}FileUbuntuActivity.java:public class
UbuntuActivity extends Activity{public void onCreate(Bundle
savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.ubuntu); }}FileMandrivaActivity.java:public
class MandrivaActivity extends Activity {public void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mandriva); }}FileArchActivity.java:public
class ArchActivity extends Activity {public void onCreate(Bundle
savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.arch); }}5. Yang terakhir, kita perlu
mendaftarkan file-file activity di atas ke dalam
fileAndroidManifest.xml. Kalau tidak didaftarkan, dijamin aplikasi
akan force closed duluan :p.
6. Jalankan via emulator, kira-kira hasilnya seperti di bawah
ini :
Tab Layout/Tab Menu ini sangat mempermudah kita untuk menangani
beberapa view/activity, karena pengaksesannya yang berada dalam
satu tampilan frame. OK deh, sekian dulu postingan saya kali ini.
Semoga bisa bermanfaat untuk rekan-rekan.Happy Blogging and Keep
Coding
Tutorial Android : Menampilkan Data dari Database SQLite ke
ListViewMan arrested for feeding sausage to police
horse(BWNToday)Haaahhh, baru bisa posting lagi di hari minggu yang
tumben sejuk seperti ini. Kali ini saya nangkring di Lab. Litbang
kampus, koneksi internetnya cukup kencang lah. Pokoknya kalo dipake
donlod, yang liat pasti ngiler deh :D. Berhubung di rumah TV saya
sedang bermasalah, sekalian saja saya nonton TV online dengan
koneksi kencang yang nganggur di kampus. Cukup lama juga saya tidak
nonton acara TV, biasanya paling nangkringin laptop. Sambil nonton
TV online, saya mau berbagi sedikit nih tentang tutorial android.
Yupzzz, android. Semoga rekan-rekan gak bosan dengan postingan saya
yang akhir-akhir ini membahas tentang android. Kali ini saya akan
membahas tentang database SQLite,dimana database ini sudah tersedia
langsung di dalam OS android.Karena memang sama-sama SQL, querynya
sama dengan database MySQL. Diawali dengan membuat database,
membuat struktur tabel dan memanfaatkan adapter dariSQLiteDatabase
untuk melakukan fungsi DML (Data Manipulation Language). Setelah
itu, datanya akan ditampilkan ke dalam sebuah ListView dengan
memanfaatkan CursorAdapter. Gak usah banyak penjelasan, kita
langsung aja ke cara pembuatannya. Cekidot gan.1. Buat android
project baru seperti gambar di bawah ini :
2. Kita akan memanfaatkan SQLiteOpenHelper sebagai class yang
berfungsi untuk menangani koneksi ke database. Diantaranya fungsi
DDL (Data Definition Language) dan DML. Buat sebuah file class baru
dengan namaDBHelper.javayang meng-extends
classSQLiteOpenHelper.1public class DBHelper extends
SQLiteOpenHelper {
2public DBHelper(Context context) {
3super(context,"sekolah_db",null, 1);
4}
5
6@Override
7public void onCreate(SQLiteDatabase db) {
8//db.execSQL("");
9}
10
11@Override
12public void onUpgrade(SQLiteDatabase db, int oldVersion, int
newVersion) {
13//db.execSQL("");
14onCreate(db);
15}
16
17public void tambah(SQLiteDatabase db) {
18String[] nama_sis =newString[]
{"Gede","Okky","Untung","Puji","Willy","Ayus"};
19String[] alamat_sis =newString[]
{"Denpasar","Banyuwangi","Situbondo","Rogojampi","Purwoharjo","Rogojampi"};
20int lanjut =newRandom().nextInt(6);
21String nama_in = nama_sis[lanjut];
22String alamat_in = alamat_sis[lanjut];
23//db.execSQL("");
24}
25}
Saya sisipkan sebuah function untuk melakukan input ke dalam
tabel,value-nya saya acak dari beberapa string yang saya simpan di
dalam sebuah array. Dan fungsi insert ini akan berjalan setiap kali
aplikasi dibuka (taruh di event onCreate). Ouw yaw, itu ada syntax
yang saya mark, querynya saya hilangkan karena tidak bisa disimpan
ke dalam database blog ini :). Untuk melihat query-nya, silahkan
donlod saja contoh programnya di akhir postingan ini.3. Sekarang
kita buat sebuah activity yang akan menampilkan data dari dalam
database SQLite ke dalam sebuah ListView. Buka
fileSqliteToListviewActivity.javadan ketikkan code di bawah ini
:1publicclassSqliteToListviewActivityextendsListActivity {
2
3privateSQLiteDatabase db;
4privateCursorAdapter data_sumber;
5privatestaticfinal String kolom[] =
{"nama","alamat",BaseColumns._ID };
6DBHelper helper =newDBHelper(this);
7
8@Override
9publicvoid onCreate(Bundle savedInstanceState) {
10super.onCreate(savedInstanceState);
11ListView view = getListView();
12view.addHeaderView(getLayoutInflater().inflate(R.layout.row,
null));
13db = helper.getWritableDatabase();
14
15this.muat_ulang();
16this.tambahdata();
17}
18
19publicvoid muat_ulang()
20{
21Cursor data = db.query("bio_siswa", kolom, null, null, null,
null,null);
22data_sumber =newSimpleCursorAdapter(this, R.layout.row, data,
kolom,newint[] { R.id.nama, R.id.alamat });
23setListAdapter(data_sumber);
24}
25
26publicvoid tambahdata()
27{
28helper.tambah(db);
29this.muat_ulang();
30}
31}
Untuk melakukan query untuk seleksi record dalam database, bisa
menggunakan fungsi .rawquery()atau dengan .query(). Dan disini saya
menggunakan fungsi .query()karena tidak perlu memasukkan perintah
select SQL, .query()mirip dengan pattern active record di CI.Data
dari database disimpan terlebih dahulu dalam CursorAdapter.
Kemudian ditampilkan ke dalam ListView denga
fungsisetListAdapter().4. Yang terakhir, kita perlu membuat sebuah
desain layout untuk menampung data-data dari database. Buat sebuah
file layout baru (klik kanan folder layout > New > Android
XML File) dan ketikkan kode layout di bawah ini :1
2
7
8
16
25
26
5. Tes aplikasi via emulator, kira-kira hasilnya seperti gambar
di bawah ini :
Nah itu langkah-langkah dasar untuk membuat sebuah aplikasi
database sederhana dengan memanfaatkan SQLite. Terus terang saja,
ketika mencoba untuk membuat aplikasi ini sering mengalamiforced
closesetiap akan mencobanya ke dalam emulatornya :(. Kebanyakan
karena kesalahan mengisi parameter dari CursorAdapter dan
SqliteOpenHelper nya. Setelah dicoba dan hampir putus asa, akhirnya
bisa juga =)). OK deh, sekian dulu postingan saya di hari minggu
yang sejuk ini. Semoga bisa bermanfaat untuk rekan-rekan.Happy
Blogging and Keep CodingTutorial Android : Membuat Kalkulator
Biner-Desimal Sederhana di AndroidWoman killed from sneezing while
driving(BWNToday)Kondisi tubuh yang kurang fit melanda saya mulai
tadi pagi, gara-gara kemarin malam saya paksakan untuk begadang di
ITSolution demi menyeselesaikan jurnal. Tidur jam setengah 4 dan
bangun lagi jam setengah 8 untuk berangkat kuliah yang jadwalnya
sangat-sangat nanggungnyelempitdi akhir pekan seperti ini. Belum
lagi rasa rindu untuk pulang ke denpasar di pertengahan bulan
seperti ini, namun apa daya pekerjaan dan tugas kampus yang masih
numpuk minta giliran untuk di-action. Apalagi mata kuliah machine
learning yang diajarkan oleh pak hadiq, yang selalu menjadi momok
setiap kali seliweran di pikiran saya :(. Yang terpenting di bawa
hepi+santai ajalah, bila perlu tugasnya gak usah dikumpulin,
dijamin tambah santai :ngakaks:. Nah, sambil mengisi waktu kosong
di malam yang hawanya panas ini, saya akan membagikan sedikit
tutorial untuk membuat sebuahkalkulator biner sederhana di android.
Yuppzzz, memang sudah banyak tutorial yang berseliweran di internet
yang membahas tentang cara konversi biner ke desimal maupun
sebaliknya. Berhubung saya lagi sedang senang-senangnya membuat
aplikasi sederhana di platform android, tak ada salahnya untuk
dicoba. Hitung-hitung cari pengalaman+nambah postingan :p.Yang
terpenting di aplikasi kalkulator ini hanya proses perhitungannya
saja, untuk event tombol cuma sekedar pemanis. Bagi yang sudah
pernah membuat versi java-nya, syntaxnya sama saja. Tinggal
mengubah atau menambahkan desain form bagi yang awalnya hanya
berupa tampilan console. OK deh, kita langsung aja ke cara
pembuatannya. Cekidot mas berooo1. Seperti biasa, buat android
project baru terlebih dahulu.
2. Disini saya menggunakan 2 activity, yaitu
KalkulatorBinerActivity untuk melakukan konversi dari desimal ke
biner dan KalkulatorDesimalActivity untuk melakukan konveri dari
biner ke desimal. Kodenya seperti di bawah ini
:KalkulatorBinerActivity.java1publicclassKalkulatorBinerActivityextendsActivity
{
2/** Called when the activity is first created. */
3EditText t_in,t_out;
4Button
b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b_hps,b_ke_desimal,b_biner;
5String var_in="";
6@Override
7publicvoid onCreate(Bundle savedInstanceState) {
8super.onCreate(savedInstanceState);
9requestWindowFeature(Window.FEATURE_NO_TITLE);
10getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
11setContentView(R.layout.main);
12
13t_in = (EditText) findViewById(R.id.txt_in);
14t_out = (EditText) findViewById(R.id.txt_out);
15b0 = (Button) findViewById(R.id.btn0);
16b1 = (Button) findViewById(R.id.btn1);
17b2 = (Button) findViewById(R.id.btn2);
18b3 = (Button) findViewById(R.id.btn3);
19b4 = (Button) findViewById(R.id.btn4);
20b5 = (Button) findViewById(R.id.btn5);
21b6 = (Button) findViewById(R.id.btn6);
22b7 = (Button) findViewById(R.id.btn7);
23b8 = (Button) findViewById(R.id.btn8);
24b9 = (Button) findViewById(R.id.btn9);
25b_hps = (Button) findViewById(R.id.btn_hapus);
26b_ke_desimal = (Button) findViewById(R.id.btn_ke_desimal);
27b_biner = (Button) findViewById(R.id.btn_biner);
28
29b1.setOnClickListener(newOnClickListener() {
30publicvoid onClick(View v) {
31if(var_in.trim().equals(""))
32{
33var_in ="1";
34t_in.setText(var_in);
35}
36else
37{
38var_in = t_in.getText().toString()+"1";
39t_in.setText(var_in);
40}
41}
42});
43
44b2.setOnClickListener(newOnClickListener() {
45publicvoid onClick(View v) {
46if(var_in.trim().equals(""))
47{
48var_in ="2";
49t_in.setText(var_in);
50}
51else
52{
53var_in = t_in.getText().toString()+"2";
54t_in.setText(var_in);
55}
56}
57});
58
59b3.setOnClickListener(newOnClickListener() {
60publicvoid onClick(View v) {
61if(var_in.trim().equals(""))
62{
63var_in ="3";
64t_in.setText(var_in);
65}
66else
67{
68var_in = t_in.getText().toString()+"3";
69t_in.setText(var_in);
70}
71}
72});
73
74b4.setOnClickListener(newOnClickListener() {
75publicvoid onClick(View v) {
76if(var_in.trim().equals(""))
77{
78var_in ="4";
79t_in.setText(var_in);
80}
81else
82{
83var_in = t_in.getText().toString()+"4";
84t_in.setText(var_in);
85}
86}
87});
88
89b5.setOnClickListener(newOnClickListener() {
90publicvoid onClick(View v) {
91if(var_in.trim().equals(""))
92{
93var_in ="5";
94t_in.setText(var_in);
95}
96else
97{
98var_in = t_in.getText().toString()+"5";
99t_in.setText(var_in);
100}
101}
102});
103
104b6.setOnClickListener(newOnClickListener() {
105publicvoid onClick(View v) {
106if(var_in.trim().equals(""))
107{
108var_in ="6";
109t_in.setText(var_in);
110}
111else
112{
113var_in = t_in.getText().toString()+"6";
114t_in.setText(var_in);
115}
116}
117});
118
119b7.setOnClickListener(newOnClickListener() {
120publicvoid onClick(View v) {
121if(var_in.trim().equals(""))
122{
123var_in ="7";
124t_in.setText(var_in);
125}
126else
127{
128var_in = t_in.getText().toString()+"7";
129t_in.setText(var_in);
130}
131}
132});
133
134b8.setOnClickListener(newOnClickListener() {
135publicvoid onClick(View v) {
136if(var_in.trim().equals(""))
137{
138var_in ="8";
139t_in.setText(var_in);
140}
141else
142{
143var_in = t_in.getText().toString()+"8";
144t_in.setText(var_in);
145}
146}
147});
148
149b9.setOnClickListener(newOnClickListener() {
150publicvoid onClick(View v) {
151if(var_in.trim().equals(""))
152{
153var_in ="9";
154t_in.setText(var_in);
155}
156else
157{
158var_in = t_in.getText().toString()+"9";
159t_in.setText(var_in);
160}
161}
162});
163
164b0.setOnClickListener(newOnClickListener() {
165publicvoid onClick(View v) {
166if(var_in.trim().equals(""))
167{
168var_in ="0";
169t_in.setText(var_in);
170}
171else
172{
173var_in = t_in.getText().toString()+"0";
174t_in.setText(var_in);
175}
176}
177});
178
179b_hps.setOnClickListener(newOnClickListener() {
180publicvoid onClick(View v) {
181t_in.setText("");
182t_out.setText("");
183}
184});
185
186b_biner.setOnClickListener(newOnClickListener() {
187publicvoid onClick(View v) {
188if(var_in!="")
189{
190String hasil = DesimalKeBiner(Integer.parseInt(var_in));
191t_out.setText(hasil);
192var_in="";
193}
194
195}
196});
197
198b_ke_desimal.setOnClickListener(newOnClickListener() {
199publicvoid onClick(View v) {
200t_in.setText("");
201t_out.setText("");
202var_in="";
203Intent i =newIntent(getApplicationContext(),
KalkulatorDesimalActivity.class);
204startActivity(i);
205}
206});
207}
208
209publicString DesimalKeBiner(int angka_desimal)
210{
211int sisa_bagi=0, i=0;
212boolean ulang=true;
213int[] arr_simpan =newint[10000];
214sisa_bagi=angka_desimal;
215
216String hasil="";
217while(ulang==true)
218{
219sisa_bagi = angka_desimal%2;
220angka_desimal= angka_desimal/2;
221arr_simpan[i]=sisa_bagi;
222i++;
223if((angka_desimal==0)||(angka_desimal==1))
224{
225ulang=false;
226arr_simpan[i]=angka_desimal;
227}
228}
229for(int a=i; a>=0;a--)
230{
231hasil += arr_simpan[a];
232}
233returnhasil;
234}
235
236publicboolean onCreateOptionsMenu(Menu menu) {
237MenuInflater inflater = getMenuInflater();
238inflater.inflate(R.menu.opt_menu, menu);
239returntrue;
240}
241
242publicboolean onOptionsItemSelected(MenuItem item) {
243switch(item.getItemId()) {
244caseR.id.tentang:
245AlertDialog alertDialog;
246alertDialog =newAlertDialog.Builder(this).create();
247alertDialog.setTitle("Sekilas Biner");
248alertDialog.setMessage("Bilangan biner adalah salah satu
sistem bilangan yang digunakan pada komputer. "+
249"Berbeda dengan sistem bilangan desimal yang sering kita
gunakan sehari-hari, "+
250"sistem bilangan biner hanya menggunakan dua bilangan yaitu 0
(nol) dan 1 (satu). "+
251"\n\nSalam, Gede Lumbung\nhttp://gedelumbung.com");
252alertDialog.setButton("#OKOK",newDialogInterface.OnClickListener()
{
253@Override
254publicvoid onClick(DialogInterface dialog, int which) {
255dialog.dismiss();
256}
257});
258alertDialog.show();
259returntrue;
260caseR.id.keluar:
261Intentexit=newIntent(Intent.ACTION_MAIN);
262exit.addCategory(Intent.CATEGORY_HOME);exit.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
263KalkulatorBinerActivity.this.finish();
264startActivity(exit);
265returntrue;
266default:
267returnsuper.onOptionsItemSelected(item);
268}
269}
270}
KalkulatorDesimalActivity.java1publicclassKalkulatorDesimalActivityextendsActivity
{
2/** Called when the activity is first created. */
3EditText t_in,t_out;
4Button b0,b1,b_hps,b_ke_biner,b_desimal;
5String var_in="";
6@Override
7publicvoid onCreate(Bundle savedInstanceState) {
8super.onCreate(savedInstanceState);
9requestWindowFeature(Window.FEATURE_NO_TITLE);
10getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
11setContentView(R.layout.second);
12
13t_in = (EditText) findViewById(R.id.txt_in);
14t_out = (EditText) findViewById(R.id.txt_out);
15b0 = (Button) findViewById(R.id.btn0);
16b1 = (Button) findViewById(R.id.btn1);
17b_hps = (Button) findViewById(R.id.btn_hapus);
18b_ke_biner = (Button) findViewById(R.id.btn_ke_biner);
19b_desimal = (Button) findViewById(R.id.btn_desimal);
20
21b1.setOnClickListener(newOnClickListener() {
22publicvoid onClick(View v) {
23if(var_in.trim().equals(""))
24{
25var_in ="1";
26t_in.setText(var_in);
27}
28else
29{
30var_in = t_in.getText().toString()+"1";
31t_in.setText(var_in);
32}
33}
34});
35
36b0.setOnClickListener(newOnClickListener() {
37publicvoid onClick(View v) {
38if(var_in.trim().equals(""))
39{
40var_in ="0";
41t_in.setText(var_in);
42}
43else
44{
45var_in = t_in.getText().toString()+"0";
46t_in.setText(var_in);
47}
48}
49});
50
51b_hps.setOnClickListener(newOnClickListener() {
52publicvoid onClick(View v) {
53t_in.setText("");
54t_out.setText("");
55}
56});
57
58b_desimal.setOnClickListener(newOnClickListener() {
59publicvoid onClick(View v) {
60if(var_in!="")
61{
62int hasil = BinerKeDesimal(Integer.parseInt(var_in));
63t_out.setText(Double.toString(hasil));
64var_in="";
65}
66
67}
68});
69
70b_ke_biner.setOnClickListener(newOnClickListener() {
71publicvoid onClick(View v) {
72KalkulatorDesimalActivity.this.finish();
73}
74});
75}
76
77publicint BinerKeDesimal(int angka_desimal)
78{
79String bil = Integer.toString(angka_desimal);
80int[] arr_simpan=newint[10000];
81String[] str=newString[10000];
82double hasil=0;
83int hasil_akhir=0;
84int a=0;
85char t;
86
87for(int i=0;i < bil.length();i++)
88{
89t = bil.charAt(i);
90str[i]=Character.toString(t);
91}
92
93for(int i=bil.length()-1; i>=0;i--)
94{
95arr_simpan[a]=Integer.parseInt(str[i]);
96hasil= arr_simpan[a]* (Math.pow(2,a));
97hasil_akhir=hasil_akhir+(int)hasil;
98a++;
99}
100returnhasil_akhir;
101}
102
103publicboolean onCreateOptionsMenu(Menu menu) {
104MenuInflater inflater = getMenuInflater();
105inflater.inflate(R.menu.opt_menu, menu);
106returntrue;
107}
108
109publicboolean onOptionsItemSelected(MenuItem item) {
110switch(item.getItemId()) {
111caseR.id.tentang:
112AlertDialog alertDialog;
113alertDialog =newAlertDialog.Builder(this).create();
114alertDialog.setTitle("Sekilas Biner");
115alertDialog.setMessage("Bilangan biner adalah salah satu
sistem bilangan yang digunakan pada komputer. "+
116"Berbeda dengan sistem bilangan desimal yang sering kita
gunakan sehari-hari, "+
117"sistem bilangan biner hanya menggunakan dua bilangan yaitu 0
(nol) dan 1 (satu). "+
118"\n\nSalam, Gede Lumbung\nhttp://gedelumbung.com");
119alertDialog.setButton("#OKOK",newDialogInterface.OnClickListener()
{
120@Override
121publicvoid onClick(DialogInterface dialog, int which) {
122dialog.dismiss();
123}
124});
125alertDialog.show();
126returntrue;
127caseR.id.keluar:
128Intentexit=newIntent(Intent.ACTION_MAIN);
129exit.addCategory(Intent.CATEGORY_HOME);exit.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
130KalkulatorDesimalActivity.this.finish();
131startActivity(exit);
132returntrue;
133default:
134returnsuper.onOptionsItemSelected(item);
135}
136}
137}
3. Karena menggunakan 2 buah activity, otomatis juga membutuhkan
2 buah layout yang berbeda. Saya tambahkan satu layout untuk layout
options menu, saya tempatkan pada foldermenu/opt_menu.xml. Jadi
total terdapat 3 buah layout.main.xml1
2
7
8
13
14
23
24
35
36
37
38
43
44
53
54
65
66
67
68
73
74
84
85
95
96
106
107
108
113
114
124
125
135
136
146
147
148
153
154
164
165
175
176
186
187
188
193
194
205
206
216
217
227
228
229
234
235
246
247
248
second.xml1
2
7
8
13
14
23
24
35
36
37
38
43
44
53
54
65
66
67
68
73
74
84
85
86
91
92
102
103
104
109
110
120
121
131
132
133
138
139
150
151
152
opt_menu.xml1
2
5
8
4. Yang terakhir, kita perlu mendaftarkan activity yang kedua di
dalam file AndroidManifest.xml.1
2
6
7
8
9
12
15
16
17
18
19
20
21
22
23
24
5. Jalankan aplikasi via emulator, bisa juga dijalanlan langsung
ke smartphone dengan menghubungkan via kabel usb (syaratnya, driver
harus sudah terinstall)
Nahh, gampang kan cara pembuatannya??? Kalkulator di atas masih
bisa ditambahkan dengan fungsi untuk konversi ke hexadesimal dan
oktal. Bisa juga ditambahkan tabel gerbang logika, jadinya ketika
rekan-rekan sedang mengerjakan ujian mata kuliah sistem digital
pasti terbantu (kalau dibolehkan bawa hape lho yaw :D). OK deh,
sekian dulu postingan saya kali ini. Semoga bisa bermanfaat untuk
kita semua.Happy Blogging and Keep Coding
18May2012KATEGORI :TUTORIAL ANDROID- Dibaca : 7974 kaliDitulis
oleh :Gede LumbungAda 33 Komentar SeruTutorial Android : Cara
Menggunakan AsyncTask di Android105-year-old woman gets accepted
into preschool(BWNToday)Akhirnya sampai di rumah dan bisa berlibur
sejenak dari kegiatan yang aneh-aneh di pulau seberang. Dan yang
terpenting saya bisa bertemu lagi dengan si Paijo, Jupiter MX baru
yang akan menggantikan Jupiter ZakaBejo untuk menemani saya
seliweran tiap harinya. Tadi malam, setelah sampai rumah saya
langsung mengajak si Paijo jalan-jalan ke jalan byPass Ngurah Rai.
Emang mantap dah si Paijo, larinya kencang bukan main :D. Semoga si
Paijo bisa membuat saya lebih enteng rejeki danjodoh, maklumlah
saya sudah lama menyandang status #jombloGalau. Ngomong-ngomong
soal #galau (lagi), kemarin-kemarin saya sempat dilanda rasa #galau
dengan aplikasi android yang saya buat, dimana selalu force close
jika dijalankan di versi 3.0 ke atas. Setelah mencari masalahnya
dilogcat, ternyata mulai android versi 3.0 ke atas tidak
diperbolehkan untuk mengakses internet secara langsung melalui main
activity. Saya coba cari solusinya di stackoverflow dan solusinya
kita bisa menggunakanAsyncTask. AsyncTask ini memungkinkan
pengaksesan internet (background data) berjalan dibackground.Ketika
pertama membaca dokumentasi cara penggunaannya di
developer.android.com, saya bingung juga. Saya kira harus mengubah
seluruh kode yang berfungsi untuk berkomunikasi via internet.
Ternyata hanya perlu menambahkan sebuah class (di dalam public
class main activity) yang meng-extendsabstract class AsyncTask dan
mendefinisikan ketiga method abstract-nya,
yaituonPreExecute(),doInBackground(),danonPostExecute()pada main
activity. Studi kasusnya pada postingan kali ini ialah menampilkan
data ke dalam listview dan dicoba pada emulator dengan versi
android 4.0.3 alias Ice Cream Sandwich. Proses parsing data dari
format JSON dan menyimpannya ke dalam ArrayList dilakukan di method
doInBackground(). Kemudian untuk menampilkannya ke dalam listview
dilakukan di method onPostExecute(). Dari method onCreate (main
activity), kita hanya perlu memanggil class tersebut dengan
menambahkan method execute(). Sekarang kita coba untuk membuatnya,
cekidot gan1. Siapkan tabelnya terlebih dahulu, tabelnya masih sama
seperti postingan yang kemarin. Setelah itu kita buat sebuah file
php untuk memanggil data yang ada di dalam tabel dan kita atur
sesuai format JSON.
2. Buat sebuah android project baru dengan detail seperti di
bawah ini :
3. Seperti biasa, ketika akan menampilkan data ke dalam listview
android, kita membutuhkan 2 buah layout, yaitu main.xml (berisi
sebuah listview) dan list_row.xml (berisi textview untuk
menempatkan data hasil parsing).main.xml
list_row.xml
4. Class JSONParser yang saya gunakan masih sama dengan yang di
tutorial-tutorial sebelumnya, seperti di bawah ini :public class
JSONParser {
static InputStream is = null;static JSONObject jObj =
null;static String json = "";
public JSONParser() {
}
public JSONObject AmbilJson(String url) {
try {DefaultHttpClient httpClient = new
DefaultHttpClient();HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse =
httpClient.execute(httpPost);HttpEntity httpEntity =
httpResponse.getEntity();is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {e.printStackTrace();}
catch (ClientProtocolException e) {e.printStackTrace();} catch
(IOException e) {e.printStackTrace();}
try {BufferedReader reader = new BufferedReader(new
InputStreamReader(is, "iso-8859-1"), 8);StringBuilder sb = new
StringBuilder();String line = null;while ((line =
reader.readLine()) != null) {sb.append(line +
"\n");}is.close();json = sb.toString();} catch (Exception e)
{Log.e("Buffer Error", "Error converting result " +
e.toString());}
try {jObj = new JSONObject(json);} catch (JSONException e)
{Log.e("JSON Parser", "Error parsing data " + e.toString());}
return jObj;
}}5. Buka dan edit file TesAsyncTasActivity.java, ketikkan kode
di bawah ini. Terdapat sebuah class baru dengan nama AmbilData yang
meng-extends abstract class AsyncTask, dengan 3 method yang telah
didefinisikan di dalamnya.public class TesAsyncTaskActivity extends
ListActivity {
static String in_judul = "judul";static String in_waktu =
"tanggal";JSONArray str_json = null;public String lo_Koneksi,isi
;
private ProgressDialog pDialog;ArrayList data_map = new
ArrayList();
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.main);
Koneksi lo_Koneksi = new Koneksi(); isi = lo_Koneksi.isi_koneksi();
new AmbilData().execute(); }
class AmbilData extends AsyncTask { @Override protected void
onPreExecute() { super.onPreExecute(); pDialog = new
ProgressDialog(TesAsyncTaskActivity.this);
pDialog.setMessage("Sabar gan, masih ngambil data neh...");
pDialog.setIndeterminate(false); pDialog.setCancelable(true);
pDialog.show(); }
protected String doInBackground(String... args) {
String link_url = isi+"berita.php"; JSONParser jParser = new
JSONParser(); JSONObject json = jParser.AmbilJson(link_url);
try { str_json = json.getJSONArray("berita");
for(int i = 0; i < str_json.length(); i++){ JSONObject ar =
str_json.getJSONObject(i);
HashMap map = new HashMap();
String judul = ar.getString("judul"); String waktu =
ar.getString("tanggal")+" | "+ar.getString("waktu");
map.put(in_judul, judul); map.put(in_waktu, waktu);
data_map.add(map); } } catch (JSONException e) {
e.printStackTrace(); } return null; }
protected void onPostExecute(String file_url) {
pDialog.dismiss(); runOnUiThread(new Runnable() { public void run()
{ ListAdapter adapter = new
SimpleAdapter(TesAsyncTaskActivity.this,
data_map,R.layout.list_row, new String[] { in_judul, in_waktu}, new
int[] {R.id.judul, R.id.tanggal}); setListAdapter(adapter); }
});
} }}6. Karena akan mengakses HTTPRequest, jangan lupa untuk
menambahkan permisionnya pada file AndroidManifest.xml.
7. Setelah selesai, sekarang kita coba jalankan pada sebuah
emulator yang menggunakan android versi 4.0.3 atau 3.0 juga bisa.
Akan muncul sebuah DialogBox yang sudah kita buat pada
methodonPreExecute().
Nah, sekarang ketika akan membuat aplikasi yang membutuhkan
komunikasi data internet jangan lupa untuk menambahkan AsyncTask.
Agar dapat berjalan di android versi yang lebih tinggi, mengingat
saat ini sudah banyak hape android yang menggunakan OS versi
terbaru. OK deh, sekian dulu postingan saya kali ini, semoga
bermanfaat untuk rekan-rekan yang sedang dibuat galau gara-gara
aplikasinya force close di android versi 3.0 ke atas :D.Happy
Blogging and Keep Coding