Merhaba Arkadaşlar ,
Mobilhanem.com sitemizden anlattığımız/yayınladığımız derslerimize bu dersimizde, Android Online Radyo Stream Uygulaması ile devam ediyoruz. Online Radyo Uygulaması yapabilmenin iki türlü yolu var biri benim anlatacağım gibi direk olarak ilgili radyo kanalının url ini stream ederek direk olarak çalıştırma, diğeri ise service alt yapısını kullanarak ( bu daha kapsamlı ) radyo uygulamasını oluşturmak.
Öncelikle Android Online Radyo Stream Uygulamasını oluşturabilmek için çalıştırmak istediğiniz radyo kanalı bulmanız gerekiyor. Bir çok yabancı ve yerli radyo istasyonu url kaynaklarını bu siteden bulabilirsiniz. http://www.radiosure.com/stations/
Şimdi gelelim uygulamamızı oluşturmaya; uygulamamızda iki adet buton olacak start ve stop işlevlerini gerçekleştirecek. Ayrıca ses kontrolü için bir de SeekBar ekledik.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="#9999ff" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Online Radio Stream" android:layout_marginTop="10dip" android:gravity="center" /> <LinearLayout android:id="@+id/linearLayout1" android:layout_height="wrap_content" android:layout_width="match_parent" android:layout_marginTop="20dp" android:gravity="center"> <Button android:text="Play" android:id="@+id/buttonPlay" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:text="Stop" android:id="@+id/buttonStopPlay" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> <SeekBar android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/seekBar" /> </LinearLayout>
Şimdi gelelim ana activity de gerçekleşen kodları incelemeye; initializeMediaPlayer() methodunda urli stream ediyoruz. Eğer hatalı bir radyo url i stream etmeye çalıştığımızda try catch bloğunda hatayı yakaladığını göreceksiniz. start butonuna bastığımızda Media Player hazır hale gelir gelmez ilgili radyo yayını çalmaya başlar. stop butonuna bastığımızda ise stopMediaPlayer() methodunda eğer Media Player çalışıyorsa onu durdurup tekrardan stream olayını gerçekleştiriyoruz. FLAG_KEEP_SCREEN_ON ile uygulamanın uyku moduna geçmesini engelliyoruz. Uygulama arka plana alınıp tekrar açıldığında radyo çalmaya devam ediyorsa tekrardan çalma işlemlerinin devam etmesini sağlıyoruz. SeekBar yardımıyla da radyonun sesini artırma ve azaltma işlemlerini gerçekleştiriyoruz.
MainActivity.java
package com.mobilhanem.radioplayerexample; import android.media.AudioManager; import android.media.MediaPlayer; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.WindowManager; import android.widget.Button; import android.widget.SeekBar; import android.widget.Toast; import java.io.IOException; public class MainActivity extends AppCompatActivity { private String streamUrl = "http://sc.powergroup.com.tr/RadyoFenomen/mpeg/128/tunein"; private Button startBtn; private Button stopBtn; private MediaPlayer player; public static boolean isAlreadyPlaying = false; private AudioManager audioManager; private SeekBar volumeBar; @Override protected void onResume() { super.onResume(); if(isAlreadyPlaying){ playRadioPlayer(); }else{ stopRadioPlayer(); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); audioManager = (AudioManager)getSystemService(getApplicationContext().AUDIO_SERVICE); volumeBar = (SeekBar) findViewById(R.id.seekBar) ; volumeBar.setMax(audioManager.getStreamMaxVolume(AudioManager.STREAM_RING)); volumeBar.setKeyProgressIncrement(10); volumeBar.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_RING)); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); // uyku modunu kapatma startBtn = (Button) findViewById(R.id.buttonPlay); stopBtn = (Button) findViewById(R.id.buttonStopPlay); stopBtn.setEnabled(false); startBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { isAlreadyPlaying = true; playRadioPlayer(); } }); stopBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { isAlreadyPlaying = false; stopRadioPlayer(); } }); initializeMediaPlayer(); volumeBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); } private void playRadioPlayer() { stopBtn.setEnabled(true); startBtn.setEnabled(false); player.prepareAsync(); player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { public void onPrepared(MediaPlayer mp) { player.start(); } }); } private void stopRadioPlayer() { if (player.isPlaying()) { player.stop(); player.release(); initializeMediaPlayer(); } startBtn.setEnabled(true); stopBtn.setEnabled(false); } private void initializeMediaPlayer() { player = new MediaPlayer(); try { player.setDataSource(streamUrl); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } @Override protected void onPause() { super.onPause(); if (player.isPlaying()) { player.stop(); } } }
Android Online Radyo Stream işlemlerini sizlere temel bir şekilde anlatmaya çalıştım. Uygulamamızın kaynak kodlarını indirip çalıştırdığımızda gerçekleşen işlemleri adım adım görebilirsiniz.
Mobilhanem.com üzerinden anlattığımız mobil uygulama geliştirme derslerine devam edeceğiz. Konu hakkında sorunuzu yorum alanından sorabilirsiniz. Konu dışı sorularınızı ve tüm yazılımsal sorularınızı sorucevap.mobilhanem.com sitemizden de sorabilirsiniz.
Bir dahaki dersimizde görüşmek dileğiyle..