Site icon Mobilhanem

Android Online Radyo Stream Uygulaması

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..

1
Exit mobile version