Belajar Android Membuat Aplikasi Radio Streaming

Belajar Android lagi yuk. Jumpa lagi dengan Agus Haryanto, pada kesempatan kali ini kita akan mempelajari tentang pembuatan aplikasi radio streaming pada android.

Dulu saya heran kok bisa yah orang dengarin radio padahal di handphonenya tidak fitur Radio FM. Yang lebih hebat lagi dia bisa dengarin Radio siaran Luar negeri yang kita sama-sama tahu radio luar negeri itu kan hanya bisa ditangkap oleh Radio SW. Wah pasti ada rahasia dibalik rahasia. Setelah googling akhirnya dapat jawaban yang didengarkan oleh orang-orang itu adalah Radio dari Internet istilah umumnya adalah Radio Streaming. Karena sudah pakai internet maka apabila jaringan internetnya bagus kualitas siaran yang kita dapatkan akan bagus, kita tidak akan ketemu lagi suara kemresek kalau gelombangnya kurang pas.

Akhirnya penasaran juga pengan buat aplikasi yang bisa bantu orang dengar Radio lewat Streaming Internet. Akhirnya seperti biasa kita manfaatkan Internet juga untuk mencari jawabannya. Ketemu deh jawabannya di sini.

Oh ia seperti pada Radio FM setiap radio punya gelombangnya masing-masing demikian juga dengan Radio Internet mereka punya address masing-masing.


Mari kita mulai.

  1. Buat Project baru dengan nama “RadioStreaming”
  2. Sekarang mari kita siapkan layout user interfacenya,  Edit activity_main.xml lalu ketikan kode berikut.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    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"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textViewRadioUrl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="Radio Url" />

    <Button
        android:id="@+id/buttonPlay"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/progressBar1"
        android:layout_below="@+id/progressBar1"
        android:layout_marginTop="14dp"
        android:text="Play" />

    <ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textViewRadioUrl"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/textViewRadioUrl"
        android:layout_marginTop="14dp"
        android:indeterminateDrawable="@android:drawable/progress_indeterminate_horizontal"
        android:indeterminateOnly="false"
        android:maxHeight="20dip"
        android:minHeight="20dip"
        android:progressDrawable="@android:drawable/progress_horizontal" />

    <Button
        android:id="@+id/buttonStop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/buttonPlay"
        android:layout_alignBottom="@+id/buttonPlay"
        android:layout_toRightOf="@+id/buttonPlay"
        android:text="Stop" />

</RelativeLayout>

3. Sekarang kita melangkah ke otak dari aplikasi radio streaming ini, edit class MainActivity.java lalu ketikan kode berikut

package net.agusharyanto.radiostreaming;

import java.io.IOException;

import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnBufferingUpdateListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {

	
	private String url_radio= "http://usa8-vn.mixstream.net:8138";
    private ProgressBar playSeekBar;
    
    private TextView tvRadioUrl;
    private Button buttonPlay;

    private Button buttonStopPlay;

    private MediaPlayer player;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initializeUIElements();

        initializeMediaPlayer();
    }

    private void initializeUIElements() {

        playSeekBar = (ProgressBar) findViewById(R.id.progressBar1);
        playSeekBar.setMax(100);
        playSeekBar.setVisibility(View.INVISIBLE);
        playSeekBar.setIndeterminate(true);
        buttonPlay = (Button) findViewById(R.id.buttonPlay);
        buttonPlay.setOnClickListener(this);

        buttonStopPlay = (Button) findViewById(R.id.buttonStop);
        buttonStopPlay.setEnabled(false);
        buttonStopPlay.setOnClickListener(this);
        tvRadioUrl = (TextView) findViewById(R.id.textViewRadioUrl);
        tvRadioUrl.setText("Radio url : "+url_radio);
    }

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

    private void startPlaying() {
        buttonStopPlay.setEnabled(true);
        buttonPlay.setEnabled(false);

        playSeekBar.setVisibility(View.VISIBLE);

        player.prepareAsync();

        player.setOnPreparedListener(new OnPreparedListener() {

            public void onPrepared(MediaPlayer mp) {
            	
                player.start();
            	
            }
        });

    }

    private void stopPlaying() {
        if (player.isPlaying()) {
            player.stop();
            player.release();
            initializeMediaPlayer();
        }

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

    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 OnBufferingUpdateListener() {

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

    @Override
    protected void onPause() {
        super.onPause();
        if (player.isPlaying()) {
          //  player.stop();
        }
    }

}

4. Jangan lupa karena aplikasi kita menggunakan jaringan internet maka kita harus menambahkan permission internet pada AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.agusharyanto.radiostreaming"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    
  <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="net.agusharyanto.radiostreaming.RadioActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

5. Saatnya menjalankan project RadioStreaming yang telah kita buat.

Klik Button Play tunggu beberapa saat dan dari handphone anda akan terdengar suara siaran Radio.


Nah Gampangkan buatnya, ayoo semangat. Yang lagi skripsi tingkatkan semangat dan usahanya, semoga bisa cepat selesai jangan ditunda-tunda lagi.

Untuk yang sudah sukses dengan tutorial ini bisa mencoba tantangannya dengan membuat aplikasi Radio streaming yang bisa memainkan lebih dari 1 station radio 

Semoga Bermanfaat

Salam Hangat

Agus Haryanto

Referensi:
http://stackoverflow.com/questions/6283568/online-radio-streaming-app-for-android

54 comments to Belajar Android Membuat Aplikasi Radio Streaming

  • Radi

    assalamualaikum mas…..
    mas agus mau tanya.,ni radio streaming a bisa bisa di buat di eclip v1 dan v2??

  • Agus Haryanto

    @Radi, Wa’alaikumsalam maksudnya eclipse v1 dan v2 ?

  • yuyun

    pak agus apa bisa ganti chanel radio lain?
    kok saya coba gak keluar suara y?

  • muhammad deni

    pak saya lagi membuat aplikasih suatu pengajian dan di dalam nya ada radio streaming dan video streaming,
    pada artikel bapak di atas, alhamdulillah berjalan lancar di aplikasi yg saya buat, dan saya masih membuhtukan tutorial membuat video streaming,
    bapak agus bisa membantu saya?

  • Yohanes

    Mas Agus, itu pas tak coba, sewaktu tak tekan tombol Home atau pas waktu layar terkunci. streaming menjadi berhenti. Untuk menambahkan proses service dimananya?

  • Agus Haryanto

    @Yohanes, Tidak perlu buat service untuk handling ini. pada saat tombol di home ditekan maka activity yang berjalan akan masuk ke onPause. Tinggal remark salah satu code di onPause selesai deh 🙂 Happy Coding dan coba pelajari Activity Life Cycle

  • Yohanes

    Makasih Mas Agus atas bantuan dan pencerahannya…

  • Jetro

    Mas agus itu alat alat yang diperlukan apa saja ya ? makasih

    maaf baru belajar nih

  • muhammad deni

    oh iyh bener tu mas, ketika di lock hpnya streamingny jadi mati,
    Maksudnya di remark code onPause apa?
    saya tidak ngerti mas.

  • Agus Haryanto

    muhammad deni, coba lihat code yang didalam method onPause. Nah itu yang diremark

  • Rudi Julian

    Pak Mau nanya,.Waktu Saya Menjalankan Aplikasi nya kok Force Closed ya ??
    mohon pencerahannya pak,. 😀

  • Ari

    pak bisa minta link download aplikasi pembuat androidnya?? itu pake apa?

  • ady

    udah dicoba tapi gak nemu pak biar nambah siarannya , yang mana ya . . yang perlu di tambah :D, mohon bantuannya yaa

  • mie

    Hai, url radio streaming ini http://216.66.84.3:5902 tidak boleh running..kenapa?
    Untuk stream type nye AAC+ tidak bisa running (cth : http://216.66.84.3:5902)
    Untuk stream type MP3 tiada masalah (cth : http://192.186.148.94:8008).
    Ada jalan penyelesaian?

    Mintak bantuan, saya harap ada jalan penyelesaian.

    Terima kasih tuan.

  • Agus Haryanto

    @Rudi, Coba dicek LogCatnya. itu dapat menuntun kita mengethui penyebab masalah

  • Zulhadi

    pak agus saya sudah coba menambahkan untuk stasiun radio yang lain tapi kok ga bisa ya, mohon bimbingannya.

  • Agus Haryanto

    @Zulhadi, kalau link radio yang saya kasih harusnya jalan. kalau yang lain belum coba.

  • Rembi

    Pak Agus,

    saya sudah lakukan semua perintah dan syntaxnya tapi kenapa sewaktu diinstal dan dijalankan keluar “Unfurtonatelly RadioStraming Has Stopped”, ini apa masalahnya yah?, mohon pencerahanya.

    terima kasih

  • Yohanes

    Mas Agus, saya udah coba buat dan saya install di HP saya, LG L3 II Dual dan berhasil, tapi kok sewaktu saya coba di Samsung Galaxy Chat, Grand Duos, Note 3, Cyrus (lupa tipe) sama Acer E3 kok ga bisa jalan ya? Jadi cuma buffering terus (abu2 garis2 jalan) dan ga mau keular suara sama sekali. Padahal jaringan bagus.
    padahal minimum Froyo maksimum Jelly Bean 4.3
    Gitu itu kenapa ya Mas?

    Makasih banyak sebelumnya Mas Agus…

  • Yohanes

    Sama itu Mas Agus,kalau saat play, kemudian di stop, terus di play lagi maka jadi nutup paksa Mas. Itu dimananya ya?

  • Ryan

    Mas Agus,

    Cara mengetahui Url Radionya gimana ya ?

    apakah setiap radio yang sudah streaming di Internet bisa semua ?
    saya perhatikan hanya bisa di SHOUTcast saja

    Mohon pencerahannya mas

  • playSeekBar = (ProgressBar) findViewById(R.id.progressBar1); << ini error
    playSeekBar.setMax(100);
    playSeekBar.setVisibility(View.INVISIBLE);
    playSeekBar.setIndeterminate(true);
    buttonPlay = (Button) findViewById(R.id.buttonPlay); << ini error
    buttonPlay.setOnClickListener(this);

    buttonStopPlay = (Button) findViewById(R.id.buttonStop);<< ini error
    buttonStopPlay.setEnabled(false);
    buttonStopPlay.setOnClickListener(this);
    tvRadioUrl = (TextView) findViewById(R.id.textViewRadioUrl); << ini error
    tvRadioUrl.setText("Radio url : "+url_radio);

    knapa ya di eclipse saya itu ada tanda error x ? tulisannya progressBar1 cannot be resolved or is not a filed ? itu progressBar1 sama dng yg buttonPlay, buttonStop dan textViewRadioUrl .. mohon pecerahanya. thx

  • Yohanes

    Mas Budi, coba tambahkan ini di import

    import nama_pacakage.main.R

  • mas saya ude coba di atas tapi gag mau work pas mau di running ada tulisaannya “unfortunately,Radiostreaming has stopped”

    ini screenshootnya http://postimg.org/image/41rvz1m37/

  • pbiyan123

    terima kasih pak…
    aplikasinya berhasil

  • aan

    om agus , aku dah coba dah jalan kerennnn nanti bakal aku coba kembangin lagi terima kasih om agus , cuma kok klo coba pake radio yang pake short domain misal http://www.987genfm.com/streaming
    itu ga bisa om mohon pencerahan > 😀

  • Permisi, ada yg punya skripsi lengkap tentang radio android ini? pliss help me, aku butuh buat referensinya, sy kesulitan diperancangan sistemnya, mohon bantuannya, kalau ada yg punya mohon kirim ke email sy : gilang_mmf@yahoo.co.id . semoga banyak rejekinya,dipermudah dlm segala hal, banyak pahala dan sukses selalu. Amin

  • haris

    pak sy mau tanya bisa ga project android di eclipse open di netbeans ,,

  • nurkolis

    om agus saya lagi belajar masih awam 😀

    saya coba ko pas saya launch keluar ini, kenapa ya??

    [2014-07-16 08:44:19 – Emulator] Failed to allocate memory: 1455
    [2014-07-16 08:44:19 – Emulator]
    [2014-07-16 08:44:19 – Emulator] This application has requested the Runtime to terminate it in an unusual way.
    [2014-07-16 08:44:19 – Emulator] Please contact the application’s support team for more information.

  • alwi

    mas tanya, agar aplikasinya bisa diputar di latar belakang gimana ya?

  • Agus Haryanto

    @alw, lihat comment2 sebelumnya. sudah ada jawabannya

  • ibnu Alimin

    mas agus main activty yang saya pake kanap eror terus

  • Agus Haryanto

    @ibnu, Pastikan file layout xmlnya sudah disave

  • Ibnu Alimin

    buttonPlay cannot be resolved or is not a field line 46 Java Problem

    textViewRadioUrl cannot be resolved or is not a field line 52 Java Problem

    buttonStop cannot be resolved or is not a field line 49 Java Problem

    progressBar1 cannot be resolved or is not a field line 42 Java Problem

    mas agus itu masalahnya di atas bagaimana solusinya kenapa setiap kali pasang mesti eror

  • ketika ditekan tombol home sudah bisa berjalan di background tetapi ketika tombol back aplikasi mati, untuk tombol back pake activity life cycle yg mana? sy coba onStop nda bisa

  • mas agus.. saya terkendala di sini mas.. msih kurang faham.. ada tanda serunya..

    playSeekBar = (ProgressBar) findViewById(R.id.progressBar1);
    playSeekBar.setMax(100);
    playSeekBar.setVisibility(View.INVISIBLE);
    playSeekBar.setIndeterminate(true);
    buttonPlay = (Button) findViewById(R.id.buttonPlay);
    buttonPlay.setOnClickListener(this);

    buttonStopPlay = (Button) findViewById(R.id.buttonStop);
    buttonStopPlay.setEnabled(false);
    buttonStopPlay.setOnClickListener(this);
    tvRadioUrl = (TextView) findViewById(R.id.textViewRadioUrl);
    tvRadioUrl.setText(“Radio url : “+url_radio);

  • Agus Haryanto

    @jhack, kalau tanda seru warnanya hanya kuning itu namanya warning. dan program masih bisa dirun

  • Ringgo

    Mas…toling di bantu..sy ingin memuncul kan current song dan jumlah pendengar nya..gmn cara nya mas..?

  • agung

    berguna banget nih buat belajar, makasih yaah mas, izin share juga yah 😀

  • mas agus…. bagaimana cara pasang admob untuk aplikasi ini??? mohon buat totor lagi cara memasukan admob. jgn lupa kabarin ane via email kalau sdh buat totorial nya. hehehe

  • Mantab banged mas, saya coba dulu ya mas. moga work saat di pasang di blogku. matur nuwun..

  • kalau nambahin form dibawahnya, gmn pak caranya?

  • Saya coba praktekkan dulu ya mas, makasih banya mas sebelumnya. akhirnya saya bisa menemukan artikel tentang aplikasi yang saya cari ini.

  • Ferdi

    mas Agus cara buat aplikasi video Streaming gmana mas ?? mhon bantuannya..

  • roby

    mas agus pas di activity_main.xml kok
    RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
    xmlns:tools=”http://schemas.android.com/tools”
    tandanya merah dan tulisan nya url not registered.. itu gimana ya mas? terimakasih sebelumnya

  • Bangga juga yah seandainya bisa bikin aplikasi sendiri dan banyak digunakan orang lain seperti aplikasi radio misalnya, mas.

  • M Ridha

    assalamualaikum. Pak Agus mau nanya nih. saya usulkan TA dengn judul radio streaming android. trus dosen saya suruh tambahin algoritma agar saat kondisi jaringan lemot kualitas suara yang di hasilkan oleh aplikasi tetap jernih. itu kira” algoritma apa.. yah pak?? mohon balasannya

  • mas aguss tuh aplikasi nya namnya apa ya ?

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>