Broadcast Receiver dan Services pada android studio

Hai kembali lagi di blog saya malasnugas.com . kali ini saya akan membahas tentang Broadcast Receiver dan Services pada android studio. simak baik-baik ya

BROADCAST RECEIVER
Broadcast Receiver adalah respon ke pesan broadcast dari aplikasi lain atau dari sistem itu sendiri. Pesan ini kadang-kadang disebut event atau intent. Sebagai contoh, aplikasi dapat juga menginisiasi broadcast untuk membiarkan aplikasi lain tahu bahwa beberapa data telah didownload ke device dan ada untuk digunakan, jadi ini adalah broadcast receiver yang akan menangkap komunikasi dan akan memulai aksi yang tepat.
Berikut adalah 2 langkah penting untuk membuat BroadcastReceiver bekerja
• menciptakan the Broadcast Receiver.
• Me-Register Broadcast Receiver
Menciptakan broadcast receiver
Sebuah broadcast receiver diimplementasikan sebagai subclass dari kelas BroadcastReceiver dan mengoveride method onReceive() dimana setiap pesan yang diterima sebagai parameter obyek dari Intent.
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();
}
}

Meregister BroadcastReceiver
Sebuah aplikasi mendengarkan broadcast intent secara spesifik dengan meregister sebuah broadcast receiver dalam file AndroidManifest.xml.

Berikut beberapa konstanta Event yang dapat digunakan.
Event Constant
Keterangan
android.intent.action.BATTERY_CHANGED
Broadcast yang terdiri dari keadaan charging, level, dan informasi lain tentang batery.
android.intent.action.BATTERY_LOW
Mengindikasikan kondisi batery device lemah
android.intent.action.BATTERY_OKAY
Mengindikasikan batery sudah okay sesudah lemah.
android.intent.action.BOOT_COMPLETED
Ini sekali broadcast, sesudah sistem selesai booting.
android.intent.action.BUG_REPORT
Memperlihatkan activity melakukan report bug.
android.intent.action.CALL
Menyajikan panggilan ke nomer spesifik.
android.intent.action.CALL_BUTTON
User menekan button "call" untuk menuju ke pemanggilan telepon.
android.intent.action.DATE_CHANGED
Tanggal diubah.
android.intent.action.REBOOT
Device reboot.

SERVICE
Service adalah komponen aplikasi yang merepresentasikan sebuah keiningan aplikasi untuk melakukan operasi running yang lebih panjang pada saat tidak berinteraksi dengan user atau untuk memasok fungsionalitas aplikasi lain untuk digunakan. Masing-masing service class harus mempunyai deklarasi <service> yang berhubungan di dalam paket AndroidManifest.xml. Service bisa dimulai dengan Context.startService() dan Context. bindService(). Class IntentService bisa diperoleh sebagai sebuah implementasi standar yang mempunyai alurnya sendiri dimana dia menjadualkan pekerjaannya untuk diselesaikan.
Apa itu Service?
• Sebuah Service adalah BUKAN proses yang terpisah. Obyek Service itu sendiri tidak berarti dia berjalan dalam prosesnya sendiri; kecuali ditentukan lain, aplikasi tersebut akan berjalan sama dengan aplikasi yang lain.
• Sebuah Service BUKAN thread. Itu bukan berarti dia sendiri tidak melakukan pekerjaan dari thread utama (untuk mencegah kesalahan “Application Not Responding”)
• Suatu fasilitas untuk aplikasi memberi tahu sistem tentang sesuatu yang ingin dikerjakan dalam background (juga saat user tidak secara langsung berinteraksi dengan aplikasi). Ini berhubungan dengan pemanggilan ke Context.startService(), yang mana menjawab sistem untuk mengatur pekerjaan untuk service, akan berjalan sampai service atau seseorang secara eksplisit menghentikannya.
• Sebuah fasilitas untuk sebuah aplikasi mengekspose beberapa dari fungsionalitasnya ke aplikasi yang lain. Ini berhubungan pada pemanggilan ke Context.bindService(), yang mana membiarkan sebuah koneksi long-standing untuk dibuat ke service untuk berinteraksi dengannya.
Ketika sebuah komponen Service dibuat, untuk alasan yang lain, semua sistem secara aktual menginstansiasi komponen dan memanggil onCreate() nya.
Service itu sangat sederhana, yang memberikan dua fitur utama:
• Sebuah fasilitas bagi aplikasi untuk memberitahu sistem mengenai sesuatu yang akan dikerjakannya di latar belakang (bahkan pada saat user sedang secara tidak langsung berinteraksi dengan aplikasi). Ini berhubungan dengan panggilan ke Context.startService(), yang meminta sistem untuk menjadualkan pekerjaan untuk
service, untuk dikerjakan sampai service atau seseorang secara eksplisit menghentikannya.
• Sebuah fasilitas bagi sebauh aplikasi untuk mengekspos beberapa dari fungsionalitas ke aplikasi lain. Hal ini berhubungan dengan panggilan ke Context.bindService(), yang mengijinkan sebuah hubungan yang panjang yang akan dibuat ke service untuk berinteraksi dengannya.
Ketika sebuah komponen Service benar-benar dibuat, yang benar-benar dilakukan oleh semua sistem adalah meng-instantiate komponen dan memanggil onCreate() nya dan melakukan callback yang sesuai di untaian utama. Terserah kepada Service itu sendiri untuk mengimplementasikan hal-hal ini dengan cara yang sesuai, misalnya membuat sebuah untaian sekunder dimana dia melakukan pekerjaannya.
Agar kalian kalian lebih memahami tentang broadcast recaiver dan services alangkah baiknya kalian coba praktikkan scribt berikut ini :
1. Buat sebuah project baru
2. Buat layout sebagai berikut
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.example.lucianugraheni.trybroadcast.MainActivity" tools:showIn="@layout/activity_main"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Example of Broadcast" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:textSize="30dp" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Membuat Broadcast " android:textColor="#ff87ff09" android:textSize="30dp" android:layout_above="@+id/imageButton" android:layout_centerHorizontal="true" android:layout_marginBottom="40dp" /> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageButton" android:src="@drawable/broadcast"
android:layout_centerVertical="true" android:layout_centerHorizontal="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button2" android:text="Broadcast Intent" android:onClick="broadcastIntent" android:layout_below="@+id/imageButton" android:layout_centerHorizontal="true" /> </RelativeLayout>

3. Tambahkan dalam file java-nya, menjadi (perhatikan pada package sesuaikan dengan paket yang anda buat)
package com.example.lucianugraheni.trybroadcast; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { Button butBatt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //mungkin ada bagian lain disini butBatt = (Button) findViewById(R.id.button3); }// broadcast a custom intent. public void broadcastIntent(View view){ Intent intent = new Intent(); intent.setAction("com.example.lucianugraheni.CUSTOM_INTENT"); sendBroadcast(intent); }//mungkin ada bagian lain disini }

4. Buat sebuah file java yang meng-extend broadcast receiver.
package com.example.lucianugraheni.trybroadcast; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class MyReceiver extends BroadcastReceiver {
@Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show(); } }

5. Daftarkan pada ManifestAndroid.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.lucianugraheni.trybroadcast"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
<receiver android:name="MyReceiver"> <intent-filter> <action android:name="com.example.lucianugraheni.CUSTOM_INTENT"> </action> </intent-filter> </receiver> </application> </manifest>

6. Jalankan dan amati hasilnya.
7. Sekarang kita akan menambahkan Broadcast Receiver yang lain.
8. Tambahkan pada layout-nya sebuah Button.
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button3" android:text="Broadcast Baterry" android:onClick="broadcastBatt" android:layout_below="@+id/button2" android:layout_centerHorizontal="true" />

9. Tambahkan dalam MainActivity
public void broadcastBatt(View view){ butBatt.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View arg0) { Intent intent = new Intent(MainActivity.this, BaterryStatus.class); startActivity(intent); } });

10. Tambahkan sebuah layout dengan nama batt.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ProgressBar android:id="@+id/bar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/level" android:layout_width="0px" android:layout_height="wrap_content" android:layout_weight="1" android:textSize="36sp"/> <ImageView android:id="@+id/status" android:layout_width="0px" android:layout_height="wrap_content" android:layout_weight="1"/> </LinearLayout> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="Kembali ke halaman sebelumnya" android:onClick="kembali" android:id="@+id/butKembali"/> </LinearLayout>

11. Tambahkan file java dengan nama BaterryStatus.java
package com.example.lucianugraheni.trybroadcast; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.net.Uri; import android.os.BatteryManager; import android.os.Bundle;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; public class BaterryStatus extends AppCompatActivity { private ProgressBar bar; private ImageView status; private TextView level; private Button butKembali; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.batt); bar = (ProgressBar) findViewById(R.id.bar); status = (ImageView) findViewById(R.id.status); level = (TextView) findViewById(R.id.level); registerReceiver(onBattery, new IntentFilter( Intent.ACTION_BATTERY_CHANGED)); butKembali = (Button) findViewById(R.id.butKembali); }public void kembali(View view){ butKembali.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { Intent intent = new Intent(BaterryStatus.this, MainActivity.class); startActivity(intent); } }); }BroadcastReceiver onBattery = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { int pct =100 * intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 1) / intent.getIntExtra(BatteryManager.EXTRA_SCALE, 1); bar.setProgress(pct); level.setText(String.valueOf(pct)); switch (intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1)) { case BatteryManager.BATTERY_STATUS_CHARGING: status.setImageResource(R.drawable.charging); break; case BatteryManager.BATTERY_STATUS_FULL: int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); if (plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB) { status.setImageResource(R.drawable.full); } else { status.setImageResource(R.drawable.unplugged); }break; default: status.setImageResource(R.drawable.unplugged); break; }
} }; }

12. Dan tambahkan juga dalam AndroidManifest.xml , untuk mendaftarkan activity.
<activity android:name=".BaterryStatus"> </activity>
13. Jalankan dan amati hasilnya.
14. Sekarang kita akan menambahkan Service.
15. Pertama kita membuat sebuah menu pada layout batt.xml dan BaterryStatus.java
16. Tambahkan pada layout batt.xml sebuah Button.
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Pilih Service" android:layout_gravity="center" android:id="@+id/btnService"/>

17. Deklarasikan variabel Button pada BaterryStatus.java dengan nama btnMenu, tambahkan pada deklarasi Button yang sudah ada.
18. Tambahkan pada method onCreate, sebagai berikut
final String[] option = {"Facebook", "Twitter", "Telpon", "Sms"}; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.select_dialog_item, option); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Select Option"); builder.setAdapter(adapter, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { if (i == 0) { Intent intfb = new Intent(Intent.ACTION_VIEW,
Uri.parse("https://facebook.com")); startActivity(intfb); } else if (i == 1) { Intent inttw = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com")); startActivity(inttw); } else { if (i == 2) { Intent inttel = new Intent(Intent.ACTION_CALL, Uri.parse("tel:+628888999")); startActivity(inttel); } else { Intent intsms = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:+6288889999")); intsms.putExtra("sms_body", "Halo apa kabar"); startActivity(intsms); } } } });
final AlertDialog a = builder.create(); btnMenu = (Button) findViewById(R.id.btnService); btnMenu.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { a.show(); } });

19. Tambahkan pada AndroidManifest.xml dua buah permission, sebagai berikut
<uses-permission android:name="android.permission.CALL_PHONE"/> <uses-permission android:name="android.permission.SEND_SMS"/>
20. Jalankan dan amati hasilnya.

0 Response to "Broadcast Receiver dan Services pada android studio"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel