انجمن سایت کلیدستان



حرکت متن با صوت (برنامه نویسی اندروید)زمان کنونی: ۱۳۹۵/۰۹/۱۹، ۱۲:۱۵ ب.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: af94
آخرین ارسال: af94
پاسخ 5
بازدید 878

رتبه موضوع:
  • 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
حرکت متن با صوت (برنامه نویسی اندروید)

حرکت متن با صوت (برنامه نویسی اندروید)

#1
سلام
من میخوام یه فایل صوتی داشته باشم و یه متن.
بعدش متن و صوت با هم هماهنگ باشن.
مثل نرم افزار زیارت ناحیه مقدسه
https://cafebazaar.ir/app/com.mobinmobil...ahie/?l=fa

مثلا وقتی که صوت داره اجرا میشه اون جایی از متن رو که داره میخونه رو مشخص کنه.

چطوری باید این کار رو انجام بدم؟
پاسخ

حرکت متن با صوت (برنامه نویسی اندروید)

#2
سلام
برای این کار دو راه حل دارید

اول اینکه بیاید برای هر فایل صوتی یه سری metatag یا داده اضافی درباره اون فایل صوتی قرار بدید و بعد از اجرای اون فایل صوتی بیاید اون داده های اضافی رو بخونید.
حالا که داده های اضافی رو خوندید متوجه میشید که باید کدوم فایل متنی رو بیارید و باز کنید و داخلش رو بخونید
برای همزمانی صوت و متن باید به صورت هر 1 ثانیه یک بار فایل متنی رو باز و با زمان فایل صوتی چک کنید که در صورت وجود متن در ان زمان بخصوص متن نمایش داده بشه و در غیر این صورت نمایش داده نشه
حالا فایل متن شما باید دقیقا مثل فایل زیرنویس فیلمها یا lyric اهنگها باشه تا بتونید به صورت گفته شده بخونیدش

راه دوم استفاده از کتابخانه 3d party هستش که این کار رو براتون انجام میده
بشرطی که فایل lyric شما با اهنگ هاتون هماهنگ باشه
http://javamusictag.sourceforge.net/

راه سومی هم هست که فعلا مطلب زیادی در موردش پیدا نمیشه و اونم تشخیص و شناسایی Voice هستش که خیلی سخت و پیچیدست و ظاهرا هنوز برای اندروید کتابخانه خاصی براش نیست که بتونه بصورت پایدار و درست این کارو براتون انجام بده
پاسخ
 سپاس شده توسط admin ، af94 ، msh ، sohrabjam

حرکت متن با صوت (برنامه نویسی اندروید)

#3
حالا چطوری باید این کارها رو انجام بدم؟

مثلا کدهاش چطوری میشه؟ و در کل به این کار چی میگن؟
پاسخ

حرکت متن با صوت (برنامه نویسی اندروید)

#4
با استفاده از کد زیر میتونید زمان کامل و زمان سپرده شده از فایصوتی رو بدست بیارید

کد:
protected void setProgressText() {

   final int HOUR = 60*60*1000;
   final int MINUTE = 60*1000;
   final int SECOND = 1000;

   int durationInMillis = mediaPlayer.getDuration();
   int curVolume = mediaPlayer.getCurrentPosition();

   int durationHour = durationInMillis/HOUR;
   int durationMint = (durationInMillis%HOUR)/MINUTE;
   int durationSec = (durationInMillis%MINUTE)/SECOND;

   int currentHour = curVolume/HOUR;
   int currentMint = (curVolume%HOUR)/MINUTE;
   int currentSec = (curVolume%MINUTE)/SECOND;

   if(durationHour>0){
       System.out.println(" 1 = "+String.format("%02d:%02d:%02d/%02d:%02d:%02d",
               currentHour,currentMint,currentSec, durationHour,durationMint,durationSec));            
   }else{
       System.out.println(" 1 = "+String.format("%02d:%02d/%02d:%02d",
               currentMint,currentSec, durationMint,durationSec));
   }
}

با استفاده از این کد میتونید محتوای یک فایل متنی رو بخونید
کد:
File file = new File(your file);

try {
   FileInputStream in = new FileInputStream(file);
               int len = 0;
               byte[] data1 = new byte[1024];
       while ( -1 != (len = in.read(data1)) ){
            if(new String(data1, 0, len).contains(Your String))
                //Jim, we got him...
       }


} catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
}
و با استفاده از این متد که در JAVA8 وجود داره میتونید به یک خط خاصی از فایل متنی دسترسی داشته باشید
کد:
Java 8 solution:

For small files:

String line32 = Files.readAllLines(Paths.get("file.txt")).get(32)
For large files:

try (Stream<String> lines = Files.lines(Paths.get("file.txt"))) {
   line32 = lines.skip(31).findFirst().get();
}

حالا با استفاده از کدهای بالا میتونید یک فایل صوتی رو پخش کنید و همزان با پخش فایل صوتی، فایل زیرنویس یا متن اون رو هم باز کرده و خط مورد نظر رو بخونید و نمایش بدید
پاسخ
 سپاس شده توسط admin ، sohrabjam ، af94

حرکت متن با صوت (برنامه نویسی اندروید)

#5
ممنون
متن هایی که دارم رو توی TextView باید نمایش بدم؟
نمیدونم باید برای این کار چه کارهایی انجام بدم.
مرحله به مرحله اش رو نمیدونم ممنون میشم راهنمایی کنید.
پاسخ


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)