Latest Posts

ANDROID 8: Mengenal Explicit dan Implicit Intent (Praktek Memanggil Aplikasi Lain dari Aplikasi kita)

- 4 Comments

Part 2: Praktek memanggil aplikasi yang sudah kita buat (MetuWebBrowser) dari aplikasi kita dengan implicit Intent.

Masih ingatkan anda tutorial [ANDROID NO.6: Mengenal Intent dan Kegunaannya (Praktek Mengirim Data Antar Activity dalam Satu Aplikasi)]? Nah, pada tutorial ini kita akan praktek tidak hanya transfer data antar Activity dalam satu aplikasi, tapi interaksi antar aplikasi.

Kita akan menggunakan Metu WebBrowser yang sudah kita buat kemarin pada tutorial sebelumnya sebagai object penerima Intent. Yuk kita bahas,


Pembahasan kita adalah Explicit Intent dan Implicit Intent. Nah, sebetulnya, Explicit Intent sudah kita bahas pada tutorial PART 1 kemarin. Itu adalah Explicit Intent. Apa itu Explicit Intent?

Explicit Intent

Explicit intent adalah Intent yang secara ekplisit mendefinisikan komponen yang harus dipanggil oleh Android System dengan menggunakan Class Java sebagai identifier-nya. Bingung? :P makanya ayo diterusin bacanya :P

Coba perhatikan kembali source code pada tutorial pertama kita seperti berikut ini,
Lihat gambar 1:


Coba baca kodenya, kita membuat Intent dengan menggunakan dua (2) parameter. Parameter yang kedua itulah (DisplayActivity.class) yang dimaksud Class Java. Class inilah yang digunakan sebagai identifier. Nah, explicit intent ini kebanyakan digunakan interaksi antar activity dalam satu aplikasi. Lalu bagaimana cara mengirim dan menangkap data yang dikirim? Nahhh, coba buka kembali PART 1 yang sudah menjelaskan panjang dan lebar tentang Explicit Intent ini.

Implicit Intent

Implicit Intent adalah intent yang memanggil aplikasi dengan memberikan parameter action dan data untuk action. Ingat, parameter nya adalah action dan data untuk action. Masih ingatkah bahwa kemarin kita saat membuat parameter disugihi bantuan penulisan kode seperti berikut:
Lihat gambar 1.1:


Nah, yang kita akan kita gunakan adalah parameter action dan data untuk action , bukan packageContext dan Class. :)

Coba perhatikan contoh berikut:
Intent i = new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.mediatutorial.web.id"));

Coba lihat, kita memakai parameter action nya adalah Intent.ACTION_VIEW dan data action nya adalah Uri.parse(”http://www.mediatutorial.web.id));

Intent di atas akan memanggil SEMUA APLIKASI/KOMPONEN pada Android yang sudah teregister pada system Android dengan action VIEW tersebut. Nanti, Android System akan menampilkan semuanya kemudian pengguna bisa memilih aplikasi mana yang akan dipakai.

Pada kode di atas, akan menampilkan semua aplikasi yang teregister sebagai web browser yang terinstall di hp Android anda. Mudah bukan?
Lihat gambar 2:


Mari kita lihat contoh berikutnya:
intent = new Intent(Intent.ACTION_CALL,
Uri.parse("tel:(+62)12345789"));


Kode di atas akan menampilan semua aplikasi yang sudah teregister sebagai action Caller pada hp Android anda.

Contoh yang lain:
intent = new Intent(Intent.ACTION_EDIT,
Uri.parse("content://contacts/people/1"));

Kode di atas akan menampilan semua aplikasi yang sudah teregister sebagai editor untuk contact anda. Gampang kan?

Bila ada beberapa aplikasi yang ditemukan teregister dengan ACTION yang diberikan maka semua aplikasi tersebut akan ditampilkan, pengguna bisa memilih untuk menggunakan aplikasi yang mana. Tetapi bila hanya ada 1 saja aplikasi yang ditemukan maka Android System langsung akan membuka aplikasi tersebut.

Lanjutt...

Eits, ada pertanyaan, bagaimana cara meregister aplikasi yang kita buat supaya bisa masuk dalam kategori action tertentu??
MUDAH, baca terus sampai bawah ya,,, :)

Ah, ada pertanyaan lagi, contoh di atas hanya menampilkan Intent.ACTION_VIEW, Intent.ACTION_CALL, Intent.ACTION_EDIT, apakah ada action yang lain??
TENTU!!
Coba buka – buka documentasi tentang Intent di http://developer.android.com :P
Buuuaanyak sekali yang bisa anda eksplorasi dari Developer Android tersebut.

<intent-filter/>

Tag <intent-filter/> digunakan sebagai kode untuk meregister aplikasi yang kita buat. Nah, disini kita bisa menambahkan action apa saja sehingga aplikasi kita nanti bisa dipanggil oleh Android system.

<intent-filter/> ini bisa kita definisikan dalam AndroidManifest.xml.

Lihat gambar 3:


Perhatikan, dalam AndroidManifest.xml kita di atas, saya memberikan dua (2) buah <Intent-Filter/> :)
<intent-filter> pertama adalah default yang sudah diberikan Android Studio.
Kemudian yang kedua adalah yang kita berikan sebagai register untuk ACTION_VIEW.

Apa maksud kode di atas?? Simak terus...

Perhatikan, di dalam intent-filter, pasti minimal ada action dan category, meskipun ada tambahkan seperti data pada intent-filter kedua.

Pada intent-filter pertama, sebagai action adalah MAIN, artinya, activity tersebut merupakan point entry saat aplikasi berjalan. Jadi saat launching maka akan memanggil activity ini meskipun tidak ada input data/intent sama sekali. Mudah mengerti kan?

Juga sebagai category adalah LAUNCHER, artinya aplikasi tersebut terdaftar dalam launcher di hanphone.

Nah, lanjuttt,,,

<intent-filter/> kedua kita menambahkan action nya adalah VIEW sedangkan category nya adalah DEFAULT. Hayo, coba cari sendiri di google maksudnya apa,,, :P

Data disana merupakan input data yang diterima oleh activity.

PRAKTEK memanggil Aplikasi Web Browser dari Aplikasi lain

Yuk kita praktek memanggil aplikasi Metu WebBrowser yang sudah kita buat kemarin,
Nah, pertama kita harus membuat sebuah aplikasi baru. Aplikasi ini kita gunakan untuk memanggil aplikasi WebBrowser.

A.Membuat aplikasi pemanggil


Coba perhatikan susunan design dari aplikasi pemanggil yang akan kita buat seperti berikut ini:
Lihat gambar 4:


Kita hanya akan membuat sebuah Button dan memberikan method onClick pada button tersebut.

Hem, anda sudah tahukan cara menambahkan method onClick pada button ini? Jangan bilang kalo anda lupa bagaimana cara menambahkannya yaa... :P
Bila betul – betul lupa, coba lihat tutorial PART 1.

Lanjut....

Method yang kita tambahkan adalah sebagai berikut,
Lihat gambar 5:


Itu adalah method yang kita gunakan sebagai event pada button. Sudah tahu kan dimana method tersebut harus diletakkan?? :)

Lihat, kita menggunakan kode:
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(”http://www.mediatutorial.web.id));

Kita akan mencari semuaaaaaa aplikasi yang teregister sebagai ACTION_VIEW dan mengirimkan data berupa Uri diatas. Mudah bukan??

Lanjutt...

Memodifikasi MetuWebBrowser


Sekarang, kita akan membuka project membuat Browser kita yang kemarin. Bila belum pernah buka/praktek, bisa dilihat di sini -> .

OK, buka project Web Browser kita, pertama yang harus dilakukan adalah me-register Aplikasi Web Browser kita ke Android System. Untuk meregister, kita bisa menambahkan <inten-filter/> tag ke dalam AndroidManifest.xml
Lihat kode dibawah,

Lihat gambar 6:


Anda bisa lihat, kita menambahkan <intent-filter> action, category, sekaligus data. Tiga (3) hal ini sudah kita bahas di atas.

Mudah bukan??? Kode di atas digunakan untuk meregister aplikasi MetuWebBrowser ke dalam Android system.

Yang kedua, adalah kita akan menambahkan beberapa baris kode, agar MetuWebBrowser kita ini bisa menangkap Intent yang dikirimkan oleh aplikasi pemanggil.

Nah, untuk menambahkannya, kita bisa sedikit otak – atik method onCreate() dalam class MainActivity.java, lihat kode berikut,
Lihat gambar 7:


Cobalah membaca kode diatas, mudah bukan membacanya??

Mari kita bahas,

Intinya adalah kita menangkap intent yang dikirim kemudian memasukkannya ke dalam variabel ‘data’. Variabel ‘data’ itu sendiri merupakan object Uri.

INGAT, DISINI kita menggunakan object Uri. Bukan String :)

Nah, kita juga akan membuat object url.
Anda bisa lihat, url yang kita tangkap kemudian dijadikan string dengan method toString();

Kemudian baru kita masukkan ke dalam method loadUrl().

Perhatikan kode url = new URL(data.getScheme(), data.getHost(),data.getPath());
Coba bila belum tahu, cari saja di google, apa maksud getScheme(), getHost(), getPath() :)

Ah, ada pertanyaan, method loadUrl() pada object webBrowserKu memiliki parameter yang HARUS bertipe String,lihat kode,

webBrowserKu.loadUrl();

Bisakah kita langsung menangkap Intent kemudian langsung memasukkan kedalam parameter untuk loadUrl() yang bertipe string seperti kode berikut?

Lihat gambar 8:



Ya, tentu bisa :)
Semua tergantung kreatifitas kita kan,,,

OK, dua kode baris terakhir hanya menset supaya EditText sebagai address bertuliskan sama dengan url halaman website yang dibuka.
Mudah bukan???

Nah, sekarang cobalah running aplikasi pemanggil anda, dan lihat, pasti nanti akan muncul pilihan WebBrowser yang bisa anda pilih, salah satunya adalah MetuWebBrowser yang sudah kita modifikasi tadi.


Mudah – mudahan bermanfaat,
Salam

PART YANG LAIN:
Part 1: Mengirim Data ke Activity Tertentu dan Menampilkannya
Part 2: Memanggil Activity Aplikasi Tertentu dari Aplikasi kita (halaman ini)
Part 3: Mengirim Data ke Activity Pada Aplikasi Lain dan Menampilkannya (SILAHKAN ANDA KERJAKAN SENDIRI)
===================
DAFTAR CODE

Metu WebBrowser

activity_main.xml


MainActivity.java


Aplikasi Pemanggil

Activity_main.xml


MainActivity.java



ANDROID 7: Membuat Web Browser untuk Android

- 2 Comments

Tutorial membuat Web Browser pada Andoid ini juga kita integrasikan dengan tutorial Part 1: Mengenal Intent dan Kegunaannya (Praktek Interaksi antar Activity dalam satu aplikasi) dan part – part berikutnya.

Web Browser apa yang anda gunakan untuk browsing web di Android? Opera, Firefox, Chrome ataukah Browser bawaan Android? Yang pasti bukan IE :P,

Nah, anda bisa membuat sendiri web browser untuk Android. Selain bisa meng-koding dengan skill kita sendiri, Android API pun menyediakan komponen yang bisa kita gunakan untuk berkreasi membuat Web Browser, yaitu WebView Component. Kita akan membahas tentang WebView ini dan praktek membuat aplikasi Web Browser sederhana, dan anda harus mengembangkannya sendiri. :)



Bila anda menggunakan Android Studio seperti yang saya gunakan, anda bisa melihat komponen WebView pada Pallete Window.
Lihat gambar 1:


Untuk menambahkan komponen ini pada Aplikasi yang anda buat, tinggal drag and drop saja pada tab design. Mudah bukan?

Nah, pada project kali ini saya menambahkan beberapa komponen yang kita gunakan untuk membuat Web Browser ini, yaitu:
-Komponen EditText dengan id urlTxt, -> digunakan untuk mengetikkan alamat url web yang ingin dibuka.
-Komponen Button dengan id btnGo, -> digunakan untuk membuka alamat url.
-Komponen WebView dengan id myWebView, -> digunakan untuk menampilkan halaman web yang akan dibuka.

Tampilan design kita seperti terlihat pada gambar dibawah ini, silahkan color/warna anda berikan sendiri dari Properties Window yang ada di Android Studio. Mudah bukan? Anda bisa memberi background color sendiri kan?
Lihat gambar 2:


Supaya lebih rapi, saya menggunakan Linear Layout (Horizontal) untuk meletakkan komponen EditText dan komponen Button. Yang belum tahu linear layout (horizontal) silahkan browsing di Google :P

Setelah kita menata sedemikan rupa komponen – komponen kita, saatnya kita memberikan method onclick pada komponen Button yang sudah kita berikan id btnGo tadi. Anda sudah tahu caranya kan?

Yup, tinggal berikan method pada properties window. Nah, disini saya berikan saja method gotoUrl.
Lihat gambar 3:


Nah, saya yakin, bila sudah familiar dengan Android Studio bisa langsung membuat method yang belum ada ke MainActivity.java kita. Ingat, onclick adalah merujuk pada method yang kita masukan, bila method tidak ditemukan maka Android Studio secara otomatis akan menginformasikan kepada kita bahwa method belum ada. Silahkan pilih option untuk membuat method baru dari gambar bola lampu yang muncul :P , hayo masihkan anda ingat kode xml ini di tab apa?? :P
Lihat gambar 4:


Ok, Android Studio akan membuat method gotoUrl(View view){} secara otomatis di MainActivity.java, nah, sekarang sementara biarkan method ini, yuk kita lihat dulu ke method lain,,,

Coba perhatikan MainActivity.java , ini adalah satu – satu nya Activity pada project kita. Yuk, kita tambahkan variable ,
Lihat gambar 5:


Perhatikan, saya membuat sebuah variable theUrl yang bertipe String. Variable inilah yang nantinya kita gunakan untuk menampung url yang dimasukkan dari komponent EditText yang sudah kita beri id urlTxt tadi.

Nah, berikutnya saya membuat sebuah object dengan nama webBrowserKu yang merupakan tipe dari WebView.

Loh, ada pertanyaan, apa mau bikin komponen WebView lagi??? :P

Bukan, simak terus nanti dibawah,

Sekarang, yuk kita lihat method onCreate(), ini adalah method yang di panggil saat Android App kita terloading. Nah, kita tambahkan kodenya seperti berikut ini,
Lihat gambar 6:


Perhatikan kode:
webBrowserKu = (WebView)findViewById(R.id.myWebView);

Nah, itulah apa yang akan kita lakukan pada object webBrowserKu yang baru saja kita buat tadi. Object tersebut kita assign dengan komponen myWebView. Bisa dimengerti? Bila belum mengerti, coba stop sampai disini dan amati kembali :)

Lajuttt...

Ehm, ada sedikit kelemahan dari komponen WebView , mudah – mudahan di Android API yang akan datang kelemahan ini bisa ditambal. Saat tutorial ini ditulis, saya menggunakan Android API 21 dentan minSdk API 15.

Kelemahannya adalah, ketika ada sebuah link dari website yang sudah kita buka, kemudian kita membuka link tersebut, maka link tidak membuka di WebView kita, melainkan akan memanggil aplikasi Web Browser default pada Android System anda. Maka dari itu untuk mensiasatinya, kita menggunakan kode yang kedua:

webBrowserKu.setWebViewClient(new WebViewClient());

Mudah bukan?

Bukan hanya itu saja, secara default, komponen WebView men-disable Javascript, maka dari itu, kita pun harus meng-enable Javascript tersebut dengan kode berikutnya:

WebSettings theWebSetting = webBrowserKu.getSettings();
theWebSetting.setJavaScriptEnabled(true);


Ada kesulitan sampai disini?
Lanjutttt....

Kita akan melihat kode method gotoUrl(){} yang baru saja kita buat tadi, perhatikan gambar,
Lihat gambar 7:


Intinya, kita akan membuat object EditText yang diberi nama theEditText kemudian mengambil value dari komponen EditText yang kita beri nama urlTxt tadi. Kemudian kita memanggil salah satu method dari object webBrowserKu yaitu method loadUrl. Nah, sampai disini bisa diikuti kan? Yes, kita sudah selesai membuat browser sendiri untuk Android, silahkan run atau debug pada Emulation anda.

Sebetulnya, komponen WebView memiliki banyak sekali method dan properties nya, anda bisa melihat documentasi dari Class WebView pada http://developer.android.com/docs/reference/android/webkit/WebView.html

Meskipun memiliki banyak sekali method dan properties yang membantu kita, namun hanya beberapa saja yang akan saya gunakan di tutorial ini, yaitu:

loadUrl();
reload();
stopLoading();
goBack();
goForward();

untuk pengembangan selanjutnya, silahkan anda coba sendiri :)

Cukupkah sampai disini?

Belum, kita harus memberikan permission kepada aplikasi kita supaya diizinkan oleh Android System untuk konek ke Internet, kita menambahkan permission nya pada AndroidManifest.xml, perhatikan kode di bawah,,,

Lihat gambar 8:


Nah, adakah yang belum tahu kegunaan AndroidManifest.xml? Bila ada yang belum tahu, silahkan browsing :P

Terakhir, yuk kita berikan menu,,, menu ini kita tambahkan pada ActionBar. Anda sudah tahu kan tentang ActionBar??? :P bila belum, silahkan browsing di Google :P

Kita akan menambahkan menu untuk Refresh, Stop, Back dan Forward serta menu ini kita letakkan di ActionBar. Untuk membuatnya sangat mudah, silahkan buka menu_main.xml yang sudah otomatis tersedia di struktur folder Android Project anda.
Lihat gambar 9:


Sekarang, buka menu_main.xml dan tambahkan beberapa kodenya seperti berikut,
Lihat gambar 10:


Mudah bukan cara menambahkannya, hanya tinggal menambahkan saja kan, nah, pada setiap item kode xml tersebut, saya hanya menambahkan id, title, dan onClick.

Sebetulnya, untuk hal ini, id tidak penting, yang penting adalah title dan onClick. Title nanti akan muncul pada menu, sedangkan onClick adalah method yang dipanggil saat menu tersebut dipilih.

Eits, jangan senang dulu karena bikin menu nya sangat amat mudah sekali, coba arahkan mouse anda pada onClick value di setiap item, nah,,, bisa keliatan errornya kan??
Lihat gambar 11:


Inti dari problem adalah bahwa, method yang dipanggil saat onClik belum kita buat di MainActivity.java, cobalah membuat method secara otomatis dengan mengarahkan mouse pada gambar bola lampu tersebut, bisa kan anda membuat method nya??? :P

//break :)

Bila anda cukup pinter, pasti untuk membuat method pada setiap item bisa dilakukan dengan mudah...

Nah, sekarang buka MainActivity.java, dan lengkapilah method anda dengan mengetikan kode seperti berikut ini,
Lihat gambar 12:


Perhatikan kodenya, mudah bukan??? Yup, tutorial ini memang dibuat sedemikian mudahnya untuk dimengerti... :)
Ok, sekarang cobalah run kode anda dan bereksperimen lah.
Semoga bermanfaat,

Salam,

Hasil akhir, lihat gambar 13:


KODE – KODE LENGKAP:
MainActivity.java


AndroidManifest.xml


menu_main.xml


activity_main.xml


ANDROID NO.6: Mengenal Intent dan Kegunaannya (Praktek Mengirim Data Antar Activity dalam Satu Aplikasi)

- 1 Comment
Part 1: Praktek Mengirim Data Antar Activity dalam Satu Aplikasi

Seberapa seringkah anda menggunakan Intent? Saya yakin untuk anda yang berkecipung dengan Android Programming sudah sangat familiar bahkan akrab di luar kepala, tapi bagi para pemula memahami Intent sangat lah tidak mudah :P

Intent ini biasanya digunakan untuk interaksi antar komponen pada sistem operasi Android. Ingat, antar komponen. Nah, maka pada tutorial ini kita akan membahas tentang Intent dan kegunaannya.


Intent merupakan object dari package android.content. Intent ini bisa kita gunakan sebagai jembatan interaksi antar komponen dalam system operasi Android. Anda bisa lihat pada screenshot di atas.

Jembatan gimana maksudnya? Kalo dalam bahasa pemrograman banyak yang menyebut “runtime binding” antar komponen atau “messaging object” antar komponen. Intent ini banyak sekali manfaat untuk kita, tapi kebanyakan digunakan untuk interaksi antar “activity” dalam satu aplikasi maupun interaksi antar “activity” antar beberapa aplikasi. Hebat kan?

Anda sudah tahu tentang “activity” bukan?

Mari kita bayangkan anda adalah seorang programmer Android hebat, kemudian anda membuat sebuah aplikasi Email. Nah, dalam aplikasi tersebut kita bisa membuat beberapa activity untuk proses masing – masing, seperti:

ActivityInbox -> untuk meloading email – email yang masuk,
ActivityCompose -> untuk meloading halaman menulis email,
ActivitySuccess -> untuk menampilkan halaman sukses kirim email,
ActivitySent -> untuk meloading halaman email terkirim,

Nah, bayangkan cukup empat (4) buah activity itu saja. Bila anda ingin interaksi antar activity tersebut, anda bisa menggunakan Intent :) . Ini baru interaksi antar activity dalam satu aplikasi lho, belum interaksi antar activity antar aplikasi yang berbeda.

Gampang kan membayangkannya? Membuat nya juga gampang bila anda sudah familiar dengan intent.

Mari lanjut...

Setelah itu, anda bisa membuat aplikasi lain, misalnya aplikasi PHOTO VIEWER. Nah, dalam aplikasi PHOTO VIEWER ini anda bisa memberikan fasilitas berbagi photo, salah satunya berbagi melalui email. Ketika pengguna menekan tombol berbagi melalui email, maka aplikasi PHOTO VIEWER memanggil salah satu activity dari aplikasi email kita tadi, tentu saja juga menggunakan Intent. Hebatkan? Memanggil activity aplikasi tertentu dari aplikasi lain dengan Intent.

Nah, inilah hebatnya Intent :)

Sebetulnya, Intent tidak hanya digunakan untuk hal – hal yang berhubungan dengan interaksi activity, tapi juga interaksi dengan ‘service’ dan ‘broadcast’.

SELAIN ITU, intent bisa kita gunakan sebagai tempat membawa beberapa data yang akan kita kirimkan ke komponen lain. Cool...

Untuk mengetahui lebih detail tentang Intent, bisa anda lihat dan baca di http://developers.android.com/docs/guide/components/intents-filters.html

Nah, bila anda baca document di atas, anda bisa mengetahui bahwa type intent itu ada dua, yaitu explisit intent dan implicit intent. Kalo kita memanggil sebuah komponen dengan dengan memberikan nama komponen yang dipanggil berarti metode ini disebut explisit intent, begitu juga sebaliknya.

Mari lanjutt....

Saat Intent ingin memanggil sebuah Activity atau service, pasti Intent ini dilengkapi dengan parameter yang dibawa. Parameter yang dimaksud adalah sebagai berikut:
1.Component Name
2.Action
3.Data
4.Category
5.Extras
6.Flags

Detail tentang parameter tersebut silahkan baca dokumentasi nya developer.android.com

Guna memperjelas kegunaan Intent, mari kita praktek beberapa simple aplikasi:
a.Mengirim Data ke Activity Tertentu dan Menampilkannya (Part 1, halaman ini)
b.Mengirim Data ke Activity Pada Aplikasi Lain dan Menampilkannya (Part 2, belum)
c.Memanggil Activity Aplikasi Tertentu dari Aplikasi kita (Part 3, belum)

Mari kita mulai praktek :)
a. Mengirim Data ke Activity Tertentu dan Menampilkannya

Ket: Saya menggunakan Android Studio IDE, bila anda menggunakan IDE lain silahkan menyesuaikan.

Kita akan membuat project untuk mengirim data dari suatu activity ke activity yang lain, nah, setidaknya kita di sini akan membuat 2 (dua) buah activity, yaitu MainActivity dan DisplayActivity.

Ingat, saat membuat DisplayActivity, pastikan parent dari DisplayActivity adalah MainActivity.

Kenapa demikian?

Dengan menambahkan parent activity, maka nanti akan ada tombol up , yang bisa mengarah ke activity sebelumnya (ativity atasnya), lihat screenshot final di halaman bawah ini. :)

Lihat gambar parent activity:


Anda pun bisa melihat raw code pada AndroidManifest.xml nya.

Sudahkah anda mengenal activity? :) bila belum tahu apa itu activity, coba browsing atau buka – buka tutorial sebelumnya tentang activity.

Yup, activity ini beda dengan Class lho, anda bisa membuat activity kan? Nah, di sini saya menggunakan Android Studio, official IDE dari Google untuk Android. Perhatikan activity yang telah saya buat.
Lihat gambar 1:


Tahukah anda apa bedanya Activity dengan Class biasa? :P

Yup, selain Activity membuat beberapa method secara otomatis, nih object juga membuat layout xml secara otomatis pula :)
Lihat gambar 2:


Pada IDE modern apa pun, Android Studio, QT Editor, Visual Studio, pasti selalu ada bagian layout (biasanya xml) maupun bagian code backend nya.
Begitu juga dengan saat kita membuat Activity, maka secara otomatis membuat xml nya sebagai layout/ui. Anda tahu layout kan?

Nah, mari kita buka layout main kita (activity_main.xml).
Lihat gambar 3:


Pada activity_main.xml, saya menambahkan:
-TextView Component , saya berikan tulisan “Masukan nama anda”
-EditText Component, saya berikan id txtNama
-Button Component, saya berikan id btnKirim

Anda sudah tahu kan cara menambahkan komponen di atas? :) anda juga sudah tahu kan cara menambahkan id pada setiap komponen? :P bila belum tahu, coba cari di google :P,

Nah, komponen Button dengan id btnKirim tadi kita berikan properties “onClick” dengan value sendData.
Lihat gambar 3.1:


sendData ini adalah sebuah method atau function yang kita berikan kepada Button. Kenapa value di sana tidak sendData melainkan @string/_sendData_ ? Hayo, coba diinget – inget.. :P

Anda pun bisa melihat raw xml code dengan mengklik tab xml.
Lihat gambar 3.2:


Itu semua adalah activity_main.xml , sekarang mari kita lihat activity_display.xml dan menambahkan juga komponen TextView.
Lihat gambar 4:


Nah, saya menambahkan sebuah TextView component dengan id displayName.
Ingatlah id dari setiap komponen, karena kita akan menggunakan id tersebut untuk mengedit setiap komponen :)

Sampai di sini mudah bukan? Ada kesulitan? Bila ada coba pecahkan kesulitan anda terlebih dahulu, gunakan Google sebagai referensi pencarian, biasakan anda tetap menggunakan bahasa inggris :P

Mari kita lanjut ke source java kita....

Pertama, mari kita buka MainActivity.java, saya akan mencoba membuat sebuah variable yang nanti nya akan kita kirim ke activity yang lain. Variable ini saya namakan dengan DATA_NAMA, perhatikan gambar,
Lihat gambar 5:


Nah, DATA_NAMA saya berikan public static final. Sudah kah anda tau maksud ini? :P bila belum, coba cari cari di Google, ini adalah dasar – dasar pemrograman Java. Hayo, sebelum ke Android Programming alangkah baiknya bila anda familiar dengan Java :)

Berikutnya, masih ingat kan dengan method sendData yang tadi kita berikan kepada properties onclick pada button?

Sekarang kita akan membuat method / function sendData tersebut.
Lihat gambar 6:


Lihat, kita menggunakan Intent untuk interaksi antar Activity :)
Pertama – tama , kita membuat sebuah Object intent, dengan parameter Contex dan Class.
Lihat gambar 7:


Intent intent = new Intent(this,DisplayActivity.class);

Perhatikan parameter pertama, bahwa ‘this’ mengacu kepada activity itu sendiri, dalam hal ini adalah MainActivity.java. Activity merupakan subclass dari Context, sehingga penggunaan ‘this’ sudah tepat.

Parameter kedua adalah ‘Class’ dimana system harus men-send intent, dalam kasus ini sebagai penerima intent adalah DisplayActivity. :) mudah bukan?

Line berikutnya, kita menseleksi object yang kita butuhkan yaitu EditText Component yang kita beri id txtNama tadi.

EditText edittext_datanama = (EditText) findViewById(R.id.txtNama);

Setelah kita menyeleksi komponen, selanjutnya kita mengambil value dari komponen tersebut dan meng-convertnya ke string,

String dataNama = edittext_datanama.getText().toString();

Baru kemudian kita memasukan value ke variable yang kita buat tadi, kemudian memanggil Activity target.

intent.putExtra(DATA_NAMA,dataNama);
startActivity(intent);


Gampang sekali bukannn???

Anda bisa melihat documentasi dari intent dan method beserta standard activity action nya di http://developer.android.com/reference/android/content/Intent.html

Kita sudah berhasil membuat method untuk mengirim data, nah, sekarang kita harus membuat DisplayActivity.java agar bisa menerima data yang sudah dikirimkan oleh MainActivity.java.
Lihat gambar 8:


Perhatikan bahwa, method onCreate() secara otomatis sudah digenerate oleh Android Studio saat kita membuat Activity.
Yang harus kita lakukan adalah membuat sebuah object intent.

Intent intent = getIntent();

Berikutnya, kita membuat sebuah variable, variable yang kita buat adalah dataNama. Kemudian mengambil variable DATA_NAMA dari intent dan memasukan ke nilainya ke variable yang kita buat tadi.

String dataNama = intent.getStringExtra(MainActivity.DATA_NAMA);

Nah, sampai disini mudah bukan?
Mari lanjut....

Setelah kita mendapatkan nilai dari DATA_NAMA, maka kita akan MENYELEKSI object yang nanti nya kita gunakan sebagai tempat untuk menaruh DATA_NAMA.

Masih ingat dengan komponen TextView yang kita tambahkan ke DisplayActivity.java? kita akan menyeleksinya dan mengganti tulisannya :P ,,,

TextView textview_datanama = (TextView) findViewById(R.id.displayName);
textview_datanama.setText(dataNama);


Mudah bukan, , ,

Hasil dari tutorial di atas adalah seperti ini,
Lihat gambar 9:


Demikian mudah – mudahan bermanfaat.
Salam :)

PART YANG LAIN:
Part 1: Mengirim Data ke Activity Tertentu dan Menampilkannya (halaman ini)
Part 2: Memanggil Activity Aplikasi Tertentu dari Aplikasi kita
Part 3: Mengirim Data ke Activity Pada Aplikasi Lain dan Menampilkannya (SILAHKAN ANDA KERJAKAN SENDIRI)
===================

DAFTAR CODE
MainActivity.java


DisplayActivity.java


Activity_main.xml


Activity_display.xml


ANDROID No.5: Beberapa problem ketika pertama menggunakan Android Studio (dan solusinya)

- 2 Comments

Sudahkah anda mengenal dan mencoba menggunakan Android Studio?
Android Studio merupakan Official IDE (Integrated Development Environment) dari Android (Google). IDE ini merupakan IDE resmi untuk membuat aplikasi berbasis Android.
Sebelum Android Studio dirilis sekitar bulan - bulan akhir 2014 para developer menggunakan Eclipse with ADT (Android Development Tool). Sekarang, semakin banyak Developer yang menggunakan Android Studio baik para pemula maupun para expert yang beralih dari Eclipse ADT.

Nah, untuk para pengguna baru, pasti akan menemui problem saat pertama menginstall maupun menjalankan IDE ini.
Berikut kita bahas beberapa problem dan pemecahannya.



Problem - problem dibawah ini diambil dari Forum Diskusi MediaTutorial, untuk anda yang mungkin mengalami problem yang sama, silahkan bisa ditanyakan di Forum Diskusi tersebut.
PERLU DIINGAT, bahwa Pemrograman Android adalah pemrograman yang berbasiskan Java, jadi pastikan anda telah menginstall JDK (Java Development Kit) pada komputer anda. Bila belum, installah JDK sesuai dengan system operasi komputer anda.
Untuk menginstallnya anda bisa mengklik di situs Oracle http://www.oracle.com/technetwork/java/javase/downloads/index.html

Problem dan Pemecahan pada saat pertama menggunakan Android Studio.
1.Android Studio gagal mendeteksi JVM di Win 8.1 64 bit
Saya ambil dari http://expert.mediatutorial.web.id/discussion/38/android-studio-gagal-mendeteksi-jvm-di-win-8-1-64-bit
Saya baru saja install android studio di Windows 8.1 64 bit,
saya pun juga sebelumnya sudah menginstall JDK 8 (32bit) pada komputer saya,
saya pun juga sudah menambahkan system variable JAVA_HOME dan mensetting value nya dengan benar,
lihat gambar:


saya check di command prompt pun juga java sudah terinstall dengan benar:
lihat gambar:


tapi ketika saya membuka software android studio selalu ada tulisan JVM not found.
heran? kenapa ya???
help
lihat gambar:


Solusi: Anda bisa mencoba install jdk 64 bit, kemudian system variable JAVA_HOME tadi isikan value nya dengan path dari JDK 64bit tersebut.

2.Android Studio error: tidak bisa mendetek build-tools:21.1.1
Saya ambil dari: http://expert.mediatutorial.web.id/discussion/39/android-studio-error-tidak-bisa-mendetek-build-tools-21-1-1
Saya bingung dengan Android Studio saya, selain error pada windows 8.1 64bit kemarin, saya coba install di windows 7 32 bit,
dan errornya pun seperti ini, lihat gambar:


Saya berusaha mencari apakah builds-tools tersebut tidak ada, tapi setelah saya mencari ternyata ketemu:
lihat gambar:


Tapi dari yang saya temukan tersebut versi dari builds-tools adalah 21.1.2,
nah apakah android studio membutuhkan versi 21.1.1 terlebih dahulu dan harus konek ke internet untuk mendownloadnya???
Solusi: Koneksikan komputer anda ke internet, Android Studio secara otomatis akan mendownload file - file yang dibutuhkan untuk menjalankannya.

3.Error: x86 emulation currently requires hardware acceleration
Saya ambil dari: http://expert.mediatutorial.web.id/discussion/42/error-x86-emulation-currently-requires-hardware-acceleration#latest
Saya sudah install ok Android Studio,
Sudah update, path dan lain - lain dengan meng-konek kan ke internet.
Ada problem lain yang muncul, yaitu ketika akan run code, maka muncul error lagi seperti gambar di bawah ini:

Adakah solusi??

Solusi: Coba install intall HAXM nya,
bisa dengan Android Manager , lihat daftar extra, nah, disana ada INTEL HAXM nya,
atau,
coba check C:\Users\KomputerMu\AppData\Local\Android\sdk\extras\intel\
nah bila sudah ada installer HAXM nya, coba double click untuk menginstall HAXM tersebut.

Note:
Untuk menginstal x86 intel haxm, processor anda harus support Intel Virtualization.
Secara default, Intel Virtualization adalah off (mati), untuk menghidupkan nya anda bisa membuka bios anda dan men-setting nya ke on (hidup).


PENJELASAN TENTANG INTEL HAXM
INTEL HAXM (Intel Hardware Accelerated Execution Manager) adalah sebuah terobosan baru dari Intel untuk para Developer Android yang menginginkan kecepatan debug/run pada Android Emulator.
Kenapa demikian? karena, sebelumnya, untuk me-run aplikasi Android yang kita buat pada emulatornya ternyata sangatlah lambat. Yup, lambat sekali.:'(

Nah, untuk anda para pengguna komputer yang ber-processor Intel tidak perlu cemas dengan lambatnya proses emulator pada Android, anda tinggal mengaktifkan Intel Virtualization dari bios anda kemudian menginstall Intel Haxm, caranya seperti di atas.

Bila ingin tahu lebih jauh tentang Intel Haxm, bisa baca di link ini: http://teknojurnal.com/mempercepat-emulator-android-di-arsitektur-intel/

Itulah beberapa problem saat pertama menggunakan Android Studio.
Mungkin ada problem yang lain? anda bisa sharing problem anda di Expert Forum (http://expert.mediatutorial.web.id), bila ada problem baru maka kita akan mengupdate artikel ini.

Semoga bermanfaat.


VISUAL C# No.48: Mengenal Printer API pada C# (Printing bag. pertama)

- 3 Comments

Cetak - mencetak dengan printer adalah sebuah hal yang sering kita lakukan dimanapun dan kapanpun. Sangat rugi bila anda sebagai seorang programmer .NET tidak paham bagaimana cara melakukan printing seperti ini.

Nah, pada tutorial ini kita akan mengenal Printer API pada C#. Bagaimana cara membuat sebuah aplikasi supaya bisa berinteraksi dengan printer. Serta kita akan mengenal namespace System.Drawing.Printing.




Pada tutorial ini saya menggunakan Microsoft Visual Studio 2013 Update 2 , untuk anda yang menggunakan IDE lain silahkan menyesuaikan.

Secara umum ada empat (4) proses yang perlu kita tahu saat kita akan mencetak (printing) baik teks maupun graphic, yaitu:

1. Menentukan Printer yang akan digunakan.
Sangat mungkin, pada komputer kita telah terinstall beberapa printer. Salah satunya pasti didefinisikan oleh system sebagai default printer. Sebetulnya kita bisa menentukan printer mana yang ingin kita gunakan. Bila kita tidak menentukan printer nya, maka system secara otomatis akan menggunakan default printer.

Pembahasan mengenai cara dan pengkodean untuk menentukan Printer mana yang digunakan akan kita bahas di bawah :)

2. Menentukan setting printer dan setting page (halaman / object) yang akan diprint.
Kita bisa mensetting printer kita, misalnya berapa copy yang ingin diprint, pilihan warna (berwarna atau hitam putih), dan lain – lain. Kita pun bisa menentukan setting page (halaman) / margin.

Sebetulnya untuk setting ini adalah optional, bila kita tidak memberikan settingan maka secara otomatis system akan menggunakan settingan default.

Untuk pengaturan seperti ini dan pengkodeannya akan kita bahas pada bagian bawah tutorial ini.

3. Membuat ‘print-page event handler’.
Event handler sangat penting digunakan dalam proses printing. Kita perlu membuat beberapa method / function untuk menghandle event – event ini.

Pembahasan tentang print-page event handler akan kita bahas pada bagian bawah.

4. Melakukan print terhadap document atau object.
Sudah jelas, kita tinggal memanggil method Print() dari class ‘PrintDocument’ yang akan mengirim bahan / object ke printer.

Yup, hanya empat (4) hal itu saja yang perlu kita pahami. Tapi jangan salah, teknis dan pengkodeannya juga lumayan bisa mengerutkan kening :)
Sebelum kita bahas point – point di atas satu per satu, perlu diperhatikan bahwa segala hal yang berkaitan dengan

printing terdapat dalam namespace System.Drawing.Printing sehingga anda harus menggunakan namespace tersebut pada bagian atas kode anda.

Apasih isi dari namespace System.Drawing.Printing tersebut?

Sama seperti namespace lain pada .NET, namespace ini mengandung bayak sekali Class, Delegates, dan Enumerations. Yang akan saya sebutkan hanya class saja yang terdapat dalam namespace ini diantaranya adalah sebagai berikut:
Public class InvalidPrinterException -> Represents the exception that is thrown when you try to access a printer using printer settings that are not valid.
Public class Margins -> Specifies the dimensions of the margins of a printed page.
Public class MarginsConverter -> Provides a MarginsConverter for Margins.
Public class PageSettings -> Specifies settings that apply to a single, printed page.
Public class PaperSize -> Specifies the size of a piece of paper.
Public class PaperSource -> Specifies the paper tray from which the printer gets paper.
Public class PreviewPageInfo -> Specifies print preview information for a single page. This class cannot be inherited.
Public class PreviewPrintController -> Specifies a print controller that displays a document on a screen as a series of images.
Public class PrintController -> Controls how a document is printed, when printing from a Windows Forms application.
Public class PrintDocument -> Defines a reusable object that sends output to a printer, when printing from a Windows Forms application.
Public class PrinterResolution -> Represents the resolution supported by a printer.
Public class PrinterSettings -> Specifies information about how a document is printed, including the printer that prints it, when printing from a Windows Forms application.
Public class PrinterSettings.PaperSizeCollection -> Contains a collection of PaperSize objects.
Public class PrinterSettings.PaperSourceCollection Contains -> a collection of PaperSource objects.
Public class PrinterSettings.PrinterResolutionCollection -> Contains a collection of PrinterResolution objects.
Public class PrinterSettings.StringCollection Infrastructure. -> Contains a collection of String objects.
Public class PrinterUnitConvert -> Specifies a series of conversion methods that are useful when interoperating with the Win32 printing API. This class cannot be inherited.
Public class PrintEventArgs -> Provides data for the BeginPrint and EndPrint events.
Public class PrintingPermission -> Controls access to printers. This class cannot be inherited.
Public class PrintingPermissionAttribute -> Allows declarative printing permission checks.
Public class PrintPageEventArgs -> Provides data for the PrintPage event.
Public class QueryPageSettingsEventArgs -> Provides data for the QueryPageSettings event.
Public class StandardPrintController -> Specifies a print controller that sends information to a printer.

Dari sekian banyak class seperti diatas, hanya beberapa class saja yang nanti akan kita gunakan pada pengenalan Printer API pada C# dan .NET ini nanti.

Mari kita bahas empat (4) point di atas satu – persatu.

1. Menentukan Printer yang akan digunakan


Seperti yang sudah ditulis di atas, kita harus memilih printer yang akan kita gunakan, bila tidak, maka system akan memilih printer default.

Pada bagian ini kita akan meloading semua printer ke dalam komponen comboBox.

Ada dua (2) komponen yang akan kita gunakan yaitu sebuah comboBox dengan nama ‘printerList’ dan sebuah button dengan nama ‘btnPrint’.
Lihat gambar 1:


Kita akan membuat kode untuk meloading semua printer yang terintall, lihat kode berikut ini:


Jangan lupa, terlebih dahulu kita harus menggunakan:

using System.Drawing.Printing;

Untuk memunculkan method Form1_Load() secara otomatis, anda bisa double click form yang sudah anda buat. Pada method Form1_Load() tersebut kita membuat sebuah ‘foreach’ loop. Looping ini akan mencari semua printer yang terinstall dengan menggunakan properties ‘InstalledPrinters’ dari class ‘PrinterSettings’. Kemudian hasil nya kita tambahkan satu persatu ke dalam komponen comboBox yang kita beri nama ‘printerList’ tadi.

Hasil dari running kode adalah seperti berikut,
Lihat gambar 2:


Bila printer anda sudah terintall pasti akan tertampil pada comboBox, ah, sayang sekali saya menulis tutorial ini pada komputer kamar saya, bukan pada komputer kantor :P jadi hanya printer di atas yang ada di komputer saya :P
Kita akan mencoba menambahkan method untuk button ‘coba print’. Pada method ini, kita sudah menginjak pada ‘print event’ dan ‘handler’ yang sebetulnya akan kita bahas pada poin berikutnya.



Anda bisa lihat, pada method di atas, kita membuat sebuah ‘PrintPage’ event dan kemudian membuat handler nya.

Pada PrintPageEventHandler kita memanggil sebuah method untuk men-draw (menggambar) sebuah object pada kertas kita. Method yang di panggil tersebut adalah ‘printHandler’.

Event handler ‘PrintPageEventHandler’ digunakan untuk menghandler ‘PrintPage’ event. Nah, pada point berikutnya kita akan membahas apa itu ‘PrintPage’ event dan event – event yang lain yang terjadi saat proses printing. Juga akan membahas handler untuk event – event tersebut.

Coba run dan click print, :)

2. Menentukan setting printer dan setting page (halaman / object) yang akan diprint.


Pada setting printers ini, sebetulnya banyak sekali setting printer atau properties printer yang bisa kita ‘get’ dan kita ‘set’ seperti:
*PrinterName
*PaperSizes
*Resolution
*Copies
*IsDefaultPrinter
*IsPlotter
*CanDuplex
*Collate
*IsValid
*SupportsColor
*dan lain - lain

Tetapi pada Printing Bag.Pertama ini kita akan hanya mencoba tiga (3) properties atau setting dari printer yang terseleksi yaitu PaperSizes, Resolution, dan Copies. Untuk yang lainnya akan kita bahas pada tutorial bagian berikutnya.

Cobalah tambahkan beberapa komponen untuk properties printer,
Lihat gambar 3:


Anda bisa lihat, pada tutorial ini saya menambahkan sebuah button ‘properties’ yang saya berikan nama ‘btnProperties’ dan juga sebuah ‘groupBox’ yang didalamkan ada tiga (3) buah komponen yang saya berikan nama:
comboBoxPaperSize
comboBoxResolution
textBoxCopies

Tiga komponen inilah yang nanti akan kita gunakan untuk ‘get’ dan ‘set’ printer kita.

Note: supaya ‘groupBox’ tidak terlihat sebelum user mengclick ‘btnProperties’ maka kita men-setting properties ‘visible’ untuk ‘groupBox’ ke false.

Saya akan menuliskan kode berikut ini:


Hasil dari running kode di atas adalah seperti pada gambar berikut ini:
Lihat screenshot:



Bagaimana cara kerja kode tersebut?

Method ‘btnProperties_Click()’ adalah sebuat method untuk komponen ‘btnProperties’. Untuk menambahkan sebuah method pada komponen button saat diclick, maka anda tinggal double click button tersebut pada Design Visual Studio.

Hanya ada satu (1) class dari namespace System.Drawing.Printing yang kita otak - atik pada method tersebut yaitu class ‘PrinterSetting’.

Pada class ini kita meloading properties ‘PaperSizes’ dan ‘PrinterResolution’. Setelah berhasil kita loading maka kita tambahkan hasil ke dalam masing – masing komponen comboBox. Mudah bukan?

3. Membuat ‘print-page event handler’.

Print Event

Sebelum memulai ‘print-page event handler’ ada baiknya kita memahami dulu tentang ‘Print Event’.
Pada saat proses printing, sebenarnya system melakukan beberapa event seperti ‘BeginPrint’, ‘PrintPage’, dan ‘EndPrint’.

-‘BeginPrint’ event adalah event yang terjadi saat memulai proses printing.
-‘PrintPage’ event adalah event yang terjadi saat sedang proses printing.
-‘EndPrint’ event adalah event yang terjadi saat proses printing selesai.

Secara umum proses dari printing adalah sebagai berikut:
Saat kita memanggil method ‘Print()’ maka segera setelah itu ‘BeginPrint’ event akan terjadi, kemudian system akan mengecheck apakah ada object yang akan di print.

Bila ditemukan object atau page yang akan diprint, maka ‘PrintPage’ event akan terjadi.
Ketika semua object / halaman telah tercetak maka ‘EndPrint’ event akan terjadi.


Mudah bukan?

Nah, untuk meng-handle event – event yang terjadi saat proses printing inilah kita membutuhkan yang namanya ‘event handler’. Seperti pada terjemahannya ‘event handler’ ini digunakan memang untuk meng-handle event – event yang occurred (terjadi) saat proses printing.

‘Event Handler’ yang akan kita gunakan pada tutorial ini adalah ‘PrintEventHandler’ dan ‘PrintPageEventHandler’.

PrintEventHandler biasanya digunakan pada event BeginPrint dan EndPrint, sedangkan PrintPageEventHandler digunakan pada event PrintPage.

Nah, mari kita modifikasi kode di atas, kita sesuaikan dengan ‘event’ dan ‘event handler’. Kode tersebut dapat anda lihat pada baris di bawah ini:



Perhatikan dan cobalah baca kode di atas.

Pada method btnPrint_Click() kita menambahkan event saat proses printing yaitu ‘BeginPrint’ , ‘EndPrint’ dan ‘PrintPage’ yang terdapat pada penggalan kode:

PrintDoc.BeginPrint += new PrintEventHandler(BeginPrintEH);
PrintDoc.EndPrint += new PrintEventHandler(EndPrintEH);
PrintDoc.PrintPage += new PrintPageEventHandler(PrintPageEH);

Dengan kita menambahkan event, maka kita pun harus memberikan ‘handler’ kepada masing – masing event tersebut.

Anda bisa lihat, class ‘PrintEventHandler’ digunakan untuk event ‘BeginPrint’ dan event ‘EndPrint’. Dan setiap event handler memiliki parameter yang mengarah pada method tertentu seperti ‘BeginPrintEH’ , ‘EndPrintEH’, dan ‘PrintPageEH’. Ketiga method ini memiliki peran masing – masing, semuanya bisa anda baca pada kode nya. ;)

Bagaimana? Mudah dimengerti kan??

4. Melakukan print terhadap document atau object.


Nah, sekarang, cobalah running kodenya, dan cobalah untuk melakukan printing.
Sampai disini dulu tutorial bagian pertama tentang printing. Kita akan mulai menginjak tutorial tingkat lanjut pada pertemuan berikutnya.

Sekian, semoga bermanfaat, salam.

Powered by themekiller.com