رفتن به مطلب

ساخت Ringtone Manager در بیسیک فور اندروید


MR.B4A

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

1.jpg

با استفاده از سورس basic4android زیر، زنگ تلفن، زنگ هشدار و زنگ نوتیفیکیشن گوشیتان را ست کنید
این سورس به زبان بیسیک فور اندروید نوشته شده است و بسیار بسیار کاربردی است

🌠 عضویت در کانال ما 👈

https://eitaa.com/basic4androidlan

https://t.me/programmingwithb4a

سورس:

👇👇 این کدها را در اکتیویتی که میخواهید سورس را پیاده کنید، کپی کنید:

Sub Globals
	Private MediaPlayer As MediaPlayer
	Private Ring As RingtoneManager
	Private Ring_alarm As RingtoneManager
	Private Ring_notif As RingtoneManager
	Private run As RuntimePermissions
	Private MES As ManageExternalStorage
	Private Phone As Phone
	Private pnl_adv As Panel
End Sub

Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("ab")
	MediaPlayer.Initialize
	
	If File.Exists(File.DirInternal,"db.db")=False Then
		File.Copy(File.DirAssets,"db.db",File.DirInternal,"db.db")
	End If
	
	run.CheckAndRequest(run.PERMISSION_WRITE_EXTERNAL_STORAGE)
	run.CheckAndRequest(run.PERMISSION_READ_EXTERNAL_STORAGE)
	
	MES.Initialize(Me,"MES")
	If Phone.SdkVersion < 30 Then
		run.CheckAndRequest(run.PERMISSION_WRITE_EXTERNAL_STORAGE)
		run.CheckAndRequest(run.PERMISSION_READ_EXTERNAL_STORAGE)
		Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
		If Result Then CheckManageWriteSettings
	Else
		If Not(MES.HasPermission) Then
			MES.GetPermission
		Else
			CheckManageWriteSettings
		End If
	End If
End Sub
Sub Activity_Resume
	If Phone.SdkVersion >30 Then
		If MES.HasPermission Then CheckManageWriteSettings
	End If
End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub CheckManageWriteSettings
	If Not(CanWriteToSystemSettings) Then
		Dim in As Intent
		in.Initialize("android.settings.action.MANAGE_WRITE_SETTINGS","package:"&Application.PackageName)
		StartActivity(in)
		Wait For Activity_Resume
		If Not(CanWriteToSystemSettings) Then
			Log("no permission...")
			Return
		End If
	End If
End Sub
Sub CanWriteToSystemSettings As Boolean
	If Phone.SdkVersion >= 23 Then
		Dim ctxt As JavaObject
		ctxt.InitializeContext
		Dim settings As JavaObject
		settings.InitializeStatic("android.provider.Settings.System")
		Return settings.RunMethod("canWrite", Array(ctxt))
	End If
	Return True
End Sub

Sub ListView1_ItemClick (Position As Int, Value As Object)
	MediaPlayer.Stop
	MediaPlayer.Load(File.DirAssets,Position&".mp3")
	MediaPlayer.Play
End Sub

Private Sub btn_play_notif_Click
	MediaPlayer.Load(File.DirAssets,"notif.mp3")
	MediaPlayer.Play
End Sub

Private Sub btn_set_notif_Click
	If File.Exists(File.DirRootExternal,"notif.mp3") = False Or File.Exists(File.DirRootExternal,"notif.mp3") Then
		File.Copy(File.DirAssets,"notif.mp3",File.DirRootExternal,"notif.mp3")
		Dim r_notif As String
		Try
			r_notif = Ring_notif.AddToMediaStore(File.DirRootExternal,"notif.mp3","notif",False,True,False,True)
			File.WriteString(File.DirInternal,"notif.txt",r_notif)
		Catch
			Dim re_notif As String
			re_notif = File.ReadString(File.DirInternal,"notif.txt")
			Ring_notif.DeleteRingtone(re_notif)
			r_notif = Ring_notif.AddToMediaStore(File.DirRootExternal,"notif.mp3","notif",False,True,False,True)
			File.WriteString(File.DirInternal,"notif.txt",r_notif)
		End Try
		Ring_notif.SetDefault(Ring_notif.TYPE_RINGTONE,r_notif)
		ToastMessageShow(" به عنوان صدای نوتیف تنظیم شد",True)
	End If
End Sub

Private Sub btn_set_warning_Click
	If File.Exists(File.DirRootExternal,"alarm.mp3") = False Or File.Exists(File.DirRootExternal,"alarm.mp3") Then
		File.Copy(File.DirAssets,"alarm.mp3",File.DirRootExternal,"alarm.mp3")
		Dim r_alarm As String
		Try
			r_alarm = Ring_alarm.AddToMediaStore(File.DirRootExternal,"alarm.mp3","alarm",True,False,False,True)
			File.WriteString(File.DirInternal,"alarm.txt",r_alarm)
		Catch
			Dim re_alarm As String
			re_alarm = File.ReadString(File.DirInternal,"alarm.txt")
			Ring_alarm.DeleteRingtone(re_alarm)
			r_alarm = Ring_alarm.AddToMediaStore(File.DirRootExternal,"alarm.mp3","alarm",True,False,False,True)
			File.WriteString(File.DirInternal,"alarm.txt",r_alarm)
		End Try
		Ring_alarm.SetDefault(Ring_alarm.TYPE_RINGTONE,r_alarm)
		ToastMessageShow(" به عنوان صدای آلارم تنظیم شد",True)
	End If
End Sub

Private Sub
btn_play_warning_Click
	MediaPlayer.Load(File.DirAssets,"alarm.mp3")
	MediaPlayer.Play
End Sub

Private Sub btn_play_ringtone_Click
	MediaPlayer.Load(File.DirAssets,"ringtone.mp3")
	MediaPlayer.Play
End Sub

Private Sub btn_set_ringtone_Click
	If File.Exists(File.DirRootExternal,"ringtone.mp3") = False Or File.Exists(File.DirRootExternal,"ringtone.mp3") Then
		File.Copy(File.DirAssets,"ringtone.mp3",File.DirRootExternal,"ringtone.mp3")
		Dim r As String
		Try
			r = Ring.AddToMediaStore(File.DirRootExternal,"ringtone.mp3","rington",False,False,True,True)
			File.WriteString(File.DirInternal,"ringtone.txt",r)
		Catch
			Dim re As String
			re = File.ReadString(File.DirInternal,"ringtone.txt")
			Ring.DeleteRingtone(re)
			r = Ring.AddToMediaStore(File.DirRootExternal,"ringtone.mp3","ringtone",False,False,True,True)
			File.WriteString(File.DirInternal,"ringtone.txt",r)
		End Try
		Ring.SetDefault(Ring.TYPE_RINGTONE,r)
		ToastMessageShow(" به عنوان صدای زنگ تنظیم شد",True)
	End If
End Sub

Private Sub btn_stop_Click
	MediaPlayer.Stop
End Sub
       سپس یک کلاس ماژول استاندارد بسازید و کدهای زیر را در آن کپی کنید:

#Event: StorageAvailable
Sub Class_Globals
	Private ion As Object
	Private mCallback As Object
	Private mEventName As String
	
End Sub

'Initializes the object
Public Sub Initialize (Callback As Object, EventName As String)
	mCallback = Callback
	mEventName = EventName
End Sub

Public Sub HasPermission As Boolean
	Dim has As Boolean	
	Dim jo As JavaObject
	jo.InitializeStatic("android.os.Environment")
	has = jo.RunMethod("isExternalStorageManager", Null)	
	Return has
End Sub

Public Sub GetPermission
	If HasPermission Then
		RaiseEvent
		Return
	End If
	Dim in As Intent
	
	in.Initialize("android.settings.MANAGE_APP_ALL_FILES_ACCESS_PERMISSION", "package:"&Application.PackageName)
	StartActivityForResult(in)
End Sub


Private Sub RaiseEvent
	Log("Calling : " &  mEventName & "_StorageAvailable")
	CallSubDelayed(mCallback, mEventName & "_StorageAvailable")
End Sub


Private Sub ion_Event (MethodName As String, Args() As Object) As Object
	RaiseEvent
	Return Null
End Sub


Private Sub StartActivityForResult(i As Intent)
	Dim jo As JavaObject = GetBA
	ion = jo.CreateEvent("anywheresoftware.b4a.IOnActivityResult", "ion", Null)
	jo.RunMethod("startActivityForResult", Array As Object(ion, i))
End Sub

Private Sub GetBA As Object
	Dim jo As JavaObject = Me
	Return jo.RunMethod("getBA", Null)
End Sub

 و در نهایت به سلیقه خود، لیوت مورد نظرتون رو طراحی کنید.

 

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

بایگانی شده

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

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

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