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.

Android Online Stream Uygulaması

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

Alper Beyler

Yüksek Lisans: Çankaya Üniversitesi / Bilgisayar Mühendisliği
Lisans: Çankaya Üniversitesi / Bilgisayar Mühendisliği (4/3.30) (2010-2014)
Lisans : Viyana Teknik Üniversitesi / Bilgisayar Bilimleri (2013)

11 Yorum

  • Peki birden fazla radyo eklemek için nasıl bir yol haritası izlemem lazım ben button felan olayını hallettim yanlız tanıtmasını yapamadım ikinçi bi main activity mi açmak lazım ve nasıl bir kod uygulaması yapapmam lazım şimididen tşkler

  • uygulama düzgün çalışıyor fakat intent kullanarak ikinci aktivite de çalıştırdığımda play butonuna basınca uygulama durduruldu hatası alıyorum

      • Androidmanifest dosyasında internet izni vermeyi unutmuşum. izni verince sorun ortadan kalktı.arkaplanda çalışmayı bir türlü yapamadım. service yapısını nereye yazacağımı çözemedim.bu konuyla alakalı yardımcı olursanız memnun olurum. ilginize tekrar teşekkür eder iyi çalışmalar dilerim

  • hocam herseyi yaptım cıhazımda actım uygulamayı fakat herhangı bi ses radyo sesi gelmiyor 5 tane proje actım yaptım değişen hiç bişe yok ses yok lutfen yardım edın ve farklı radio kanalları buna nasıl ekliyebilirim ?lütfen yardım edin https://www.facebook.com/olcaytuq.tasir facebook profilim burdan yazın ALLAH AŞKINA donun bilen biri varsa oda yazsın geliştirmek ıstıyorum bu uygulamayı……

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?