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

انتخاب صدا به عنوان صدای زنگ گوشی


MR.B4A

سوال

سلام.

چه طوری میشه یه صدا رو به عنوان زنگ گوشی انتخاب کرد؟

یا زنگ آلارم یا زنگ نوتیف

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

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

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

من از این راه میرم تا زنگ گوشی رو ست کنم:

Sub Globals
	Dim u As String
	Dim i As Int
	Private ring As RingtoneManager
End Sub

Private Sub btn_set_ring_Click
	
	i = Msgbox2("آیا می خواهید این صدا رو به عنوان آهنگ گوشی خود انتخاب کنید؟","","بله","خیر","",Null  )
	
	If i = DialogResponse.POSITIVE Then
		ToastMessageShow("آهنگ انتخاب شد",True)
		u = ring.AddToMediaStore(File.DirRootExternal,"ringtone.mp3","ring",False,False,True,True)
		ring.SetDefault(ring.TYPE_RINGTONE,u)
	End If
End Sub

منتهای مراتب این خطارو میده:

do.php?imgf=org-808f12bfdfd61.png

ممنون میشم کسی راهنمایی کنه که مشکل از کجاست.

آهنگ مورد نظر هم توی حافظه کپی شده، اما نمیدونم چرا ارور uri میده!!

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

درود

این متد دیگه کارن میکنه به توی توضیحاتش هم نوشته

باید به شکل زیر تغییر بدید. و اینکه حتما باید uri رو بااستفاده از fileprovider یا scopestorage در بیارید نه از file. با inlinejava میتونید به راحتی استفاده کنید
 

void changeRingtone(String title,File file){
        try {
            ContentValues values = new ContentValues();
            values.put(MediaStore.MediaColumns.TITLE, title);
            values.put(MediaStore.MediaColumns.SIZE, 215454);
            values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
            values.put(MediaStore.Audio.Media.ARTIST, "Unknown");
            values.put(MediaStore.Audio.Media.DURATION, 230);
            values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
            values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
            values.put(MediaStore.Audio.Media.IS_ALARM, false);
            values.put(MediaStore.Audio.Media.IS_MUSIC, false);

            Uri uri = MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath());
            Uri newUri = getContentResolver().insert(uri, values);
            RingtoneManager.setActualDefaultRingtoneUri(
                    this,
                    RingtoneManager.TYPE_RINGTONE,
                    newUri
            );
        } catch (Exception e) {
            Toast.makeText(this, "Something Went Wrong, approach Developer", Toast.LENGTH_LONG).show();
            e.printStackTrace();
        }
    }

 

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

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

درود

این متد دیگه کارن میکنه به توی توضیحاتش هم نوشته

باید به شکل زیر تغییر بدید. و اینکه حتما باید uri رو بااستفاده از fileprovider یا scopestorage در بیارید نه از file. با inlinejava میتونید به راحتی استفاده کنید
 

void changeRingtone(String title,File file){
        try {
            ContentValues values = new ContentValues();
            values.put(MediaStore.MediaColumns.TITLE, title);
            values.put(MediaStore.MediaColumns.SIZE, 215454);
            values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
            values.put(MediaStore.Audio.Media.ARTIST, "Unknown");
            values.put(MediaStore.Audio.Media.DURATION, 230);
            values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
            values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
            values.put(MediaStore.Audio.Media.IS_ALARM, false);
            values.put(MediaStore.Audio.Media.IS_MUSIC, false);

            Uri uri = MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath());
            Uri newUri = getContentResolver().insert(uri, values);
            RingtoneManager.setActualDefaultRingtoneUri(
                    this,
                    RingtoneManager.TYPE_RINGTONE,
                    newUri
            );
        } catch (Exception e) {
            Toast.makeText(this, "Something Went Wrong, approach Developer", Toast.LENGTH_LONG).show();
            e.printStackTrace();
        }
    }

 

سلام استاد

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

چه طوری توی b4a ازش استفاده کنیم؟

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

۵ ساعت قبل، MR.B۴A گفته است:

استاد ممنون میشم به این سوال توجه کنید

من الان متاسفانه دسترسی ندارم به سیستم فردا تونستم کد b4a رو براتون میزارم. اما کار سختی نیست تو انجمن inlinejava رو سرچ کنید زیاد مطلب هست در مورد استفاده از کدهای جاوا

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

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

من الان متاسفانه دسترسی ندارم به سیستم فردا تونستم کد b4a رو براتون میزارم. اما کار سختی نیست تو انجمن inlinejava رو سرچ کنید زیاد مطلب هست در مورد استفاده از کدهای جاوا

ممنون میشم استاد عنایت بفرمایید

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

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

ممنون میشم استاد عنایت بفرمایید

درود. با استفاده از این متدها میتونید تنظیم کنید. اول فایل رو کپی کنید با دستور CopyToRingtoneFolder بعد با دستور CanWriteSettings چک کنید اگه مقدار false بود اونو با دستور RequestWriteSettingsPermission بفرستید به تنظیمات اگه نه هم که رینگتون رو با دستور SetAsRingtone ست کنید. دسترسی android.permission.WRITE_SETTINGS رو هم به منیفست اضافه کنید و از کتابخونه persianfileprovider هم باید استفاده کنید. لطفا دیگه خودتون مسیر رو ادامه بدین و جایگزینیهای لازم رو انجام بدین

Sub CanWriteSettings As Boolean
	Dim ctxt As JavaObject
	ctxt.InitializeContext
	Dim settings As JavaObject
	settings.InitializeStatic("android.provider.Settings$System") ' مسیر صحیح
	Try
		Return settings.RunMethod("canWrite", Array(ctxt))
	Catch
		Log("خطا در بررسی مجوز: " & LastException.Message)
		Return False
	End Try
End Sub

Sub RequestWriteSettingsPermission
	Dim intent As JavaObject
	intent.InitializeNewInstance("android.content.Intent", _
                Array("android.settings.action.MANAGE_WRITE_SETTINGS"))
	Dim uri As JavaObject
	uri.InitializeStatic("android.net.Uri")
	intent.RunMethod("setData", Array(uri.RunMethod("parse", _
                Array("package:" & Application.PackageName))))
	StartActivity(intent)
End Sub

Sub CopyToRingtoneFolder
	Dim Source As String = File.DirAssets & "/ring_tone.mp3"
	Dim Dest As String = File.Combine(File.DirRootExternal & "/Ringtones", "ring_tone.mp3")
	If File.Exists(File.DirRootExternal & "/Ringtones", "ring_tone.mp3") = False Then
		File.Copy(File.DirAssets, "ring_tone.mp3", File.DirRootExternal & "/Ringtones", "ring_tone.mp3")
	End If
End Sub

Sub SetAsRingtone
	Dim ringtoneFile As String = File.Combine(File.DirRootExternal & "/Ringtones", "ring_tone.mp3")
	Dim uri As Object =prf.GetUriFromFile(ringtoneFile)
	Dim jo As JavaObject
	jo.InitializeContext.RunMethod("changeRingtone",Array(uri))
End Sub

 

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

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

درود. با استفاده از این متدها میتونید تنظیم کنید. اول فایل رو کپی کنید با دستور CopyToRingtoneFolder بعد با دستور CanWriteSettings چک کنید اگه مقدار false بود اونو با دستور RequestWriteSettingsPermission بفرستید به تنظیمات اگه نه هم که رینگتون رو با دستور SetAsRingtone ست کنید. دسترسی android.permission.WRITE_SETTINGS رو هم به منیفست اضافه کنید و از کتابخونه persianfileprovider هم باید استفاده کنید. لطفا دیگه خودتون مسیر رو ادامه بدین و جایگزینیهای لازم رو انجام بدین

Sub CanWriteSettings As Boolean
	Dim ctxt As JavaObject
	ctxt.InitializeContext
	Dim settings As JavaObject
	settings.InitializeStatic("android.provider.Settings$System") ' مسیر صحیح
	Try
		Return settings.RunMethod("canWrite", Array(ctxt))
	Catch
		Log("خطا در بررسی مجوز: " & LastException.Message)
		Return False
	End Try
End Sub

Sub RequestWriteSettingsPermission
	Dim intent As JavaObject
	intent.InitializeNewInstance("android.content.Intent", _
                Array("android.settings.action.MANAGE_WRITE_SETTINGS"))
	Dim uri As JavaObject
	uri.InitializeStatic("android.net.Uri")
	intent.RunMethod("setData", Array(uri.RunMethod("parse", _
                Array("package:" & Application.PackageName))))
	StartActivity(intent)
End Sub

Sub CopyToRingtoneFolder
	Dim Source As String = File.DirAssets & "/ring_tone.mp3"
	Dim Dest As String = File.Combine(File.DirRootExternal & "/Ringtones", "ring_tone.mp3")
	If File.Exists(File.DirRootExternal & "/Ringtones", "ring_tone.mp3") = False Then
		File.Copy(File.DirAssets, "ring_tone.mp3", File.DirRootExternal & "/Ringtones", "ring_tone.mp3")
	End If
End Sub

Sub SetAsRingtone
	Dim ringtoneFile As String = File.Combine(File.DirRootExternal & "/Ringtones", "ring_tone.mp3")
	Dim uri As Object =prf.GetUriFromFile(ringtoneFile)
	Dim jo As JavaObject
	jo.InitializeContext.RunMethod("changeRingtone",Array(uri))
End Sub

 

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

این رو به اکتیویتی اضافه کنید


#If java
import android.media.RingtoneManager;
import android.net.Uri;

public void changeRingtone(Uri uri){
    try {
        RingtoneManager.setActualDefaultRingtoneUri(
                BA.applicationContext,
                RingtoneManager.TYPE_RINGTONE,
                uri
        );
    } catch (Exception e) {
       BA.Log(e.toString());
    }
}
#End If

 

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

در ۱۴۰۳/۱۱/۱۴ در 07:35، محمدرضا شاهپیری گفته است:

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

این رو به اکتیویتی اضافه کنید


#If java
import android.media.RingtoneManager;
import android.net.Uri;

public void changeRingtone(Uri uri){
    try {
        RingtoneManager.setActualDefaultRingtoneUri(
                BA.applicationContext,
                RingtoneManager.TYPE_RINGTONE,
                uri
        );
    } catch (Exception e) {
       BA.Log(e.toString());
    }
}
#End If

 

استاد دمتون گرم، این خیلی جواب داد.

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

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

بایگانی شده

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

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

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