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

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


MR.B4A

سوال

سلام به همه

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

دوتا از دکمه ها برای عقب و جلو کردن موزیک ( ترک قبلی یا بعدی ) و یکی برای پاز کردن موزیک.

یه سورسی توی سایت مرجع پیدا کردم که این بخشش میاد و تاحدودی چیزی که میخوامو میسازه:

Sub Notification_WithActions
	Dim n As NB6
	n.Initialize("default", Application.LabelName, "DEFAULT").SmallIcon(smiley)
	n.AddButtonAction(smiley, "Action 1", MyReceiver, "action 1")
	Dim cs As CSBuilder
	n.AddButtonAction(Null, cs.Initialize.Color(Colors.Red).Bold.Append("Action 2").PopAll, MyReceiver, "action 2")
	n.DeleteAction(MyReceiver, "delete action")
	n.Build("Actions", "Actions", "tag", Main).Notify(1)
End Sub

البته که یه سرویس هم داره:

Sub Process_Globals
	
End Sub

Private Sub Receiver_Receive (FirstTime As Boolean, StartingIntent As Intent)
	If StartingIntent.IsInitialized Then
		Dim cs As CSBuilder
		cs.Initialize.Bold.Size(20).Append($"Action: ${StartingIntent.Action}"$).PopAll
		Log(cs)
		ToastMessageShow(cs, True)
	End If
End Sub

اما این ناتیف دوتا دکمه داره، اما من میخوام سه تا دکمه داشته باشه و داخل کلاس ماژول نوشته شده که من میخوام اون رو توی صفحه اصلیم بنویسم.

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

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

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

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

شما با دستور n.AddButtonAction میتونید هر تعداد دکمه اضافه کنید. مشکل چیه؟

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

18 ساعت قبل، محمدرضا شاهپیری گفته است:

شما با دستور n.AddButtonAction میتونید هر تعداد دکمه اضافه کنید. مشکل چیه؟

سلام استاد.

بله حرف شما صحیح

چه طوری میشه به رویداد کلیک هر دکمه دسترسی داشت؟!

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

8 ساعت قبل، MR.B4A گفته است:

سلام استاد.

بله حرف شما صحیح

چه طوری میشه به رویداد کلیک هر دکمه دسترسی داشت؟!

یه رسیور میتونی براشون ست کنی و به هر کدوم یه اکشن بدی. تو رویداد دریافت اکشن رو چک کن ببین کدومه و کاری که میخوای رو انجام بده
 

n.AddButtonAction(smiley, "Action 1", MyReceiver, "action 1")


Private Sub Receiver_Receive (FirstTime As Boolean, StartingIntent As Intent)
	If StartingIntent.IsInitialized Then
	dim action as String=StartingIntent.Action
     ......
	End If
End Sub

 

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

14 ساعت قبل، محمدرضا شاهپیری گفته است:

یه رسیور میتونی براشون ست کنی و به هر کدوم یه اکشن بدی. تو رویداد دریافت اکشن رو چک کن ببین کدومه و کاری که میخوای رو انجام بده
 

n.AddButtonAction(smiley, "Action 1", MyReceiver, "action 1")


Private Sub Receiver_Receive (FirstTime As Boolean, StartingIntent As Intent)
	If StartingIntent.IsInitialized Then
	dim action as String=StartingIntent.Action
     ......
	End If
End Sub

 

خب استاد چه طوری براش مشخص کنم که اگه روی فلان دکمه کلیک شد، فلان کارو انجام بده؟!
برنامه اینو چه طوری باید بفهمه؟!

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

در ۱۴۰۳/۱۲/۱۵ در 00:05، MR.B4A گفته است:

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

لطف میکنید

عزیز همه چیش واقعا مشخصه. چیز خاصی نداره

این که کد سرویستونه

#Region  Service Attributes 
	#StartAtBoot: False
	
#End Region

Sub Process_Globals
	
End Sub

Sub Service_Create

End Sub

Sub Service_Start (StartingIntent As Intent)
	Service.StopAutomaticForeground 
	postNotification
End Sub

Sub Service_Destroy

End Sub

Sub postNotification
	Dim n As NB6
	Dim icon As Bitmap=LoadBitmap(File.DirAssets, "job.png")
	n.Initialize("default", Application.LabelName, "DEFAULT").SmallIcon(icon)
	n.AddButtonAction(icon, "play action" , MyReceiver, "actions.play")
	n.Build("Actions", "Actions", "tag", Main).Notify(1)
End Sub

اینم کد رسیور

Sub Process_Globals
	
End Sub


Private Sub Receiver_Receive (FirstTime As Boolean, StartingIntent As Intent)
	If StartingIntent.IsInitialized Then
		Dim action As String=StartingIntent.Action
		If action="actions.play" Then
			'play music
		End If
	End If
End Sub

 

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

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

Dim n As NB6
	n.Initialize("default", Application.LabelName, "DEFAULT").SmallIcon(smiley)
	n.Color(Colors.RGB(153,59,99))
	n.AddButtonAction(LoadBitmap(File.DirAssets,"preview.png"), "", MyReceiver, "action_1")
	n.DeleteAction(MyReceiver, "delete action")
	n.Build("پلیر", "پلیر موزیک", "tag", Me).Notify(1)

حالا میخوام برای دکمم یه آیکون بذارم نه متن

اما با این که متنو خالی گذاشتم و یه تصویرو لود کردم به عنوان آیکون، اما وقتی ناتیف ساخته میشه، هیچ آیکونی رو به من نمایش نمیده!!

مشکل کجاست؟

Untitled.png

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

مشکل تصویر حل شد.

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

این کدامه

Sub Globals
	Private mp As MediaPlayer
	
	Private smiley, previus, pause, Next_1 As Bitmap
	
	Private lst_music As ListView
End Sub

Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("Layout")
	
	smiley = LoadBitmapResize(File.DirAssets, "icon.png", 24dip, 24dip, False)
	previus= LoadBitmapResize(File.DirAssets, "preview.png", 24dip, 24dip, False)
	pause= LoadBitmapResize(File.DirAssets, "pause.png", 24dip, 24dip, False)
	Next_1= LoadBitmapResize(File.DirAssets, "next.png", 24dip, 24dip, False)
	
	lst_music.AddSingleLine("موزیک 1")
	lst_music.AddSingleLine("موزیک 2")
	lst_music.AddSingleLine("موزیک 3")
	lst_music.AddSingleLine("موزیک 4")
	lst_music.AddSingleLine("موزیک 5")
	
	lst_music.SingleLineLayout.Label.TextColor=Colors.Black
	lst_music.SingleLineLayout.Label.Gravity=Gravity.CENTER
	lst_music.SingleLineLayout.Label.TextSize=14
	lst_music.SingleLineLayout.Label.Typeface=Typeface.DEFAULT
	
	If mp.IsInitialized=False Then
		mp.Initialize2("mp")
	End If
	
	Notification_WithActions
End Sub

Sub Notification_WithActions
	
	Dim n As NB6
	n.Initialize("default", Application.LabelName, "DEFAULT").SmallIcon(smiley)
	n.AddButtonAction(previus, "Action 1", MyReceiver, "pre")
	n.AddButtonAction(pause, "Action 2", MyReceiver, "pause")
	n.AddButtonAction(Next_1, "Action 3", MyReceiver, "next")
	n.Color(Colors.RGB(153,59,99))
	n.MediaStyle
	n.Build("مدیاپلیر", "پلیر", "tag", Me).Notify(1)
End Sub

Private Sub lst_music_ItemClick (Position As Int, Value As Object)
	mp.Stop
	mp.Load(File.DirAssets,Position&".mp3")
	mp.Play
End Sub

اینم ریسیور ماژولمه

Private Sub Receiver_Receive (FirstTime As Boolean, StartingIntent As Intent)
	If StartingIntent.IsInitialized Then
		Dim action As String=StartingIntent.Action
		
		If action="pre" Then
			
		Else If action="pause" Then
			
		Else If action="next" Then
			
		End If
	End If
End Sub

حالا چه طوری توی اکتیویتی اصلیم صدارو پخش کنم و با استفاده از اون سه تا دکمه کنترلش کنم؟!

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

در ۱۴۰۳/۱۲/۳۰ در 17:48، MR.B4A گفته است:

مشکل تصویر حل شد.

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

این کدامه

Sub Globals
	Private mp As MediaPlayer
	
	Private smiley, previus, pause, Next_1 As Bitmap
	
	Private lst_music As ListView
End Sub

Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("Layout")
	
	smiley = LoadBitmapResize(File.DirAssets, "icon.png", 24dip, 24dip, False)
	previus= LoadBitmapResize(File.DirAssets, "preview.png", 24dip, 24dip, False)
	pause= LoadBitmapResize(File.DirAssets, "pause.png", 24dip, 24dip, False)
	Next_1= LoadBitmapResize(File.DirAssets, "next.png", 24dip, 24dip, False)
	
	lst_music.AddSingleLine("موزیک 1")
	lst_music.AddSingleLine("موزیک 2")
	lst_music.AddSingleLine("موزیک 3")
	lst_music.AddSingleLine("موزیک 4")
	lst_music.AddSingleLine("موزیک 5")
	
	lst_music.SingleLineLayout.Label.TextColor=Colors.Black
	lst_music.SingleLineLayout.Label.Gravity=Gravity.CENTER
	lst_music.SingleLineLayout.Label.TextSize=14
	lst_music.SingleLineLayout.Label.Typeface=Typeface.DEFAULT
	
	If mp.IsInitialized=False Then
		mp.Initialize2("mp")
	End If
	
	Notification_WithActions
End Sub

Sub Notification_WithActions
	
	Dim n As NB6
	n.Initialize("default", Application.LabelName, "DEFAULT").SmallIcon(smiley)
	n.AddButtonAction(previus, "Action 1", MyReceiver, "pre")
	n.AddButtonAction(pause, "Action 2", MyReceiver, "pause")
	n.AddButtonAction(Next_1, "Action 3", MyReceiver, "next")
	n.Color(Colors.RGB(153,59,99))
	n.MediaStyle
	n.Build("مدیاپلیر", "پلیر", "tag", Me).Notify(1)
End Sub

Private Sub lst_music_ItemClick (Position As Int, Value As Object)
	mp.Stop
	mp.Load(File.DirAssets,Position&".mp3")
	mp.Play
End Sub

اینم ریسیور ماژولمه

Private Sub Receiver_Receive (FirstTime As Boolean, StartingIntent As Intent)
	If StartingIntent.IsInitialized Then
		Dim action As String=StartingIntent.Action
		
		If action="pre" Then
			
		Else If action="pause" Then
			
		Else If action="next" Then
			
		End If
	End If
End Sub

حالا چه طوری توی اکتیویتی اصلیم صدارو پخش کنم و با استفاده از اون سه تا دکمه کنترلش کنم؟!

درود

پخش موسیقی نباید توی اکتیویتی باشه حتما از سرویس اونو اجرا کنید که با بسته شدن اکتیویتی آهنگ قطع نشه

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

بایگانی شده

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

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

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