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.
- Buat Project baru dengan nama “RadioStreaming”
- 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
Mas, kok pas saya klik play ada tulisan RadioStreaming has stopped
ket:
03-05 10:35:37.914 7050-7050/com.gmail.farasabiyyu12.justradio E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.gmail.farasabiyyu12.justradio, PID: 7050
java.lang.IllegalStateException
at android.media.MediaPlayer.prepareAsync(Native Method)
at com.gmail.farasabiyyu12.justradio.MainActivity.startPlaying(MainActivity.java:86)
MainActivity.java:86 = player.prepareAsync();
gan kalo kita mau buat aplikasi radio online… itu kita harus izin khusus ke pihak radio station nya…apa
Kalau url.nya model seperti ini misalnya http://urlwebsite.com:8000/streamingradio
apakah kodenya sama? Apakah menambah kode?
maaf mas mau nanya, ini buatnya gak pake android studio ya ?