پخش فایل صوتی با قابلیت SeekBar در اندروید
شنبه 9 آبان 1394در این مقاله قصد داریم در مورد پخش فایل صوتی در اندروید که قابلیت پخش موزیک و توقف موزیک و جلو و عقب بردن موزیک را داشته باشد صحبت نماییم.
ابتدا در لایه ی Layout خود یک فایل xml بسازید و قطعه کد زیر را در آن قرار دهید.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/text_shown"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="120dp"
android:textSize="42sp" />
<SeekBar
android:id="@+id/seek_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
<Button
android:id="@+id/play_button"
android:layout_width="120dp"
android:layout_height="60dp"
android:layout_below="@+id/seek_bar"
android:layout_marginTop="60dp"
android:gravity="center"
android:text="شروع" />
<Button
android:id="@+id/pause_button"
android:layout_width="120dp"
android:layout_height="60dp"
android:layout_alignParentRight="true"
android:layout_below="@+id/seek_bar"
android:layout_marginTop="60dp"
android:text="توقف" />
</RelativeLayout>
از یک textview برای نمایش بخش موزیک و از دو Button برای شروع و توقف موزیک و از یک seekbar برای جلو و عقب بردن موزیک استفاده می نماییم.
حالا در کلاس جاوا باید کد زیر را قرار دهید:
public class MyActivity extends Activity implements OnClickListener {
SeekBar seek_bar;
Button play_button, pause_button;
MediaPlayer mediaPlayer;
TextView text_shown;
Handler seekHandler = new Handler();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getInit();
seekUpdation();
}
public void getInit() {
seek_bar = (SeekBar) findViewById(R.id.seek_bar);
play_button = (Button) findViewById(R.id.play_button);
pause_button = (Button) findViewById(R.id.pause_button);
text_shown = (TextView) findViewById(R.id.text_shown);
play_button.setOnClickListener(this);
pause_button.setOnClickListener(this);
mediaPlayer = MediaPlayer.create(this, R.raw.myaudio);
seek_bar.setMax(mediaPlayer.getDuration());
}
Runnable run = new Runnable() {
@Override
public void run() {
seekUpdation();
}
};
public void seekUpdation() {
seek_bar.setProgress(mediaPlayer.getCurrentPosition());
seekHandler.postDelayed(run, 1000);
seek_bar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seek_bar) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar seek_bar) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seek_bar, int progress, boolean fromUser) {
if(fromUser){
mediaPlayer.seekTo(progress);
seek_bar.setProgress(progress);
}
}
});
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.play_button:
text_shown.setText("شروع");
mediaPlayer.start();
break;
case R.id.pause_button:
mediaPlayer.pause();
text_shown.setText("توقف");
}
}
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(fromUser){
mediaPlayer.seekTo(progress);
seekBar.setProgress(progress);
}
}
@Override
public void onBackPressed() {
mediaPlayer.stop();
finish();
}
}
activity که درست کردیم از Activity ارث بری شده است و روی OnclickListner پیاده سازی می شود.
ابتدا شروع به تعریف ابزارهایی که در لایه ی xml استفاده کردیم می نویسیم، از یک تابع getInit استفاده می کنیم و ابزارها و رویداد ها را برای تمیزی کد داخل تابع قرار می دهیم و بعد تابع را صدا می زنیم.
یک تابع برای Seekbar تعریف می کنیم که این تابع برای جلو و عقب بردن موزیک استفاده می شود ، از دستور switch برای شروع موزیک استفاده می کنیم که اگر دکمه ی شروع خود موزیک پخش شود و textview به متنی که نوشته اید تغییر پیدا کند، و اگر دکمه روی توقف بود موزیک پخش نشود و textview به توقف تبدیل شود.
خط آخر کد onBackPressed() برای زمانی است که اگر کاربر دکمه ی بازگشت را زد اول موزیک متوقف شود بعد از صفحه بیرون رود.
برای پخش موزیک یک پوشه به نام raw درست نمایید و موزیک مورد نظر خود را داخل آن قرار دهید و برای آدرس دهی حتما باید موزیک در پوشه ای به نام raw باشد و گرنه موزیک پخش نخواهد شد.
در پایان به صورت زیر خواهد شد.


به همین صورت شما می توانید یک آلبوم صوتی بسیار زیبا با امکانات seekbar بسازید.
- Android
- 3k بازدید
- 2 تشکر