بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مدیاپلیر در اندروید استودیو(جابجا کردن فایل صوتی با جابجا کردن seekbar به صورت دستی)
سلام
راستش من میخام که وقتی کاربر با دست ، seekbar رو تغییر داد، فایل صوتی هم که داره پخش میشه، متناسب با اون تغییر کنه.
نه اینکه بخایم با دکمه ، ذره ذره جلو یا عقب ببریمش.
برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال
Amir
9 سال پیش
+2
0
private MediaPlayer player;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SeekBar seek = (SeekBar) findViewById(R.id.seek);
try {
player = new MediaPlayer();
player.setDataSource("مسیر فایل");
player.prepare();
player.start();
}
catch (IllegalArgumentException e) {
e.printStackTrace();
}
catch (IllegalStateException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
seek.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
int duration = player.getDuration();
int time = progress * duration / 100;
player.seekTo(time);
}
});
}
پاسخ به سوال
شهریاری 2
9 سال پیش
0
0
این کد شما جواب نمیده دوست عزیز
برای اینکه وقتی دکمه play زده میشه، باید seekbar همراه با فایل صوتی ، شروع به حرکت کنه.
برای این هدف نیاز هست که کد زیر رو بنویسیم:
private Runnable UpdateSongTime = new Runnable() {
public void run() {
startTime = mediaPlayer.getCurrentPosition();
tx1.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)))
);
seekbar.setProgress((int) startTime);
myHandler.postDelayed(this, 100);
}
};
و کد دکمه اجرا:
buttonPlay.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Playing sound", Toast.LENGTH_SHORT).show();
mediaPlayer.start();
finalTime = mediaPlayer.getDuration();
startTime = mediaPlayer.getCurrentPosition();
if(oneTimeOnly == 0) {
seekbar.setMax((int) finalTime);
oneTimeOnly = 1;
}
seekbar.setProgress((int) startTime);
myHandler.postDelayed(UpdateSongTime, 100);
buttonPause.setEnabled(true);
buttonPlay.setEnabled(false);
}
});
حال اگه بخایم رویدادهایی که شما گفتید رو بنویسم، اصلا پلیر ، صداش پخش نمیشه.
نمیدونم چکار کنم.
پاسخ به سوال
شهریاری 2
9 سال پیش
0
0
کد آخرم با اصلاح کد شما این شد:
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(fromUser) {
mediaPlayer.seekTo(progress);
myHandler.postDelayed(UpdateSongTime, 100);
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .