Thursday, May 7, 2020

Komponen Android Service


Komponen Android Service


Pengertian Service
  • Sebelumnya telah belajar mengenai activity dan implementasinya. Activity adalah komponen yang memberikan pengalaman kepada pengguna secaralangsung. Pengguna dapat melihat dan berinteraksi diatasnya.
  • Service beradap ada sisi yang lain, komponen ini tidak memiliki antar muka dan bahkan pengguna tidak akan akan tahu bagaimana dia bekerja. Pengalaman yang diberikan oleh service hanya berupa proses yang tidak terlihat. Ia digunakan untuk menjalankan beragam macam proses yang memakan waktu lama.

  • Walaupun berjalan secara background, pada dasarnya service dan komponen Android lainnya berjalan pada satu proses dan thread yang sama yaitu mainthread atau uithread. Bekerja di background bukan berarti ia bekerja secara asynchronous. Service tetap membutuhkan threadter pisah jika kita ingin melakukan proses yang membutuhkan komputasi intensif atau yang memakan waktu.

Contoh Pemanfaatan Service
  • Aplika sisosial media atau aplikasi yang memiliki kemampuan untuk menerima push notification. Aplikasi semacam ini pasti memiliki sebuah service yang berjalan dalam posisi standby untuk selalu menerima pesan yang masuk.
  • Aplikasi chat juga membutuhkan service untuk melakukan pengiriman dan menerima pesan yang di kirimkan oleh pengguna.
  • Aplikasi pemutar musik juga melakukan hal yang sama. Untuk memberikan pengalaman yang lebih baik kepada pengguna, aplikasi pemutar musik biasanya meletakkan proses streaming atau memainkan musik di komponen service dengan tetap mempertahankan integrasi dengan komponen lain, misalnya notifikasi. dll
2 Bentuk Service
  • Service berjenis ini adalah tipe yang dijalankan oleh komponen lain, misal activity. Sekali dijalankan, service ini akan berjalan selama belum dimatikan atau proses yang dijalankan selesai. Sevice akan tetap berjalan walaupun komponen yang lain dimatikan oleh sistem Android. Umumnya penggunaan service ini adalah untuk melakukan proses yang tidak memberikan nilai balik ke komponen yang memanggilnya. Contohnya adalah, mengunduh atau mengunggah berkas.
  • Bound Service jenis ini merupakan tipe service yang dijalankan oleh komponen lain, namun saling mengikat. Hubungan yang terjadi antar kedua komponen tersebut seperticlient-server. Bisa saling menerima hasil dan menerimarequestyang ada. Pada service ini dimungkinkan terjadi proses IPC (Interprocess Communication).Service ini akan tetap berjalan di background selama masih ada komponen lain yang mengikatnya. Jika tidak, maka Service akan dimatikan oleh sistem. Aplikasi pemutar musik merupakan salah satu jenis aplikasi yang mengimplementasikan service jenis ini.
Life Sycle Service



Latihan Penerapan service
Untuk melihat jalannya service, buatkan tampilan seperti disamping.
  1. Untuk melihat jalannya service, buatkan tampilan seperti disamping.
    Nama project: MyService
    Activity: Empty Activity

2. Lengkapi MainActivity.xml


3. Lengkapi MainActivity.java


4. buat kelas service bernama Origin Service dengan cara klik kanan pada package project→New→Service→Service.Origin Service akan inherit(extends) kepada kelas Service.

5. Selanjutnya pada dialog yang tampil, isikan nama kelas service yang diinginkan. Di sini kita menamainya sebagai Origin Servicedan biarkan exported dan  enabled tercentang. Klik Finish untuk menyelesaikan proses.


6. Selanjutnya, buka berkas AndroidManifest.xml pada package manifest dan perhatikan isi berkas tersebut. Service yang baru saja kita buat sudah ada di dalam tag <application>:


7. Berkas AndroidManifest sudah dibuat secara otomatis. Dengan demikian kita sudah bisa menjalankan kelas service tersebut. Namun, sebelum menjalankan aplikasi, lengkapi kode padaOriginService menjadi seperti berikut :




Lanjutan Script


12. Jalankan aplikasinya. Kliktombol ‘startservice’ dan perhatikan log-nya. Service di jalankan secara asynchronous dan mematikan dirinya sendiri setelah proses selesai.
13.Jika berhasil dijalankan, pada log androiod monitor akan seperti ini : 09-2 209:52:25.028 10209-10209/com.contoh.myserviceapp D/OriginService: OriginService dijalankan 09-2 209:52:28.074 10209-10209/com.contoh.myserviceapp D/OriginService: StopService 09-22 09:52:28.078 10209-10209/com.contoh.myserviceapp D/OriginService:onDestroy()


Latihan: Penggunaan Service Di Alarm Manager

Ada kalanya kita membutuhkan perlu suatu mekanisme untuk mengulang sebuah proses di waktu tertentu. Misalnya, kita ingin memiliki fungsi pengingat (reminder) pada aplikasi event, jadwal tayang film di bioskop, atau aplikasi alarm untuk mengingatkan kita untuk bangun di pagi hari. Di sinilah alarm manager berperan penting.
Alarm manager akan memberikan kemudahan bagi aplikasi untuk melakukan operasi berbasis waktu di luar daur hidup aplikasi itu sendiri.
Contohnya seperti yang baru saja di sebutkan di atas. Umumnya alarm memiliki beberapa karakteristik, antaralain:
  1. Dapat menjalankan obyek intent berdasarkan waktu dan interval yang ditentukan.
  2. Bisa bekerja dengan baik dengan broadcast receiver untuk menjalankan komponen lain seperti service untuk melakukan operasi tertentu.
  3. Alarm berjalan di luar daur hidup aplikasi induknya sehingga kita bisa merancan gfungsi alarm untuk melakukan sebuah aksi ketika aplikasi sedang tidak di jalankan bahkan ketika peranti dalam keadaan idle atau sleep.
  4. Esensi utama dari alarm manager adalah untuk meminimalkan penggunaan resource dan mengmhindari penggunaan timer dan background service yang berkepanjangan untuk melakukan operasi atau aksi yang di butuhkan.

Penggunaan alarm manager yang baik adalah dengan menerapkan cara berikutini:

  1. Lakukan hanya untuk proses dilokal
  2. Jaga frekuensi alarm yang dijalankan dengan interval yang tidak pendek
  3. Jika tidak terlalu penting, hindari penggunaan tipe alarm yang dapat membangunkan peranti seperti RTC_WAKEUP
  4. Jika alarm manager digunakan untuk menjadwal kan scheduling task yang terhubung kejaringan dan melakukan request ke server, misalnya unduh data terbaru atau sinkronisasi data, maka hindari penggunaan setRepeating() dan gunakan setInExactRepeating() dengan penggunaan tipe alarm berbasis ELAPSED_REALTIME. Pendekatan tersebut merupakan strategi untuk mengelompokkan proses alarm dari aplikasi yang berbeda dengan dijalankan secara bersamaan agar lebih menghemat daya baterai.





Wednesday, May 6, 2020

Komponen Android Intent



KOMPONEN ANDROIDINTENT

TENTANG INTENT

Intent adalah Mekanisme untuk melakukan sebuah action dan komunikasi antar komponen aplikasi misal activity, services, dan broadcast receiver. Ada tiga penggunaan umum intent dalam aplikasi Androidyaitu:

  • Memindahkan satu activity ke activity lain dengan atau tidak membawa data.
  • Menjalankan background service, misalnya melakukan sinkronisasi keserver dan menjalankan proses berulang (periodic/schedulertask).
  • Mengirimkan obyek broadcast keaplikasi yang membutuhkan. Misal, ketika aplikasi membutuhkan proses menjalankan sebuah background service setiap kali aplikasi selesai melakukan booting. Aplikasi harus bisa menerima obyek broadcast yang dikirimkan oleh sistem Android untuk event booting tersebut.

Intent memiliki dua bentuk yaitu:
  1. ExplicitIntent adalah tipe Intent yang digunakan untuk menjalankan komponen dari dalam sebuah aplikasi. Explicitintent bekerja dengan menggunakan nama kelas yang dituju misal: ac.id.nusamandiri.activity.DetailActivity. Umumnya intent ini digunakan untuk mengaktifkan komponen pada satu aplikasi.
  2. Implicit Intent adalah tipe intent yang tidak memerlukan detail nama kelas yang ingin diaktifkan. Model ini memungkinkan komponen dari aplikasi lain bisa merespon request intent yang dijalankan. Penggunaan tipe intent ini umumnya diperuntukan untuk menjalankan fitur/fungsi dari komponen aplikasi lain. Contohnya ketika kita membutuhkan fitur untuk mengambil foto. Dari pada membuat sendiri fungsi kamera, lebih baik kita menyerahkan proses tersebut pada aplikasi kamera bawaan dari peranti atau aplikasi kamera lain yang telah terinstal sebelumnya diperanti. Hal yang sama misalnya ketika kita membutuhkan fungsi berbagi konten. Kita bisa memanfaatkan intent untuk menampilkan aplikasi mana saja yang bisa menangani fitur tersebut. Implementasi implicit intent ini akan sangat memudahkan bagi pengembang agar tetap fokus pada proses bisnis inti dari aplikasi yang dikembangkan.

Latihan Intent
Latihan ini menitik beratkan pada implementasi intent untuk melakukan perpindahan dari activity ke activity lain, dengan atau tidak membawa data. Beberapa bagian dari latihan ini akan menjawab beberapa pertanyaan umum dalam pengembangan aplikasi Android sebagai berikut:
  • Bagaimana berpindah dari satu activity ke activity lain?
  • Bagaimana berpindah dari satu activity ke activity lain dengan membawa data?
  • single value dari suatu variabel.Obyek model Plain Old Java Object (POJO).
  • Menjalankan komponen diaplikasi lain untuk keperluan membuka browser atau melakukan pemanggilan melalui aplikasi telepon bawaan?
  • Mengirimkan hasil nilai balik melalui Intent

LogikaDasar
Berpindah dari satu Activity ke Activity lain dengan membawa data. Activity asalakan mengirimkan data melalui Intent dan Activity tujuan akan menerima data yang dikirimkan.
1.   Buat Project baru di Android Studio dengan kriteria sebagai berikut:
  • Nama Project : AppBelajarIntent
  • Target & Minimum Target SDK : Phone and Tablet, Api level 15
  • Tipe Activity : Empty Activity
  • Activity Name : Main Activity

             2. Buatkan tampilan antar muka seperti disamping










  Selesai! Langkah pertama untuk memindahkan satu activity ke activitylain sudah selesai, sekarang silakan jalankan aplikasi Anda dengan mengklik tombol pada menu bar. Seharusnya sekarang anda sudah bisa memindahkan activitydengan mengklik tombol ‘Berpindah Activity’. Hasil:


       Klik back maka kembali ketampilan awal

       Tombol Ke 2










   Sekarang saatnya menambahkan objek intent pada Main Activity. java seperti yang ditebalkan.



   6. Silakan jalankan aplikasi Anda, kemudian coba klik pada tombol ‘Pindah Activity dengan Data’. Seharusnya Anda sudah bisa memindahkan satu activity ke activity lain dengan membawa data.



    TOMBOL 3
      POJO adalah sebuah kelas Java biasa yang tidak bergantung dengan kelas lain. Umumnya kelas POJO ini disebut sebagai kelas Java yang memiliki properti/variabel dan metodesetter-getter
      Kegunaan:
      POJO akan membantu kita saat aplikasi semakin kompleks. Contohnya POJO bisa kita gunakan untuk melakukan koneksi ke server untuk request API atau akses ke database lokal dengan SQLite. Selain POJO, Android juga memiliki obyek parcelable POJO. Obyek ini akan lebih memudahkan kita untuk melakukan pengiriman data dari satu activity ke activity lainnya.




   Note: Untuk melanjutkan pembuatan tombol ke 3 sebelumnya setting penggunaan POJO. Langkah-langkahnya Lihat Modul.
   Sekarang waktunya kita implementasikan pada intent. Namun sebelumnya tambahkan satu tombol lagi pada activity_main.xml sebagai berikut:


    Sehingga activity_main.xml kita menjadi sebagai berikut :


   Setelah selesai dengan layout xml, sekarang kita tambahkan (pada bagian yang ditebalkan) juga di kelas MainActivity. java sehingga menjadi sebagai berikut :


   Buat Activity baru dengan nama Move With Objec tActivityl alu pada activity_move_with_object.xml
   tambahkan satu buah TextView untuk menampilkan data yang dikirimkan.


   Sekarang, pada Move With Object Activity.java tambahkan kodenya sehingga menjadi sebagai berikut:


    Setelah kita membuat activity tujuan dengan sempurna, sekarang kita hanya butuh menambahkan beberapa baris pada bagian switch… case sebagai berikut:


    Sehingga kode MainActivity.java kita menjadi sebagai berikut :




   Setelah semua komponen selesai dibuat, saatnya menjalankan kembali aplikasinya. Cobalah menakan tombol 'Pindah Activity dengan Object'. Sekarang Anda sudah berhasil memindahkan satu obyek secara utuh, Selamat!


    TOMBOL 4 (Intent Dengan Tipe Implicit)


  Buka kembali activity_main.xml tambahkan satu tombol lagi sebagai berikut :



  Sekarang, buka kembali MainActivity.java dan lanjutkan dengan melakukan casting tombol Dial Number, set listener dan menambahkan actionketika tombol diklik





  Setelah selesai,silakan jalankan lagi aplikasi. Dan aplikasi yang digunakan bisa men-dial sebuah nomor telepon melalui aplikasi bawaan dari peranti yang dibuat.






  Pada tombol ini, kita akan membedah hubungan activity dan intent dalam menerima nilai balik. Kadangkala, ketika kita menjalankan sebuah activity dari activity lain, kita mengharapkan ada nilai hasil balik dari activity yang dijalankan ketika ia ditutup. Contohnya kita memiliki activity A yang menjalankan activity B untuk melakukan sebuah proses. Lalu nilai hasil dari proses tersebut dikirimkan kembali ke activity A sebelum activity B ditutup dengan pemanggilan metodefinish(). Itulah yang dinamakan sebuah activity menerima nilai hasil balik dari activity yang diajalankan. Untuk memperjelas, ayo kita lanjutkan lagi proses ngodingnya.

  Sekarang untuk menerapkan konsep diatas, buat sebuah activity baru dengan nama Move For Result Activity. Setelah itu, pada activity_move_for_result.xml silakan kondisikan layout kita dengan1 buah TextView, 1 buah Radio Group, 3 buah Radio Button dan 2 buah Buttonsebagai berikut :



    Setelah selesai, lanjutkan ke berkas Move For Result Activity.java dengan menuliskan kode sebagai berikut :


  Pada activity_main.xml tambahkan lagi satu Button dan satu Text View yang akan kita gunakan untuk menjalankan Move For Result Activity sebagai berikut:




  Setelah selesai, kita lanjut garap berkas Main Activity.java. Buka berkasnya dan sesuaikan kodenya sebagai berikut.



 Setelah selesai, pastikan tidak ada bagian kode yang tertinggal. Jalankan kembali aplikasinya, dan coba Anda pilih tombol ‘Pindah Activity untuk Result’. Pilih angka yang Anda suka dan lihat hasilnya. Di Main Activity.java sudah ada angka yang tadi Anda pilih di obyek textiew tv Result.


MAKALAH ETIKA PROFESI TEKNOLOGI INFORMASI KOMUNIKASI ‘‘CYBER ESPIONAGE”

  MAKALAH ETIKA PROFESI TEKNOLOGI INFORMASI KOMUNIKASI ‘‘ CYBER ESPIONAGE ”      MAKALAH ETIKA PR...