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


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

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

#1
سلام
من یک درس انگلیسی دارم که می خوام یک صوت روی آن بذارم به این صورت هست که اول باید نام درس بعد دو تا سوال و بعدم پاراگراف 1و2و...متن باید با آن هماهنگ باشه
ایده من:
متن از فایل تکست (Text) بخواند و صوت پخش شود متن تکسم تغییر کند بعد از مدت زمانی لازم به ذکر هست تمام پاراگراف در یک فایل هست می خوام از روشی که گفتید از فایل متنی بخواند و دو خط اول بخواند بعد دو خط دوم بخواند 
با توجه به این مبحث : معرفی روش های ساخت برنامه اندروید به صورت ((محتوا محور))، (جداگانه طراحی کردن محتوای اطلاعاتی برنامه اندروید و قالب آن  (http://www.kelidestan.com/keys/keys.php?key=2253)
و بررسی معایب و مزیت های آنها )می توانید کدش بذارید 
همچنین بعدا می خوام روی متن درس سرچ بذارم می توانم روی تکس سرچ بذارم
ممنون
پاسخ

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

#2
از کلیه اندروید نویسان تقاضای کمک دارم هر کسی ایده ای داره بده
 
پاسخ

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

#3
سلام.
بنده درگیر کدنویسی نمی شم، اما ایده ای دارم که آن را بیان می کنم.
من بر روی هماهنگ کردن نمایش متن با فایل صوتی در حال پخش، فکر کردم. به نظر من، مهمترین بخش برنامه شما، چگونگی ایجاد همین هماهنگی است. 
من ایده ای که بهش رسیدم رو میگم، شاید دیگران ایده های بهتری داشته باشند.
شما ابتدا به سراغ فایل صوتی بروید. مثلا فرض کنید که متن، به صورت زیر باشد :

کد:
In mathematics, Abel's test (also known as Abel's criterion) is a method of testing for the convergence of an infinite series.

متن را ابتدا به صورت یک رشته (string) داریم. شما باید ببینید که در هر مرحله، چه کلمه ای باید به متنی که نمایش داده شده، اضافه شود. مثلا در متن فوق، ابتدا کلمات In mathematics نمایش داده می شود، بعد Abel's ، بعد test و همین طور تا آخر. شما هر کدام از این بخش ها را در عنصرهای یک آرایه رشته ای (string array) ذخیره کنید. یعنی عنصر اول آرایه، برابر  In mathematics ، عنصر دوم برابر  Abel's و تا آخر. فقط دقت کنید که مشخصه عنصرهای آرایه رشته ای این است که بینشان، علامت فاصله (space) وجود دارد. پس نمایش متن به این صورت خواهد بود که اجزای متن را در یک آرایه رشته ای ( string array ) داریم، اویلن عنصر خوانده می شود، آن را در یک رشته (string) ذخیره می کنیم (مثلا رشته با نام string_display) و رشته  string_display  در TextView نمایش داده می شود، بعد از مدتی، دومین عنصر را از آرایه رشته ای فراخوانی می کنیم و به قبل آن یک علامت فاصله (space) اضافه نموده و نتیجه را به انتهای  string_display متصل می کنیم و سپس رشته  string_display را در  TextView نمایش می دهیم و همین طور ادامه می دهیم تا کل متن نمایش داده شود.
روند فوق، چگونگی نمایش مرحله به مرحله متن در  TextView را بیان می کند، اما مسئله مهم این است که زمان مراحل مختلف کاملتر شدن رشته  string_display و نمایش آن در  TextView را چگونه تعیین کنیم. 
شما باید فایل صوتی را پخش کنید و زمان های شروع هر بخش (از بخش هایی که جداگانه در نظر گرفته بودیم) را به صورت عدد بر حسب ثانیه، به دست آورید (یعنی آهنگ را خودتان گوش بدهید و زمان ها را یادداشت کنید) و آنها را در یک آرایه ذخیره کنید. بنابراین متناظر با آن آرایه رشته ای که شامل بخش های مختلف متن بود، یک آرایه داریم که شامل اعداد مربوط به زمان شروع پخش هر کدام از آن بخش های متن می باشد. 
اکنون با توجه به اینکه کاربر، گزینه هایی مثل play ، pause و stop را دارد، باید کدها را به گونه ای بنویسید که در یک متغیر، عدد متناظر با میزان زمان گذشته از پخش آهنگ، ذخیره شود (مثلا در متغیر با نام time)(زمان time در ابتدا برابر صفر خواهد بود). 
خوب فرض می کنیم کاربر بر روی دکمه play اشاره کند، شما شروع به محاسبه زمان می کنید، طبق روندی که گفته شد، به صورت زمانبندی، بخش های مختلف متن، بر اساس عددهای زمان شروعشان، نمایش داده می شوند. اگر کاربر به دکمه pause اشاره کند، میزان زمان گذشته را در متغیر time ذخیره می کنید و اگر دوباره بر روی play اشاره کند، این بار همان روند را از زمان جدید ذخیره شده در متغیر time شروع می کنید. با اشاره بر روی دکمه stop نیز پخش آهنگ متوقف شده و مقدار time برابر صفر قرار داده می شود.

در مورد جستجو در متن و فراخوانی از فایل text ، توصیه می کنم سوالات جداگانه ای در موضوعات جدید مطرح شود تا سایر کاربران پاسخ بدهند. البته با توجه به روندی که گفتم، فراخوانی از فایل text منطقی نیست و اگر من بودم، از تعریف آرایه رشته ای در فایل strings.xml استفاده می کردم (چون باید آرایه رشته ای تعریف کنیم). مثل کد زیر :

کد:
<string-array name="search">
    <item>@string/subject_1</item>
    <item>@string/subject_2</item>
    <item>@string/subject_3</item>
</string-array>

اینگونه، فراخوانی آرایه رشته ای نیز راحت خواهد بود. در این مورد، نگاهی به کلید زیر بیندازید :

http://www.kelidestan.com/keys/keys.php?key=285

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


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