Friday, December 12, 2014

Membuat aplikasi android sederhana berbasis NFC menggunakan format NDEF message

Pada kesempatan kali ini akan dibuat aplikasi sederhana di android untuk menulis dan membaca data ke smartcard menggunakan format NDEF message. Pada saat menulis ataupun membaca data smartcard tidak digunakan teknik enkripsi, jadi jalur komunikasi datanya belum secure. Sebagai catatan, project android ini dibuat pada eclipse API-19 buat androidnya. Untuk pertama kali dibuat project default dieclipse, dengan nama project "AplikasiNFCSederhana". Langkah-langkah pembuatan sampai untuk running pertama kali dapat dilihat di sini. Selanjutnya atur tampilan utama aplikasinya, untuk itu klik folder res--layout--file .xml, seperti terlihat di bawah :


Setelah file xml-nya dibuka, pindah ketampilan xml, bukan yang graphical,


Eclipse secara default otomatis akan menggunakan format "relativelayout" seperti terlihat pada file xml di atas. Pada project ini relativelayout tersebut akan diganti menjadi "linearlayout",





 Nggg... secara lengkap format xml yang digunakan untuk project ini seperti terlihat di bawah :

           
Yang perlu diperhatikan pada file xml ini adalah "id" dari masing-masing kontrol, contohnya pada EditText terdapat Android:id = "@+id/data", nah "data" ini diperhatikan aj baik-baik, soalnya nanti akan digunakan lagi untuk diakses dimain program. Kemudian dibagian button ada id "tulis" dan "baca". Id-id nantinya akan digunakan kembali. Jika ingin melihat bagaimana file xml ini nantinya terlihat di HP/tablet, silahkan buka  graphical layout seperti ini :


Ok.... Tampilan aplikasinya sangat sederhana, tapi secara fungsional untuk proses membaca atau menulis data ke smartcard, GUI tersebut sudah cukup... :-)

Setelah konfigurasi GUI, berikutnya konfigurasi untuk file manifestnya. Buka file manifest tersebut dengan double klik aja. File manifest seperti terlihat di bawah :



AndroidManifest.xml ini berisi konfigurasi-konfigurasi yang dibutuhkan oleh aplikasi android untuk dapat menggunakan fitur-fitur pada HP/tablet android dimana aplikasi running. Misalnya jika aplikasi android yang kita buat butuh mengakses kamera HP atau butuh mengakses SD card, atau lainnya, nah difile inilah konfigurasi-konfigurasi tersebut diletakkan. Pada project ini dibutuhkan fitur NFC yang terdapat pada HP, oleh sebab itu, tambahkan konfigurasi untuk menggunakan fitur NFC ini, seperti terlihat di bawah :


Nah bagaimana jika digunakan HP/tablet yang tidak ada fitur NFC-nya...??? Secara otomatis aplikasi ini tidak akan berfungsi. Namun untuk membatasi agar aplikasi ini hanya dapat di-install oleh device yang mempunyai fitur NFC, maka tambahkan konfigurasi lain pada file manifest ini seperti pada kode di bawah :


Siip, sampai disini kita telah melakukan konfigurasi untuk kebutuhan NFC. Berikutnya akan dibuat kode-kode program dalam bahasa java agar aplikasi ini dapat menulis ataupun membaca data dari smartcard. Pertama-tama dibuat kode program untuk dapat mendeteksi keberadaan smartcard jika berada/ditempelkan ke HP/tablet NFC. Untuk silahkan buka main progam diproject eclipse ini, klik folder "src" kemudian expand package aplikasinya, kemudian double klik file.javanya,






Terlihat disini eclipse secara otomatis telah menambahkan beberapa kode program untuk kita hehe... :-)
Kemudian tambahkan variabel-variabel yang dibutuhkan seperti terlihat pada kode di bawah :


Bagi teman-teman yang mungkin belum terbiasa dengan eclipse, jika kita perhatikan pada kode diatas terdapat line yang secara otomatis diberi garis bawah merah oleh eclipse kemudian ada tanda x merah disebelah kirinya. Ini berarti pada kode tersebut terdapat kesalahan atau error. Nah untuk mengatasi error tersebut arah kan pointer mouse ke atas "EditText"nya, kemudian akan muncul tool tip seperti terlihat di bawah :


Kemudian klik "Import 'EditText' (android.widget)", nah eclipse akan secara otomatis menambahkan package baru kedalam main program kita sehingga EditText ini tidak error lagi.


Terlihat "EditText"nya sudah tidak ada kesalahan. Untuk "Button" juga dilakukan hal yang sama. Sebenarnya NfcAdapter, Tag, PendingIntent, dan IntentFilter juga awalnya tidak akan langsung dikenali, jadi harus dimport dl packagenya dengan menekan import bla bla bla...

Sampai disini kita telah membuat variabel-variabel yang akan digunakan untuk aplikasinya. Sebagai catatan, NfcAdapter itu adalah variabel yang nantinya dapat kita gunakan untuk mengecek apakah fitur NFC di HP sudah dihidupkan atau belum. Selain itu, seperti tergambarkan dalam namanya NfcAdapter, dia jugalah yang mengatur hal-hal rumit untuk menghubungkan antara software dan hardware untuk dapat menggunakan fitur NFC. Terus "Tag", Tag secara sederhana adalah variabel yang akan "memegang" object aktual program java dari smartcard yang didekatkan ke HP. Jadi jika Tag ini tidak valid maka fungsi write/read dari program java tidak dapat dipanggil. Hohoho... moga-moga mengerti, ini dijelasin sudah manusiawi tanpa istilah-istilah aneh... :-)
Terus, "PendingIntent" itu adalah object atau boleh "sesuatu" aja akan menyebabkan aplikasi yang kita dijalankan ketika suatu event terjadi. Contoh sederhana, jika tablet kita tidak menjalankan program apapun (idle), kemudian tiba-tiba ada smartcard yang didekatkan, Nah berarti ada event baru yang terjadi, sebut saja event ini adalah "ada smartcard yang datang" :D. Maka secara otomatis, OS Android akan mencari aplikasi yang PendingIntentnya dapat menghandle event tersebut. Terus karena PendingIntent yang kita buat pada project ini khusus untuk aplikasi smartcard, maka Android akan menjalankan aplikasi ini. Nggg... mungkin boleh juga disebut, PendingIntent itu adalah bapak penunggu event baru, Excuse me if I'm wrong...
Terus "IntentFilter", sesuai namanya yang ada filter, jadi dia akan memfilter/memilih event/intent apa saja yang boleh dieksekusi oleh aplikasi. Karena disini digunakan aplikasi untuk smartcard, berarti intentfilter ini digunakan untuk memfilter smartcard, apanya yang difilter..?? Yang difilter adalah jenis teknologi pada smartcardnya. Jika dibuat cerita, PendingIntent itu adalah bapak penunggu, terus apa yang ditunggu...??? Nah IntentFilter ini ngasih tau ke PendingIntent, Eeeh... PendingIntent kamu nunggu smartcard yang jenis atau teknologinya kayak gini yah, g' usah nungguin yang lain hehehe... :D. Jadi PendingIntent dan IntentFilter bekerja bersama-sama saling bahu membahu... B-) *Ngasal....
Ok, terus yang variabel "EditText", nah edittext itu variabel yang akan menghubungkan kita ke GUI. Tadi dibagian atas, telah dibuat edittext dalam file xml. Edittextnya ada 2 biji, yaitu yang id-nya "data" dan "respon". Jadi edittext yang berada difile xml (GUI) nanti dihubungkan dengan edittext yang ada dimain program kita (file. java). Sama halnya dengan variabel "Button", difile xml kita ada 2 button yaitu "baca" dan "tulis", button2 tersebut akan terhubung dengan program kita dengan variabel "Button" ini. Contohnya, Jika button "tulis" kita tekan, apa yang akan terjadi...??? Nah untuk menentukan apa saja yang terjadi, kita akan menuliskan kode-kode program dibelakang GUI yang berada dalam variabel "write", soalnya "write" yang berada dalam dibelakang "layar" telah terhubung dengan tombol "tulis" yang ada dilayar. :D... Nggg... daah aaah....





So, mari kita inisialisasi masing-masing variabel di atas. Inisialisasinya sebaiknya dalam fungsi onCreate. Soalnya onCreate ini adalah fungsi yang pertama kali dipanggil ketika aplikasi kita akan running di hape atw emulator, jadi sebaiknya semua inisialisasi variabel diletakkan dalam fungsi onCreate ini. Inisialisasinya seperti terlihat pada kode program di bawah ini :


Terus, arahkan cursor ke line paling bawah, dan klik kanan, akan muncul menu seperti terlihat dibawah :


Arah pointer mouse ke "Source" terus pilih "Override/Implement Methods" seperti yang ditunjukkan panah di atas. Setelah diklik akan muncul menu berikut :


Nah, berikan tanda centang pada fungsi onNewIntent, onPause, dan onResume, kemudian klik "OK".


Setelah itu akan terlihat 3 buah fungsi baru yang ada di main programnya,


Kemudian, tambahkan kode berikut :


Ok. Fungsi onPause adalah fungsi yang selalu dipanggil otomatis apabila aplikasi sedang idle atau  tidak sedang aktif. Di sini ditambahkan kode mAdapter.disableForegroundDispatch, maksudnya adalah untuk menyamakan prioritas PendingIntent yang telah dibuat dengan PendingIntent dari aplikasi-aplikasi yang lain. Contohnya, jika di HP kita ada beberapa aplikasi yang mempunyai PendingIntent yang sama, berarti prioritasnya sama ketika ada event yang muncul, sehingga jika prioritasnya sama, nanti kita bisa memilih aplikasi mana yang akan dijalankan ketika event ini datang. Fungsi onResume adalah fungsi yang selalu dipanggil secara otomatis oleh android jika aplikasi kita sedang running, di sini ditambahkan fungsi enableForegroundDispatch, jadi kebalikan dari disableForegroundDispatch. So, pada saat aplikasi kita running, dia mempunyai prioritas tertinggi untuk menghandle event yang berada di PendingIntentnya, jadi secara otomatis aplikasi-aplikasi lain yang mempunyai PendingIntent yang sama tidak akan dilirik oleh OS Androidnya... :D

Next, Isikan kode pada fungsi onNewIntent seperti terlihat di bawah :






Seperti namanya, fungsi onNewIntent ini adalah fungsi yang akan dipanggil ketika ada intent baru. Nah sebenarnya didalam intent tersebut terdapat event yang mendeteksi keberadaan smartcard disekitar tablet, makanya intent yang merupakan variabel input buat fungsi onNewIntent ini kita cek dengan kode if-else seperti terlihat di atas. Pertama kali (pada kode if ) di cek apakah smartcardnya berupa NDEF, jika bukan dicek lagi (if-else) apakah berupa "tag" biasa. Di project ini kita hanya menggunakan NDEF atau TAG saja, makanya selain yang 2 tersebut dianggap "undefined smartcard" seperti terlihat pada else yang terakhir. Kemudian fungsi Toast.maketext.... itu adalah fungsi yang berguna untuk menampilkan pesan ke layar hape android kita. Tar keliatan poko'nya pas dijalanin :-)

Sampai di sini, aplikasi android yang telah kita buat sudah dapat mendeteksi smartcard disekitarnya. Owh iyah, pada project ini digunakan asus nexus-7 dan smartcardnya adalah mifare desfire ev1. Jika programnya kita running di asus akan terlihat :


Jika smartcardnya didekatkan disekitar tablet, akan terdeteksi seperti dengan pesan dari toast seperti terlihat di bawah :


Naah... toast.maketext itu pesannya seperti terlihat yang ditunjukkan panah, disitu tertulis "Smartcard detected", Jika melihat kembali kode program yang ada pada fungsi onNewIntent, brarti bagian yang if-else dengan aksi tag_discovered. Dari kode program itu juga terlihat, mTag diassign dengan nilai yang dibawa oleh intent. Sow, secara simpel, variabel mTag kita telah memegang object smartcard dalam program dan siap untuk proses lebih lanjut. :-)

Sebelum melangkah ke handle untuk button "write", silahkan tambahkan kode di bawah:


Kode program tersebut berguna untuk membuat record yang akan digunakan untuk membuat NDEF message.
Next, akan ditambahkan kode handle untuk button "write", untuk itu kembali ke fungsi onCreate, kemudian tambahkan kode dibawah (kode ini ditaro didalam fungsi onCreate):


Waaaw.. kodenya agak panjang... Nggg.. dijelasin g' yah.... Singkatnya, pada saat tombol write ditekan oleh user, maka program akan mengecek mTag, jika mTag belum ada isinya atau belum menangkap object smartcard maka akan dikeluarkan pesan ke layar tablet berupa "g' ada smartcard....". Namun jika ada mTag-nya sudah menangkap object smartcard, maka data dari user berupa text yang terdapat pada edittext akan diambil kemudian oleh fungsi createRecord dibuat menjadi records, dari records tersebut dibuat menjadi NdefMessage. Nah NdefMessage inilah yang akan dikirim ke smartcard. Jika berhasil, akan dihasilkan pesan dilayar berupa "Data berhasil ditulis".
Next, mari kita coba jalankan aplikasinya. Kita masukkan text pada field data, kemudian dekatkan smartcardnya, kemudian tekan tombol "tulis", maka akan dihasilkan :


Terlihat "Data berhasil ditulis". Next akan dibuat handle untuk button "Baca". Sebelum itu, tambahkan kode di bawah ke main program (letakkan dimana saja di dalam kelas tetapi diluar fungsi lain) :



fungsi getNdefMessage ini berguna untuk mengambil NdefMessage yang berasal dari intent. Hehehe.. simpel.. :D

Nggg... ternyata kita butuh 1 biji variabel lagi. So, tambahkan kode berikut :



Kemudian di dalam fungsi onNewIntent, tambahkan kode di bawah :


Sebenarnya, kode tersebut sudah membaca data dari smartcard, jadi tanpa tombol read pun kita sudah dapat melakukan proses pembacaan dengan menggunakan fungsi onNewIntent ini.

Siip. Kembali ke fungsi onCreate, silahkan masukkan kode untuk tombol read seperti terlihat di bawah :



Hehehe.. simpel banget, soalnya baru ketahuan diakhir klu tombol read ternyata g' terlalu dibutuhkan... :3..

Ok,,, Mari kita running aplikasinya. Sebelumnya tadi sudah ditulis data ke smartcard yang isinya "hisokapoipo", berarti pada saat tombol baca ditekan, akan dihasilkan text yang sama pada respon smartcard, seperti terlihat di bawah :


Alhamdulillah... Akhirnya selesai juga.. :-)


Mohon maaf jika ada penjelasan yang kurang jelas...


--Sekian---


Download source codenya disini :
https://www.dropbox.com/s/ib0wbevw39drseq/AplikasiNFCSederhana.zip?dl=0





89 comments:

  1. sangat bagus tutorial nya, boleh saya minta source code nya? untuk belajar dan mengembangkan nya, terima kasih

    ReplyDelete
    Replies
    1. Eeeemmm..... Moga2 masih ada disave di eksternal hardisk...InsyaAllah klu ada besok sy uploating ke github mas Herdian... :-)

      Delete
    2. mass boleh tanya gak,kalo untuk applikasi mengubah kode uid smartphone nya ada gak biar bisa di bedain antar smartphone nya mass,yg di baca sma nfc pn532

      Delete
    3. Eemmm.... mw ngubah UID,,, mksnya pake Android HCE....??? yang smartphonenya jadi virtual card gitu...!

      Delete
  2. baik kalau begitu, kalo memang ada di email ke saya juga boleh, kirim aja ke herdianmurphy@gmail.com
    terima kasih banyak

    ReplyDelete
    Replies
    1. Eeeeeh... maav2...blom bongkar2 eksternal hardist.... ehehe... moga2 hari senin udh bisa.... :-)

      Delete
  3. Mas mau nanya. Gimana cara bikin aplikasi virtual card yg nanti dibaca pn532, tapi data IDnya dienkripsi?

    ReplyDelete
    Replies
    1. Klu mw bikin virtual cardnya, teorinya bisa baca lewat sini Mas Dian:
      http://developer.android.com/guide/topics/connectivity/nfc/hce.html
      trs contoh2 project disini:
      http://developer.android.com/samples/CardEmulation/index.html
      https://github.com/grundid/host-card-emulation-sample

      mmm... pn532 itu salah satu reader NFC yaah...??? klu dl sy pake ACS saamaa... ah lupa satunya ahaha...:D
      tapi g' masalah sy pikir utk readernya... :)...smuanya ampir sama... :

      Delete
    2. dan... klu readernya juga pake Smartphone android yang lain juga sama ajjah... :)

      Delete
    3. Ooowh... iya IDnya mksdnya dienkripsi pas mw dikirim ke reader...?? klu enkripsi kyk gitu mudah ajjah Mas Dian, di Java bisa pake banyak enkripsi dari DES,TDES,AES,RSA,ECC... :) jadi yaaah... mudah ajjah klu mau enkripsi...
      terus...dl sy buat virtual cardnya itu pake Android studio, klu pake eclipse g' mau...entah eclipse sy yg udh tua atw kenapa...tapi intinya dl jalannya pake ANdroid studio... :)

      Delete
  4. iya, pn532 salah satu jenis NFC Reader shieldnya. Masih ada source code virtual cardnya yang pernah dibikin di Android Studio? Boleh share di fardiyuna@gamil.com
    Rencana saya mau coba bikin dan pelajari sistem akses pke smartphone dan card gitu.

    ReplyDelete
    Replies
    1. mmmmm..... kykna masih ada Mas...cuman itu projectnya sy download jg dari link developer android di atas..klu untuk project yang lain kykna g' bisa dishare soalnya ada property perusahaan....

      ooowh sip sip...selamat blajar Mas Dian ahaha... ooowh iyaah... g' semua smartphone itu bisa dibikin jadi virtual card yaah... ada syarat2nya jg..lupa apa semua,,cuman dl sy tuh make samsung note berapa yaah..?? ahaha... lupaaa..udah laaamaa....:D

      Delete
    2. itu emailnya g' bisa dikirimin email mas Dian... ada alternative email yang lain...???

      Delete
    3. mau nanya kok data NFC nya kepotong yang kalo di baca di aplikasi pembaca NFC dari playstore. Itu kenapa ya ? Misal saya tulis "Komputer 1 Laboratorium" dengan aplikasi agan buat. Pada aplikasi playstore pada umumnya hanya terbaca "uter 1 Laboratorium".

      Delete
  5. Maaf typo 😄. Emailnya: fardiyuna@gmail.com makasi banyak yaa

    ReplyDelete
  6. Kalau asus zenfone 2 bisa gk kira2 dibikin virtual card?

    ReplyDelete
  7. Mungkin syarat2nya smartphone yg ada NFC dan tipe android di atas 4.4 ya?

    ReplyDelete
  8. eeeeh... sama ajjah mas Dian...tetep fardiyuna@gmail....? :3
    ummm... asuz zenfone ehehehe.. g' tau... :D coba dl ajjah... :D
    mmm... ooowh... yang 4.4 yah.. lupa sy, kirang 4.0.... mmm... trs syarat lain itu tipe chip NFC smartphonenya Mas Dian, jadi ada chip NFC tertentu yang g' bisa dibuat jadi virtual card... klu g' salah dl saya pake samsung galaxy note 2... trs dl jg sy coba di Asus Nexus 7 (nah yg ini g' bisa), trs di Samsung Galaxy Mega (N19200 apa yah, samsung mega ini juga g' bisa)...

    ReplyDelete
  9. waaah... error ngirim emailnya Mas :
    mx.google.com gave this error:
    This message was blocked because its content presents a potential security issue. Please visit https://support.google.com/mail/answer/6590 to review our message content and attachment content guidelines. u124si4463671lfd.130 - gsmtp
    Your message wasn't delivered because the recipient's e-mail provider rejected it.

    ReplyDelete
    Replies
    1. udah dikirim diresend mas Dian...sampe g'...??? :3
      itu jangan lupa .poipo-dilepas dl sblm diextract... :3

      Delete
  10. Mungkin syarat2nya smartphone yg ada NFC dan tipe android di atas 4.4 ya?

    ReplyDelete
    Replies
    1. mmmm.... yg 4.4 ke atas Okie... cuman g' semua smarphone yang ada NFCnya bisa dibikin virtual card didalamnya....jadi emg chip NFCnya jg harus support gitu mas Dian ehehe... kyk Asus Nexus 7 itu lho..it kn udh NFC, cmn g' bisa dibikinin jadi virtual card, sm yng Samsung Galaxy Mega, atau LG Optimus... :)

      Delete
  11. Oya. emailnya belum masuk. Atau apa email mas? Nanti saya coba kirim pesan dulu

    ReplyDelete
  12. eeeeeh..... maav salah ketik email... ahahaha.... fardi yaak... bukan ferdi... meeeeeh... :3

    ReplyDelete
  13. Mas mau nanya. Satu nfc controller yg dijadiin utk sistem akses emang gak bisa make dua ya (nfc yg di kartu dan nfc yg ada di hp) krna beda teknik, kalo tag pasif, sedangkan ho aktif harus gunain metode peer to peer

    ReplyDelete
    Replies
    1. mmmmm.....mksdnyA make dua...????? :3

      Delete
    2. mmmm....jadi...klu HPnya support sbagai HCE...dia tetep bisa sebagai NFC pasif dan aktif Mas ..:-)

      Delete
    3. eeeeh... mskndya controller yaaah... Oooh.. iyah..bedaa.... klu NFC aktif tuh..dia pake Intent,..tapi klu dia pasif, itu manggilnya NFC service... jadi beda jalur gitu Mb' Dian.... :3
      {Sy jg udh agak lupa detailnya...pfft...}

      Delete
    4. BTW..... Dian itu Mb' yaaaah.. bukan Mas... duuuuh.. maav....kmarin2 dipanggil Mas wkwkwkkwkw... :D Kirain... SOalnya disini ada Dian yg Mas.. Hehehe... :)
      Gomenasai.... :)

      Delete
  14. Aku bikin lalu aku eksport menjadi apk kok sayangnya aplikasi terhenti itu knp ya ?

    ReplyDelete
    Replies
    1. Klu mau dapatin apk-nya g' perlu di ekport Mas, pas kita ngerun, itu udah ada di folder "bin",...
      terus aplikasinya stop pas dijalanin, silahkan lihat logcat di eclipse atau android studionya yang tulisan2 warna merah gitu... itu pesan2 error dari app kita yang running... :)

      Delete
    2. Ooowh.... lbih bagus klu log catnya di print screen, jadi bisa sy lihat juga hehe...:D

      Delete
    3. Mas saya pas tekan tombol tulis,yang muncul penulisan data gagal dan data berhasil ditulis
      Tpi pas saya read kok kosong ya
      Saya coba pake kartu

      Delete
    4. mmmm... penulisan datanya gagal...terus data berhasil ditulis..?? mskdnya...???

      Delete
    5. klu pas dibaca masih kosong brarti datanya blom ketulis gitu mas Alva, atau proses readnya yang blom pas... :)

      Delete
  15. Iya pas saya nulis toastnya muncul 2 kali
    1 penulisan data gagal
    2 data berhasil ditulis
    Kok bisa gitu ya?
    Apa kartunya yg salah atay hpnya
    Saya pake note 3 neo
    Api minimal nfc brapa ya mas
    Sama muncul toas tipe tag nfc tidak didukung
    Mohob infonya hahahaa :D

    ReplyDelete
    Replies
    1. Mmmm... klihatannya aplikasi yg sy bikin dapat bugs untuk kasusnya mas Alva, jadi, mkn sebaiknya posisi toast untuk penulisan data berhasil itu dipindah ke bawah Ndef.close() sama Ndef2.close(),,,cuman jadi dua biji toast hehehe... :D

      note 3 neo itu mskdnya samsung note 3 neo...??

      terus pas HP sm kartunya dideketin muncul tipe tag nfc tidak didukung...??
      atau muncul tipe tag tidak didukung itu pas ada event apa..??
      terus kartu NFCnya pake kartu apa mas...??

      *waaah...Saya balik nanya...ehehe... :D
      *log catnya bisa print g'..?? :)

      Delete
    2. Setelah dilihat2 lebih jauh... kelihatannya mTag-nya jenisnya belum dimasukin mas Alva, jadi tipe kartu NFCnya yang g' dihandle,,, makanya bisa keluar dua kali toast error, sm toast sukkses...
      Di Fungsi onNewIntent kluar toast "undefined smartcard" gitu kan...??? :D

      Delete
    3. onNewIntent itu dpanggil pas kartu NFCnya dideketin ke HP, naah pas kartu & HP dideketin keluar "undefined smartcard" klihatannya.... :D

      Delete
  16. Email mas apa ya?
    Via email aja yak
    He ar enak krim screenshootnya

    ReplyDelete
  17. Apanya mas?
    Email saya alvafrogkerz@gmail.com miscal ya mas
    Hahahah

    ReplyDelete
    Replies
    1. tadi emailnya kburu sy apus... :D
      tp udah di missEmail.... :v

      Delete
    2. mas, boleh minta semua projek yang sudah mas buat di android studio... kalau ada bisa dikirim ke mohamadalisadikin@gmail.com trimakasih mas

      Delete
    3. Mmmmm... klu di android studio kykna g' banyak mas Ali...ahaha... :D
      Hellow2 World ajjah mereun... klu yg laen kykna g' bisa dibagi soalnya ada rahasia perusahaan sebelumnya.. :)

      Delete
  18. mas tulisan smartcard detected nya g' muncul masalahnya dmna yah?

    ReplyDelete
    Replies
    1. mb' Filda pake smartcard apa...??? trs apa masih pake eclipse...??
      Kykna postingan ini udah obsolete soalnya masih pake eclipse ehehe... :D

      g' muncul tuuuh...bisa jadi karena di fungsi onNewintentnya g' ke handle mb' Filda, tapi muncul toast "undefine smartcard" g'...???

      Delete
  19. Sangat bermanfaat bro. Boleh minta source code full nya ga bro? Buat referensi bahan laporan hee, baru referensi:)

    ReplyDelete
    Replies
    1. Halo... Source codenya bisa dilihat di bagian pling bawah postingannya Mas, disitu ada link drop box...

      Delete
  20. Share ke email syamsulma16@gmail.com bro kalo bro berkenan hehe

    ReplyDelete
    Replies
    1. Source codenya ada dibagian plng bawah.... link dropbox...

      Delete
  21. Buat referensi laporan bro, blognya sangat bermanfaat:)

    ReplyDelete
  22. bagaimana cara menjalankan emulatornya? sudah di run tapi stopped terus.

    ReplyDelete
    Replies
    1. Eeem..... pake eclipse ataw android studio Mas...???

      Delete
    2. sudah keduanya. tapi ndak bisa jalan emulatornya.

      Delete
    3. dan harus pakai smartcard yang bagaimana? karena yang ku dapat itu mifare s50.

      Delete
    4. pas ngerunning emulatornya ada log error kah yg keluar Mas ?
      mifare s50 itu mifare classic yaah Mas. Paling tar ngeganti atau ngubah settingan di intentFilternya buat ngedetect smartcard tertentu... :)

      Delete
    5. tidak ada.

      dan intentfilternya diubah gimana?
      kalau contoh lain yang ku dapat di sini:
      https://teknojurnal.com/cara-membuat-aplikasi-android-dengan-nfc/

      Delete
    6. dan kalau mau bedain jenis smartcardnya gmn? kan ada mifare clasic, desfire ev1 dan desfire ev2.
      gimana cara bedainnya? bisa minta referensi ?

      Delete
    7. intentfilter dspesifikasiin di manifestnya. Soalnya kn ada beberapa intent filter tuh Mas yg bisa didetect, kyk misalkan TECHA, B, C, dst.. Tar di dalam fungsi onNewIntent(Intent intent) bisa ditambain jenis intentnya yg bisa didetect tergantung jenis kartunya. Dulu sy pernah pake intentFilter yang Tech.IsoDep itu lho, cm g' bisa di posting, soalnya itu pake protokol dan protokolnya hak milik perusahaan ehehe... :D

      Eeeemmm.... intinya cari ajjah tutorial yg pake "android isodep nfc".... Good luck... ;)

      Delete
    8. Daaan... oowwh.. .biasanya klu stopped itu ada log errornya Mas...coba liad log-catnya yg tulisan2 warna merah gitu... :)

      Delete
    9. Terus yg di https://teknojurnal.com/cara-membuat-aplikasi-android-dengan-nfc/
      itu khusus buat mifare yaak... kekna trll simpel, cm dikasih liad inti2nya ajjah...tapi bagus jg. Berarti kita sendiri yg harus ngehandle event2 lain, kyk misalkan di onPause applikasinya mau appa, di onResume gimana, di onStart gimana... :)

      Delete
    10. jadi harus dideklarasikan mifare clasis di programnya ya. terus program yang di atas pendeklerasian kartu mifare desfire di mana?

      Delete
    11. min ku coba jalankan aplikasinya di hp samsung galaxy note4 tapi gak bisa baca kartu smartcard desfire 4k. apa masalahnya ya?

      Delete
    12. Duuh... maap baru bales... :V
      eeemmm....... pas kartunya dideketin ke HP, HPnya bunyi g'...?? :D

      Delete
    13. jadi min. kartunya hanya bisa dibaca kalau di belakang(di tempel di bawah kamera). terus sudah coba isi data tapi muncul pemberitahuan gagal mengisi kartu terus muncul lagi berhasil mengisi kartu, padahal data yang di dalam kartu kosong

      Delete
    14. Ooowh... berarti antena NFCnya deket kameranya berarti...:v
      Klu gagal kasih liad log-nya dl... :)

      Delete
    15. https://developer.android.com/studio/debug/am-logcat.html

      Delete
    16. sudah muncul smartcard detect dan data di dalam kartu kosong. pas masukan data muncul penulisan data gagal ,terus muncul data berhasil ditulis.
      jadi salahnya dmn?

      Delete
    17. kalu gagal, coba kasih liad lognya dl Mas... :)

      Delete
    18. logcat ? tp min emulator kn tidak di lengkapi dngan nfc . terus sya runningnya di hp jd bisa tetap gunakan logcat?

      Delete
    19. pas ngerun applikasinya, konekin HPnya ke laptop atw PCnya,,, jadi runninnya aplikasinya lewat HP gitu Mas, bukan pake emulator. jadi tar logcatnya dari HP, bukan dari emulator.. @_@

      Delete
    20. jangan lupa kasih liad log-nya eeeaaaa... :D

      Delete
  23. This comment has been removed by the author.

    ReplyDelete
  24. jika ingin secara langsung ketika Tag di dekatkan membaca isinya bagaimana ? saya tidak ingin menggunakan tombol baca tapi ingin secara langsung membaca data yang ada di dalam NFC Tagnya bagaimana ? saya berterima kasih jika dapat membantu. Boleh via email : muhammadhariespnl@gmail.com

    ReplyDelete
    Replies
    1. sebenarnya ketika tag didekatnya udah langsung ngebaca Mas. Itu bisa diliad dari kode onNewIntent yg blok kode else if {....}. Nah disitu udah ngebaca, kalau mau langsung ditampilkan ke layar berarti tinggal nambain kode mRespond.setText(userData);

      seperti ituu... :-)

      Delete
    2. Siips... tinggal mindain kode yng ada di onClick untuk read button ke dalam onNewIntent di else if itu..

      Delete
  25. ak saya mau nanya, program nfc ini saya ingin sambungkan ke database jadi hasil read dari nfc tag itu menjadi inputan ke databasenya, nah saat mengklik button simpan itu slalu muncul error networkonmainthreadexception, saya search solusinya kodingan untuk inputannya dibungkus dengan async task nah saya sudah saya terapkan tetap tidak bisa, apakah ada saran atau literatur yang bisa saya ikuti? Terima kasihhh kakk karna hanya program ini saja yang saya tidak bisa sambungkan ke database mungkin untuk program ini ada yang berbeda

    ReplyDelete
    Replies
    1. Boleh liad/cantumkan implementasi async tasknya mb' Annisa ??
      trs berarti sekarang tombol read menjadi tombol simpan ? atau sekarang ada 3 tombol ???

      Delete
  26. Kak saya kirim via apa ini untuk implementasi async tasknya? Ini jadi 3 button kak read write dan simpan. Sebelumnya terima kasihh

    ReplyDelete
    Replies
    1. keemail ajjah maryadi@hellobaby-project.club...
      btw.... kenapa g' pas pencet read itu langsung simpan ajjah ?? jadi g' prlu ada 3 tombol... :D (kepo)

      Delete
    2. Oiya juga kak, sayacobanya dulu pakai button read lsg nyimpan yaaa. Kalau tetep gabisa nanti saya emailkan kodingan saya terima kasih banyakkk

      Delete
    3. saya sudah kirim email kak mohon bantuannya, terima kasih:)))

      Delete