رفتن به مطلب
بخش Unity به انجمن اضافه شد
  • 0

چرا گاهی صدا play نمیشه ؟


fun_code

سوال

سلام

بنده متغیری از نوع MediaPlayer دارم و یک فایل صدا 1 ثانیه ای رو اجرا میکنه...

در برنامه این صدا زیاد اجرا میشه اما در فواصل زمانی بیش از 2 الی 3 ثانیه...

گاهی صدا پلی نمیشه ! دلیل چیه ؟

در برنامه های قبلیم هم این مشکل رو با متغیر MediaPlayer داشتم.

ممنون میشم راهنماییم کنید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

7 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

سلام. قبل از هر play از load استفاده کنید ببینید درست نمیشه.

لود دوباره فایل زمان زیادی نمیبره و فایل باز هم بلافاصله پخش میشه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام. لطفا کد هاتون رو هم قرار بدید. من با MediaPlayer هم زیاد کار کردم. چنین مشکلی هیچوقت ندیدم.

MediaPlayer رو داخل سرویس استفاده کردید؟

روی دستگاه واقعی هم تست کردید. اونجا هم مشکل داره؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱ ساعت قبل، rasool.g گفته است :

سلام. لطفا کد هاتون رو هم قرار بدید. من با MediaPlayer هم زیاد کار کردم. چنین مشکلی هیچوقت ندیدم.

MediaPlayer رو داخل سرویس استفاده کردید؟

روی دستگاه واقعی هم تست کردید. اونجا هم مشکل داره؟

سلام

خیر ، در سرویس استفاده نکردم.

در دستگاه واقعی هم تست شده... در واقع حدود چند ماه است که برنامه منتشر شده...

کد خاصی نیست.

در بخش Globals متغیر رو تعریف کردم.

پس از ورود به اکتیویتی مورد نظر یک تایمر پس از 2 ثانیه اجرا میشه و در اون متغیر مدیاپلیر رو Initialize و سپس فایل رو Load کردم.

در زمان های مورد نظرم صدا رو Play میکنم.

دیدم گاها اجرا نمیشه اومدم پیش از Play کردن Position رو برابر با صفر قرار دادم اما کماکان این مشکل مشاهده میشه...

کدها طولانیه... بیش از 3-4 هزار خط کد هست.

ممکنه چون همزمان با Play شدن کدهای دیگه هم در حال اجرا است و یک شی هم در حال جابجا شدن و انیمیشن شدن هست این مشکل رخ میده ؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام. اگر نیاز به تکرار صوت دارین میتونین از قابلیت loop استفاده کنین :

	mp3.Initialize2("mp3")
	mp3.Load(File.DirAssets,"0.mp3")
	mp3.Play
	mp3.Looping = True

 

بدون نیاز به  تایمر صوت بصورت ممتد و پشت سر هم پخش میشه. 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

فکر میکنم گاهی هنوز صوت آماده پخش نمیشه به همین خاطر لود نمیشه. حالا در هر صورت روش زیر رو تست کنید شاید به نتیجه رسیدید.

بهتره از کتابخونه MediaPlayerStream استفاده کنید.

کتابخونه Audio رو فعال کنید و بعد یک متغییر از نوع MediaPlayerStream تعریف کنید.

حالا تو اکتیویتی کرییت اون رو انیشیالایز و لود کنید.

سپس از ساب این کتابخونه با اسم StreamReady استفاده کنید.( وقتی صدا آماده پخش شد این ساب اجرا میشه) و تو این ساب صدا رو play کنید.


Sub Globals
	'These global variables will be redeclared each time the activity is created.
	'These variables can only be accessed from this module.
	Dim Media As MediaPlayerStream

End Sub

Sub Activity_Create(FirstTime As Boolean)
	Media.Initialize("Media")
	Media.Load("آدرس صوت")
	Me
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub
Sub Media_StreamReady
	Media.Play
	
	'یا از این جا تایمر رو فعال کنید و تو ساب تیک تایمر، صوت رو اجرا کنید
End Sub

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1397/05/01, 16:37:27، vistamobile گفته است :

سلام. اگر نیاز به تکرار صوت دارین میتونین از قابلیت loop استفاده کنین :


	mp3.Initialize2("mp3")
	mp3.Load(File.DirAssets,"0.mp3")
	mp3.Play
	mp3.Looping = True

 

بدون نیاز به  تایمر صوت بصورت ممتد و پشت سر هم پخش میشه. 

سلام

ممنونم

خیر نیاز به تکرار نیست.

کد بالا در حال اجرا است اما مشکلی که عرض کردم گاها مشاهده می شود!

در در 1397/05/01, 19:38:31، Amir - B گفته است :

سلام

فکر میکنم گاهی هنوز صوت آماده پخش نمیشه به همین خاطر لود نمیشه. حالا در هر صورت روش زیر رو تست کنید شاید به نتیجه رسیدید.

بهتره از کتابخونه MediaPlayerStream استفاده کنید.

کتابخونه Audio رو فعال کنید و بعد یک متغییر از نوع MediaPlayerStream تعریف کنید.

حالا تو اکتیویتی کرییت اون رو انیشیالایز و لود کنید.

سپس از ساب این کتابخونه با اسم StreamReady استفاده کنید.( وقتی صدا آماده پخش شد این ساب اجرا میشه) و تو این ساب صدا رو play کنید.



Sub Globals
	'These global variables will be redeclared each time the activity is created.
	'These variables can only be accessed from this module.
	Dim Media As MediaPlayerStream

End Sub

Sub Activity_Create(FirstTime As Boolean)
	Media.Initialize("Media")
	Media.Load("آدرس صوت")
	Me
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub
Sub Media_StreamReady
	Media.Play
	
	'یا از این جا تایمر رو فعال کنید و تو ساب تیک تایمر، صوت رو اجرا کنید
End Sub

 

سلام

فایل در ابتدا بارگزاری شده و پس از چندین بار اجرا گاهی اجرا نمیشه !

اما از اون کتابخانه استفاده میکنم و شاید بهتر بود و مشکل برطرف شد.

متشکرم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1397/05/02, 00:18:55، rasool.g گفته است :

سلام. قبل از هر play از load استفاده کنید ببینید درست نمیشه.

لود دوباره فایل زمان زیادی نمیبره و فایل باز هم بلافاصله پخش میشه

سلام

ممنونم

ممکنه درست بشه اما منابع دستگاه رو الکی درگیر میکنه و ممکنه رم رو الکی اشغال کنه...

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...