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..
Peki Uygulamadan cıkınca radyo arkaplanda calmasina devam etmesini nasil sağlarim
merhaba , arka planda da çalışmasını istiyorsanız service yapısını kullanmanız gerekmektedir. örnek olarak bu sitedeki kodları incelemeniz faydalı olacaktır.
( https://developer.android.com/guide/topics/media/mediaplayer.html#mpandservices )
Merhaba, ben bu isi beceremedim 🙁 sadece IP ve PORT olayini girip degisebilecegim bir sekil olmasi mumkunmu?
Kardeşim sen yapabildin mi? ben denedim bir kaç yol olmadı.
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
Hata kodunu paylaşman gerekir.
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ı……
Şu kaynağı okuyabilirsin. Burda arkadaş hazır kütüphaneleri kullanmış. Sende hazır kütüphane kullanabilirsin.
https://sorucevap.mobilhanem.com/sorular/stream-dosyalari-acmak-icin-kutuphane/
merhaba birden fazla radyo eklemek istiyorum listview kullanarak yaptım iki activiteden olusuyo proje ilk indisdeki calisiyo digerleri calismiyo bunun için ne yapabilirim listviewda birden fazla radyo nasil calistirabilirim