Broadcast Receiver dan Services pada android studio
Sunday, 30 September 2018
Add Comment
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
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"/>
0 Response to "Broadcast Receiver dan Services pada android studio"
Post a Comment