۱۳۹۵/۱۲/۲۵, ۰۷:۴۱ ق.ظ
سلام دوستان
اگه کسی تجربه ای در این زمینه داره لطفا به اشتراک بگذاره .
من طبق راهنمایی دوستمون یه سری داده اضافی تو بانک اطلاعاتم که Sqlite هستش شامل زمان سپری شده هر بخش از دعا که خونده میشه را ایجاد کردم. بعد کدهای لازم را برای نمایش دعای مورد نظرو اجرای mediaplayer نوشتم. نمایش متن و کل زمان فایل صوتی و زمان سپری شده به راحتی در برنامه نمایش داده میشه . اما برای اینکه زمان سپری شده از پخش فایل صوتی با داده اضافی ایجاد شده در بانک مقایسه بشه تا متن مورد نظر نمایش داده بشه یا Listview به صورت اتوماتیک حرکت بکنه مشکل پیدا کردم. زمان سپری شده فقط یک بار و در زمان کلیک روی کلید play با داده های من مقایسه میشه در صورتیکه من نیاز دارم مرتب زمان سپری شده با اون داده ها مقایسه بشه و در صورت درست بودن شرط کاری ( نمایش متن ) انجام بشه. تو اینترنت هم خیلی جستجو کردم حتی در سایتهای خارجی در حد توان ولی به نتیجه نرسیدم . در مرحله بعد از Runnable UpdateSongTime استفاده کردم که برای نمایش کل زمان و زمان سپری شده استفاده میکردم . ولی به نتیجه نرسیدم. چون متغیر بدست اومده CharSequence هستش و هر کاری کردم که به String و بعدش Integer تبدیلش کنم و اون شرطم را باهاش مقایسه کنم نشد که نشد. در مرحله بعد اومدم از روش CountDownTimer اجرای یه سری کد پس از گذشت زمان مشخص استفاده کردم . که متاسفانه به نتیجه نرسید. در مرحله بعد اومدم از آرایه برای ذخیره زمان سپری شده در هر ثانیه استفاده کردم که اونم جواب نداد. نمونه کدم را براتون میزارم دوستان استاد یه نظری بدن و در صورت امکان یه نمونه کد بزارند تا مشکل حل بشه.
اگه کسی تجربه ای در این زمینه داره لطفا به اشتراک بگذاره .
من طبق راهنمایی دوستمون یه سری داده اضافی تو بانک اطلاعاتم که Sqlite هستش شامل زمان سپری شده هر بخش از دعا که خونده میشه را ایجاد کردم. بعد کدهای لازم را برای نمایش دعای مورد نظرو اجرای mediaplayer نوشتم. نمایش متن و کل زمان فایل صوتی و زمان سپری شده به راحتی در برنامه نمایش داده میشه . اما برای اینکه زمان سپری شده از پخش فایل صوتی با داده اضافی ایجاد شده در بانک مقایسه بشه تا متن مورد نظر نمایش داده بشه یا Listview به صورت اتوماتیک حرکت بکنه مشکل پیدا کردم. زمان سپری شده فقط یک بار و در زمان کلیک روی کلید play با داده های من مقایسه میشه در صورتیکه من نیاز دارم مرتب زمان سپری شده با اون داده ها مقایسه بشه و در صورت درست بودن شرط کاری ( نمایش متن ) انجام بشه. تو اینترنت هم خیلی جستجو کردم حتی در سایتهای خارجی در حد توان ولی به نتیجه نرسیدم . در مرحله بعد از Runnable UpdateSongTime استفاده کردم که برای نمایش کل زمان و زمان سپری شده استفاده میکردم . ولی به نتیجه نرسیدم. چون متغیر بدست اومده CharSequence هستش و هر کاری کردم که به String و بعدش Integer تبدیلش کنم و اون شرطم را باهاش مقایسه کنم نشد که نشد. در مرحله بعد اومدم از روش CountDownTimer اجرای یه سری کد پس از گذشت زمان مشخص استفاده کردم . که متاسفانه به نتیجه نرسید. در مرحله بعد اومدم از آرایه برای ذخیره زمان سپری شده در هر ثانیه استفاده کردم که اونم جواب نداد. نمونه کدم را براتون میزارم دوستان استاد یه نظری بدن و در صورت امکان یه نمونه کد بزارند تا مشکل حل بشه.
کد پیاچپی:
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.play_button:
mediaPlayer.start();
finalTime = mediaPlayer.getDuration();
if (oneTimeOnly == 0) {
seek_bar.setMax((int) finalTime);
oneTimeOnly = 1;
}
tx4.setText(String.format("%02d : %02d",
TimeUnit.MILLISECONDS.toMinutes((long) finalTime),
TimeUnit.MILLISECONDS.toSeconds((long) finalTime) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) finalTime)))
);
seek_bar.setProgress((int) startTime);
myHandler.postDelayed(UpdateSongTime, 100);
db.open();
int s = db.count("tbl1", "time");
mytime = new Integer[s];
for (int i = 0; i < s; i++) {
mytime[i] = (db.Time_display("tbl1", i));
st = String.valueOf(mytime[i]);
st2 = Integer.parseInt(st);
if (startTime == st2 ){
Toast.makeText(getApplicationContext(), (String.valueOf("Yes")), Toast.LENGTH_LONG).show();
}else {
Toast.makeText(getApplicationContext(), (String.valueOf(tt)), Toast.LENGTH_LONG).show();
}
}
db.close();
// new CountDownTimer(2000,1000){
// @Override
// public void onTick(long millisUntilFinished){}
// @Override
//public void onFinish(){
// your code
// }
// }.start();
break;
case R.id.pause_button:
mediaPlayer.pause();
}
}
private Runnable UpdateSongTime = new Runnable() {
public void run() {
startTime = mediaPlayer.getCurrentPosition();
tx1.setText(String.valueOf( ((long) startTime)));
ttt = (tx1.getText().toString());
tt = Integer.parseInt(ttt);
tx3.setText(String.format("%02d : %02d / ",
TimeUnit.MILLISECONDS.toMinutes((long) startTime),
TimeUnit.MILLISECONDS.toSeconds((long) startTime)-
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) startTime)))
);
seek_bar.setProgress((int) startTime);
myHandler.postDelayed(this, 100);
}
};