رفتن به مطلب
  • 0

مقداردهی سیک بار از داخل service


batman123

سوال

سلام.

یه برنامه دارم که یک لیوت و یک اکتیویتی داره.

داخل لیوت یک سیک بار دارم.

میخوام مقدار سیک بار، با آهنگی که پخش میکنم هماهنگ باشه تا به محض تموم شدن آهنگ، سیک بار هم به آخر برسه.

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

درحال حاظر کدهام اینه

کدهای اکتیویتی

Private sb As SeekBar
Private t As Timer


t.Initialize("t",1000)
t.enabled=true

Private Sub t_Tick
	sb.Value = service_soti.pos
End Sub

اینم دستورات سرویسم

Sub Process_Globals
	Private mp As MediaPlayer
	Public time As Timer
	Public pos As Int
End Sub

mp.Initialize2("mp")
	time.Initialize("time",1000)
mp.Load(File.DirAssets,"fani.mp3")
		mp.Play
		time.Enabled=True

Public Sub time_Tick
	pos=mp.Position/1000
End Sub

الان مشکل اینه که سیک بار کار میکنه اما مقدارش با مقدار آهنگ برابر نیست. با این که من pos رو برابر با position/1000 مدیاپلیرم گذاشتم.

سیک بار خودش هر یک ثانیه یک بار اضافه میشه الکی

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

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

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

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

در در 14 آذر 1399 در 18:47، batman1 گفته است :

من به سایت مرجع هم مراجعه کردم

منتها خود erel گفته که باید از callSub یا CallSubdeley استفاده بشه

اما من اصلا نمیدونم اینا چی هستن و چه کاری انجام میدم

ممنون میشم کمکم کنید

بله درسته باید از متد کال ساب استفاده کنید

برای اینکار یه ساب درست میکنید درون اکتیویتی که سیک بار موردنظر هست بصورت زیر

Sub SetValue(Value as int)	
	SeekBar1.Value = Value
End sub

ّبرای اینکه یک ساب رو از جای دیگه صدا بزنیم باید از دستور کال ساب استفاده کنیم.

این رو توضیح بدم دو نوع کال ساب داریم

یکی CallSub معمولی که اگر اشتباه نکنم برای صدا زدن ساب ها بین دو اکتیویتی هست یکی هم CallSubDelayed که برای صدا زدن ساب ها بین اکتیوتی و سرویس یا کلاس ،

هرکدوم از اینها یک شماره 2 و 3 دارن که بدون شماره ها فقط ساب رو صدا میزنن و شماره داران میتونین باهاش مقدار دهی هم بکنید ..

 

خب برای اینکه ساب مورد نظر رو از سرویس صدا بزنید برای اینکار باید از متد CallSubDelayed و چون یک مقدار هم میخواهیم بفرستیم از CallSubDelayed2 استفاده میکنیم

بصورت زیر

CallSubDelayed2(Main,"SetValue",15)

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

 

 

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

در 17 ساعت قبل، Mr.Kafiri گفته است :

بله درسته باید از متد کال ساب استفاده کنید

برای اینکار یه ساب درست میکنید درون اکتیویتی که سیک بار موردنظر هست بصورت زیر


Sub SetValue(Value as int)	
	SeekBar1.Value = Value
End sub

ّبرای اینکه یک ساب رو از جای دیگه صدا بزنیم باید از دستور کال ساب استفاده کنیم.

این رو توضیح بدم دو نوع کال ساب داریم

یکی CallSub معمولی که اگر اشتباه نکنم برای صدا زدن ساب ها بین دو اکتیویتی هست یکی هم CallSubDelayed که برای صدا زدن ساب ها بین اکتیوتی و سرویس یا کلاس ،

هرکدوم از اینها یک شماره 2 و 3 دارن که بدون شماره ها فقط ساب رو صدا میزنن و شماره داران میتونین باهاش مقدار دهی هم بکنید ..

 

خب برای اینکه ساب مورد نظر رو از سرویس صدا بزنید برای اینکار باید از متد CallSubDelayed و چون یک مقدار هم میخواهیم بفرستیم از CallSubDelayed2 استفاده میکنیم

بصورت زیر


CallSubDelayed2(Main,"SetValue",15)

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

 

 

تشکر از پاسختون.

اما من میخوام توی اکتیویتی که سیک بار وجود داره، مقداری رو که داخل سرویسم هست، رو بگیرم برای سیک بار

شما برعکسش رو گفتی.

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

در 22 دقیقه قبل، batman123 گفته است :

تشکر از پاسختون.

اما من میخوام توی اکتیویتی که سیک بار وجود داره، مقداری رو که داخل سرویسم هست، رو بگیرم برای سیک بار

شما برعکسش رو گفتی.

فرقی نداره همه اینکار ها رو برعکس انجام بدید. یه ساب درون سرویس ایجاد کنید و از اکتیویتی صداش بزنید

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

اگه برنامتون مدیا پلیره

https://www.b4x.com/android/forum/threads/mediaplayer-tutorial.6591/

آموزش ساختش هست

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

من به سایت مرجع هم مراجعه کردم

منتها خود erel گفته که باید از callSub یا CallSubdeley استفاده بشه

اما من اصلا نمیدونم اینا چی هستن و چه کاری انجام میدم

ممنون میشم کمکم کنید

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

بایگانی شده

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

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

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