Bu makalemde “SeekBar nedir?” açıklayacağım ve SeekBar nesnesi kullanarak, bir Media Player yapımını örnekleyeceğim.
SeekBar nedir?
Seekbar; bir çizgi ve imleçten oluşan bir Widget'(bir çeşit buton)tır.İmlecin durduğu konuma göre seviye almamıza yardımcı olur.
SeekBar nesnesi kullanarak, bir Media Player yapma
MainActivity sınıfım içinde müzik dosyasını çağırma, müziği oynatma ,durdurma,ileri ve geri sarma işlevlerini yapan metodlar yazdım.Bu işlevleride butonlar ve SeekBar nesnesi kullanarak yansıttım. MainActivity.java sınıfında bulunan kodlar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
import java.util.concurrent.TimeUnit; import android.media.MediaPlayer; import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.SeekBar; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { public TextView songName,startTimeField,endTimeField; private MediaPlayer mediaPlayer; private double startTime = 0; private double finalTime = 0; private Handler myHandler = new Handler();; private int forwardTime = 5000; private int backwardTime = 5000; private SeekBar seekbar; private ImageButton playButton,pauseButton; public static int oneTimeOnly = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Controller elementlerimizi tanımlıyoruz... songName = (TextView)findViewById(R.id.textView4); startTimeField =(TextView)findViewById(R.id.textView1); endTimeField =(TextView)findViewById(R.id.textView2); seekbar = (SeekBar)findViewById(R.id.seekBar1); playButton = (ImageButton)findViewById(R.id.imageButton1); pauseButton = (ImageButton)findViewById(R.id.imageButton2); songName.setText("beyoncesingleladies.mp3"); ///res dizinin altına raw adında bir klasor acıp buraya çalıcak muzigimizi koyduk // ve burdada muzigi cagırarark MediaPlayer bu degeri gonderdik ... mediaPlayer = MediaPlayer.create(this, R.raw.beyoncesingleladies); seekbar.setClickable(false); pauseButton.setEnabled(false); } //**Play butonuna basıldıgında çalısacak methodu yazıyoruz... public void play(View view){ //Muziğin başladıgına dair Toast ile uyarı yazdırıyoruz.. Toast.makeText(getApplicationContext(), "Müzik çalınıyor.", Toast.LENGTH_SHORT).show(); // MediaPlayer başlatıyoruz... mediaPlayer.start(); //Sesin millisaniye cinsinden toplam süresini öğreniyoruz... finalTime = mediaPlayer.getDuration(); startTime = mediaPlayer.getCurrentPosition(); if(oneTimeOnly == 0){ seekbar.setMax((int) finalTime); oneTimeOnly = 1; } //Muziğin toplamda ne kadar süre oldugunu endTimeField controller ına yazdırıyoruz... endTimeField.setText(String.format("%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes((long) finalTime), TimeUnit.MILLISECONDS.toSeconds((long) finalTime) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS. toMinutes((long) finalTime))) ); //Muziğin başladıgı andan itibaren gecen süreyi ,startTimeField controller ına yazdırıyoruz... startTimeField.setText(String.format("%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes((long) startTime), TimeUnit.MILLISECONDS.toSeconds((long) startTime) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS. toMinutes((long) startTime))) ); //Muziğin hangi sürede oldugunu gostermek icin, seekbar kullarak gosteriyoruz... seekbar.setProgress((int)startTime); myHandler.postDelayed(UpdateSongTime,100); //Muzik suan calan durumnda oldugu icin , pause true yapıyoruz(durdurulabilir olması icin...) pauseButton.setEnabled(true); playButton.setEnabled(false); } //Muziğin çalma süresini gunceleyerek,sesin çalmasını devam etmesini saglıyoruz... private Runnable UpdateSongTime = new Runnable() { public void run() { startTime = mediaPlayer.getCurrentPosition(); startTimeField.setText(String.format("%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes((long) startTime), TimeUnit.MILLISECONDS.toSeconds((long) startTime) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS. toMinutes((long) startTime))) ); //Muziğin hangi sürede oldugunu gostermek icin, seekbar kullarak gosteriyoruz... seekbar.setProgress((int)startTime); myHandler.postDelayed(this, 100); } }; //Muzik çalarken, duraklatmayı saglayan method public void pause(View view){ //Muziğin duraklatıldıgına dair Toast ile uyarı yazdırıyoruz.. Toast.makeText(getApplicationContext(), "Müzik durduruldu",Toast.LENGTH_SHORT).show(); // MediaPlayer durduyoruz mediaPlayer.pause(); //ve butonlarımızı pasif ,aktif durumunu düzenliyoruz.. pauseButton.setEnabled(false); playButton.setEnabled(true); } //İleri butonuna bastgınızda,muzigin çalış süresini 5 saniye artırarak muzigi ilerletir public void forward(View view){ int temp = (int)startTime; if((temp+forwardTime)<=finalTime){ startTime = startTime + forwardTime; mediaPlayer.seekTo((int) startTime); } else{ //Muzigin çalıs suresi son 5 saniye geldiginde ,ileri tusuna basarsanız kosulu icin uyarı yazdıyoruz Toast.makeText(getApplicationContext(), "Son 5 saniyedeyken muziği ilerletemezsiz", Toast.LENGTH_SHORT).show(); } } //Geri butonuna bastgınızda,muzigin çalış süresini 5 saniye azaltarak muzigi geriye alır public void rewind(View view){ int temp = (int)startTime; if((temp-backwardTime)>0){ startTime = startTime - backwardTime; mediaPlayer.seekTo((int) startTime); } else{ //Muzigin çalıs suresi ilk 5 saniye gelmeden ,geri tusuna basarsanız kosulu icin uyarı yazdıyoruz Toast.makeText(getApplicationContext(),"İlk 5 saniyedeyken muziği geri alamazsınız", Toast.LENGTH_SHORT).show(); } } } |
res/layout/activity_main.xml yolundaki, activity_main.xml dosyasındaki kodlarımız:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
<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" > <ImageButton android:id="@+id/imageButton3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_marginBottom="14dp" android:onClick="forward" android:src="@android:drawable/ic_media_ff" /> <ImageButton android:id="@+id/imageButton4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignTop="@+id/imageButton2" android:layout_marginLeft="22dp" android:layout_toRightOf="@+id/imageButton2" android:onClick="rewind" android:src="@android:drawable/ic_media_rew" /> <ImageButton android:id="@+id/imageButton2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/imageButton1" android:layout_marginLeft="14dp" android:layout_toRightOf="@+id/imageButton1" android:onClick="pause" android:src="@android:drawable/ic_media_pause" /> <ImageButton android:id="@+id/imageButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/imageButton3" android:layout_marginLeft="24dp" android:layout_toRightOf="@+id/imageButton3" android:onClick="play" android:src="@android:drawable/ic_media_play" /> <SeekBar android:id="@+id/seekBar1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@+id/imageButton3" android:layout_toLeftOf="@+id/textView2" android:layout_toRightOf="@+id/textView1" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/imageButton3" android:layout_alignTop="@+id/seekBar1" android:text="@string/inital_Time" android:textAppearance="?android:attr/textAppearanceSmall" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/imageButton4" android:layout_alignTop="@+id/seekBar1" android:text="@string/inital_Time" android:textAppearance="?android:attr/textAppearanceSmall" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/imageButton3" android:text="Çalan şarkı:" android:textAppearance="?android:attr/textAppearanceMedium" /> <ImageView android:id="@+id/imageView1" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/beyonce_ring480" android:layout_above="@+id/seekBar1" android:layout_centerHorizontal="true" /> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView3" android:layout_alignBottom="@+id/textView3" android:layout_toRightOf="@+id/imageButton1" android:text="TextView" /> </RelativeLayout> |
res/values/string.xml yolundaki xml dosyasındaki kodlarımız:
1 2 3 4 5 6 7 8 |
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">SeekBar-ile-Media-Player-Yapimi</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> <string name="inital_Time">0 min, 0 sec</string> </resources> |
Çok işime yaradı. Çok çok teşekkür ederim bu yazı için…
sade anlaşılır ve çalışıyor, teşekkürler