Activity Running in Background Android on Radio Player

Hai sobat, pada artikel sebelumnya yang berjudul Radio Player Android Tutorial, telah kita coba membuat aplikasi pemutar radio streaming di android. Dan kini saya akan menunjukkan kepada sobat untuk membuat aplikasi pemutar radio yang kemarin di buat agar dapat berjalan di background.


Pernahkah sobat bermain game di android, lalu sobat mendapat telepon atau sesuatu yang membuat sobat harus menjeda atau menutup game yang sedang sobat mainkan? Dan saat sesuatu itu selesai, lalu sobat membuka game yang tadi dimainkan tetapi sobat masih bisa melanjutkanya. Kenapa game tersebut tidak dimulai dari awal atau berhenti? jika tahu silahkan komentar di bawah ya hehe

Penyebab game tersebut tidak berhenti dan sobat masih bisa melanjutkan game yang sobat mainkan adalah karena game tersebut bisa berjalan di background. Jadi saat sobat menutup aplikasi tersebut dengan menekan tombol home atau back atau keluar karena ada aplikasi yang menggantikanya, maka aktivitas (activity) yang sedang berlangsung tadi disimpan di dalam memori agar masih bisa diakses pada lain waktu. Untuk penjelasanya kita bisa

Baca juga "Membuat Aplikasi Sederhana Menggunakan Material Design"

Dan kali ini kita akan membuat fungsi running in background pada aplikasi yang kemarin kita buat yaitu aplikasi radio streming. Jadi jika kita tambahkan fungsi ini ke dalam aplikasi radio streaming ini, maka aplikasi ini bisa berjalan di background dan kita bisa mendengarkan radio sambil melakukan aktivitas lain. Untuk membuat aplikasi berjalan di background (running in background), sobat bisa mengikuti langkah-langkah di bawah ini:

Buka project radio player yang kemarin di buat pada artikel tentang Radio Player Android Tutorial, lalu buka file MainActivity.java dan tambahkan kode di bawah ini :


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_BACK:
                if(isTaskRoot() && player.isPlaying()) {
                    Intent homeIntent = new Intent(Intent.ACTION_MAIN);
                    homeIntent.addCategory(Intent.CATEGORY_HOME);
                    startActivity(homeIntent);
                    return true;
                } else {
                    super.onKeyDown(keyCode, event);
                    return true;
                }

                default:super.onKeyDown(keyCode, event);
                    return true;
        }


Jika class MainActvity.java telah ditambahkan kode di atas, maka kode pada class MainActivity.java secara keseluruhan akan seperti berikut ini


package com.blogsetyaaji.radio;

import android.content.Intent;
import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;

import java.io.IOException;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private String url_radio = "http://162.243.130.87";
    private ProgressBar playSeekBar;
    private TextView tvRadioUrl;
    private Button buttonPlay;
    private Button buttonStop;
    private MediaPlayer player;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initializeUIElements();
        initializeMediaPlayer();
    }

    private void initializeMediaPlayer() {
        player = new MediaPlayer();
        try {
            player.setDataSource(url_radio);
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        player.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {
            @Override
            public void onBufferingUpdate(MediaPlayer mp, int percent) {
                playSeekBar.setIndeterminate(false);
                playSeekBar.setSecondaryProgress(100);
                Log.i("Buffering", "" + percent);
            }
        });

    }

    private void initializeUIElements() {
        playSeekBar = (ProgressBar) findViewById(R.id.progresBar);
        playSeekBar.setMax(100);
        playSeekBar.setVisibility(View.INVISIBLE);
        playSeekBar.setIndeterminate(true);

        buttonPlay = (Button) findViewById(R.id.btnPlay);
        buttonPlay.setOnClickListener(this);

        buttonStop = (Button) findViewById(R.id.btnStop);
        buttonStop.setEnabled(false);
        buttonStop.setOnClickListener(this);

        tvRadioUrl = (TextView) findViewById(R.id.textUrlRadio);
        tvRadioUrl.setText("Radio url : " + url_radio);

    }

    @Override
    public void onClick(View v) {
        if (v == buttonPlay) {
            startPlaying();
        } else if (v == buttonStop) {
            stopPlaying();
        }

    }

    private void stopPlaying() {
        if (player == null) return;
        try{
            if (player.isPlaying()) {
                player.stop();
                player.release();
                initializeMediaPlayer();
            }
        } catch (IllegalStateException e) {

        }
        buttonPlay.setEnabled(true);
        buttonStop.setEnabled(false);
        playSeekBar.setIndeterminate(true);
        playSeekBar.setVisibility(View.INVISIBLE);
    }

    private void startPlaying() {
        buttonStop.setEnabled(true);
        buttonPlay.setEnabled(false);
        playSeekBar.setVisibility(View.VISIBLE);
        player.prepareAsync();
        player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                player.start();
            }
        });
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_BACK:
                if(isTaskRoot() && player.isPlaying()) {
                    Intent homeIntent = new Intent(Intent.ACTION_MAIN);
                    homeIntent.addCategory(Intent.CATEGORY_HOME);
                    startActivity(homeIntent);
                    return true;
                } else {
                    super.onKeyDown(keyCode, event);
                    return true;
                }

                default:super.onKeyDown(keyCode, event);
                    return true;
        }
    }
}


Selanjutnya silahkan sobat jalankan aplikasinya lalu setelah radio terputar tekan tombol kembali, bila radio masih berputar saat kita menutup aplikasi, maka fungsi running in background di atas telah berhasil.

Sekian artikel tentang Activity Running in Background Android on Radio Player semoga bermanfaat, antikan artikel berikutnya.

Previous
Next Post »

Terimakasih atas kunjunganya.
Silahkan berkomentar dan beri kritik serta saran.
Jangan lupa difollow.

ConversionConversion EmoticonEmoticon