پخش موسیقی، در برنامه نویسی اندروید

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
فهرست تاپیک:

  1. پخش یک موسیقی به صورت تکرارشونده ، در برنامه اندروید
  2. آموزش ساخت یک برنامه اندروید، شامل دو دکمه، برای پخش یا توقف پخش یک موسیقی
  3. پخش یک فایل صوتی با استفاده از MediaPlayer ، با قابلیت به عقب و جلو بردن آهنگ (با استفاده از SeekBar)، در برنامه نویسی اندروید
  4. تعیین یک فایل صوتی موجود در حافظه خارجی (External Storage) به عنوان زنگ گوشی (Ringtone)، در برنامه نویسی اندروید
  5. حذف یک آهنگ تعیین شده به عنوان زنگ گوشی (Ringtone)، از لیست زنگ ها (Ringtone) در تنظیمات گوشی، در برنامه نویسی اندروید

منبع: kelidestan.com
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
پخش یک موسیقی به صورت تکرارشونده ، در برنامه اندروید

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

فرض کنید یک فایل موسیقی (آهنگ) داریم و می خواهیم که به صورت تکرارشونده در برنامه اندروید پخش شود (در یک activity خاص). چنانچه نام فایل مربوط به موسیقی، برابر music_1 باشد، باید کدهای زیر را در فایل مربوط به activity بنویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]MediaPlayer player [COLOR=#339933]=[/COLOR] MediaPlayer.[COLOR=#006633]create[/COLOR][COLOR=#009900]([/COLOR]YourActivity.[B]this[/B], R.[COLOR=#006633]raw[/COLOR].[COLOR=#006633]music_1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] 
player.[COLOR=#006633]setLooping[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] [COLOR=#666666][I]// Set looping [/I][/COLOR]
player.[COLOR=#006633]setVolume[/COLOR][COLOR=#009900]([/COLOR][COLOR=#CC66CC]100[/COLOR],[COLOR=#CC66CC]100[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] 
player.[COLOR=#006633]start[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
دقت شود که کد بالا برای یک فایل موسیقی با نام music_1 می باشد که درون فولدر raw کپی شده است (فولدر raw به صورت یک زیر فولدر برای فولدر res ساخته می شود) :

android-215.jpg
 

P O U R I A

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

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

در مبحثی دیگر، گفتیم که توسط چه کدهایی می توان یک موسیقی را در برنامه اندروید پخش کرد. اکنون می خواهیم یک برنامه اندروید بسازیم که دارای دو دکمه باشد، یک دکمه برای پخش موسیقی و دیگری برای توقف پخش موسیقی. بنابراین کاربر می تواند کنترل کند که آیا موسیقی پخش بشود یا خیر.


در برنامه eclipse ، ابتدا یک پروژه اندروید با نام iran-eng.com_Music می سازیم (نام package را برابر com.iran-eng.music انتخاب می کنیم. نام activity اصلی را برابر MainActivity انتخاب می کنیم و فایل xml متناظر آن را هم برابر activity_main قرار می دهیم).


ابتدا باید فایل strings.xml از پروژه اندروید را باز کنیم :

android-211.jpg

کدهای آن، در ابتدا به صورت زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]resources[COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"app_name"[/COLOR][COLOR=#339933]>[/COLOR][/FONT][/FONT][/COLOR]iran-eng[COLOR=#000000][FONT=Tahoma][FONT=monospace].[COLOR=#006633]com_Music[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"action_settings"[/COLOR][COLOR=#339933]>[/COLOR]Settings[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"hello_world"[/COLOR][COLOR=#339933]>[/COLOR]Hello world[COLOR=#339933]!</[/COLOR]string[COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]resources[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
ما دو رشته (string) دیگر نیز در آن تعریف می کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]resources[COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"app_name"[/COLOR][COLOR=#339933]>[/COLOR][/FONT][/FONT][/COLOR]iran-eng[COLOR=#000000][FONT=Tahoma][FONT=monospace].[COLOR=#006633]com_Music[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"action_settings"[/COLOR][COLOR=#339933]>[/COLOR]Settings[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"hello_world"[/COLOR][COLOR=#339933]>[/COLOR]Hello world[COLOR=#339933]!</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"music_play"[/COLOR][COLOR=#339933]>[/COLOR]پخش موسیقی[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"music_stop"[/COLOR][COLOR=#339933]>[/COLOR]توقف پخش موسیقی[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]resources[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
این دو رشته، عنوان هایی هستند که بر روی دو دکمه، نمایش داده خواهند شد.

سپس فایل activity_main.xml از پروژه اندروید را باز می کنیم :

android-210.jpg

کدهای آن را به صورت زیر تغییر می دهیم (تعریف دو دکمه مورد نیازمان) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]LinearLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    xmlns[COLOR=#339933]:[/COLOR]tools[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/tools"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]orientation[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"vertical"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingBottom[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_vertical_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingLeft[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_horizontal_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingRight[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_horizontal_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingTop[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_vertical_margin"[/COLOR]
    tools[COLOR=#339933]:[/COLOR]context[COLOR=#339933]=[/COLOR][COLOR=#0000FF]".MainActivity"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR][COLOR=#003399]Button[/COLOR]
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/button1"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]text[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/music_play"[/COLOR] [COLOR=#339933]/>[/COLOR]

    [COLOR=#339933]<[/COLOR][COLOR=#003399]Button[/COLOR]
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/button2"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_marginTop[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"10dp"[/COLOR]
        android[COLOR=#339933]:[/COLOR]text[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/music_stop"[/COLOR] [COLOR=#339933]/>[/COLOR]

[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
ظاهر گرافیکی activity_main.xml به صورت زیر خواهد بود (به هم ریختگی حروف فارسی، مهم نیست) :

android-212.jpg

فایل موسیقی مورد نظرمان، دارای نام music.mp3 می باشد. می توانید آن را از لینک زیر دانلود کنید:
مشاهده پیوست 110.zip

یک فولدر با نام raw ، به صورت زیر فولدر برای فولدر res می سازیم و سپس فایل music.mp3 را در آن کپی می کنیم :

android-213.jpg

اکنون باید کدهای مربوط به نحوه عملکرد دو دکمه را درون فایل MainActivity.java بنویسیم. بنابراین فایل MainActivity.java را باز می کنیم :

android-214.jpg

فایل MainActivity.java ، در ابتدا دارای کدهای زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.iran-eng.music[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] MainActivity [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

        @Override
        [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// Inflate the menu; this adds items to the action bar if it is present.[/I][/COLOR]
                getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]main[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
کدهای آن را به صورت زیر تغییر می دهیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.[/COLOR][COLOR=#006699]iran-eng[/COLOR][COLOR=#006699].music[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.media.MediaPlayer[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View.OnClickListener[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.Button[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] MainActivity [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]
        
        [B]public[/B] MediaPlayer player[COLOR=#339933];[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#003399]Button[/COLOR] b_1 [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]button1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                b_1.[COLOR=#006633]setOnClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] OnClickListener[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                                          
                     @Override
                     [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onClick[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] v[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                         player [COLOR=#339933]=[/COLOR] MediaPlayer.[COLOR=#006633]create[/COLOR][COLOR=#009900]([/COLOR]MainActivity.[B]this[/B], R.[COLOR=#006633]raw[/COLOR].[COLOR=#006633]music[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] 
                         player.[COLOR=#006633]setLooping[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] [COLOR=#666666][I]// Set looping [/I][/COLOR]
                         player.[COLOR=#006633]setVolume[/COLOR][COLOR=#009900]([/COLOR][COLOR=#CC66CC]100[/COLOR],[COLOR=#CC66CC]100[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] 
                         player.[COLOR=#006633]start[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                     [COLOR=#009900]}[/COLOR]
                [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#003399]Button[/COLOR] b_2 [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]button2[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                b_2.[COLOR=#006633]setOnClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] OnClickListener[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                                          
                     @Override
                     [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onClick[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] v[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                         player.[COLOR=#006633]stop[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                     [COLOR=#009900]}[/COLOR]
                [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

        @Override
        [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// Inflate the menu; this adds items to the action bar if it is present.[/I][/COLOR]
                getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]main[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
اکنون پروژه اندروید، کامل شده است و می توانید آن را به روش دلخواه خود، تست کنید.من برنامه را تبدیل به فایل apk کرده و بر روی یک گوشی نصب می کنم. ظاهر آن به صورت زیر می باشد :

android-216.jpg


با اشاره بر روی گزینه ((پخش موسیقی))، موسیقی پخش شده و با اشاره به گزینه ((توقف پخش موسیقی))، پخش موسیقی متوقف خواهد شد.
فایل های پروژه اندروید را می توانید از لینک های زیر دریافت کنید :
 

پیوست ها

  • 111.zip
    2.9 مگایابت · بازدیدها: 0
  • 112.rar
    2.4 مگایابت · بازدیدها: 0
آخرین ویرایش:

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
پخش یک فایل صوتی با استفاده از MediaPlayer ، با قابلیت به عقب و جلو بردن آهنگ (با استفاده از SeekBar)، در برنامه نویسی اندروید

پخش یک فایل صوتی با استفاده از MediaPlayer ، با قابلیت به عقب و جلو بردن آهنگ (با استفاده از SeekBar)، در برنامه نویسی اندروید

در این مبحث قصد داریم که یک پروژه اندروید بسازیم که در آن، کاربر می تواند به یک آهنگ گوش دهد و با استفاده از یک SeekBar می تواند آهنگ را به جلو یا عقب ببرد :

android-260.jpg

من به طور دلخواه انتخاب کرده ام که هنگامی که کاربر بر روی گزینه مخصوص عقب و جلو بردن آهنگ، اشاره می کند، آهنگ همچنان در حال پخش باشد، اما اگر این حالت برای شما مطلوب نبود، می توانید کدها را کمی تغییر دهید (مثلا پخش آهنگ را در این حالت، متوقف کنید).

در برنامه eclipse ، ابتدا یک پروژه اندروید با نام MediaPlayerPlayback می سازیم (نام package را برابر com.iran-eng.mediaplayerplayback انتخاب می کنیم. نام activity اصلی را برابر MainActivity انتخاب می کنیم و فایل xml متناظر آن را هم برابر activity_main قرار می دهیم).

در پوشه بندی پروژه اندروید، درون پوشه res ، یک پوشه با نام raw می سازیم و درون آن، یک فایل mp3 با نام my_file.mp3 که مربوط به آهنگ مورد نظرمان است را کپی می کنیم :

android-255.jpg


بد نیست این تذکر را بدهم که گاهی در برنامه eclipse ، هنگام کپی کردن فایل ها به درون زیرپوشه های پوشه res ، ممکن است برنامه eclipse اعلام کند که با نام فایل، مشکل دارد. مثلا ممکن است با نام MyFile.mp3 مشکل داشته باشد، اما نام my_file.mp3 هیچ مشکلی ایجاد نکند.


اکنون فایل activity_main.xml را باز می کنیم :

android-256.jpg

کدهای فایل activity_main.xml را به صورت زیر تغییر می دهیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]RelativeLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"fill_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"fill_parent"[/COLOR] [COLOR=#339933]>[/COLOR]
 
    [COLOR=#339933]<[/COLOR]TextView
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/text_shown"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_centerHorizontal[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_marginTop[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"120dp"[/COLOR]
        android[COLOR=#339933]:[/COLOR]textSize[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"42sp"[/COLOR] [COLOR=#339933]/>[/COLOR]
 
    [COLOR=#339933]<[/COLOR]SeekBar
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/seek_bar"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_centerInParent[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR] [COLOR=#339933]/>[/COLOR]

    [COLOR=#339933]<[/COLOR][COLOR=#003399]Button[/COLOR]
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/play_button"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"120dp"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"60dp"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_below[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/seek_bar"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_marginTop[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"60dp"[/COLOR]
        android[COLOR=#339933]:[/COLOR]gravity[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"center"[/COLOR]
        android[COLOR=#339933]:[/COLOR]text[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"Play"[/COLOR] [COLOR=#339933]/>[/COLOR]
 
    [COLOR=#339933]<[/COLOR][COLOR=#003399]Button[/COLOR]
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/pause_button"[/COLOR]
       android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"120dp"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"60dp"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_alignParentRight[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_below[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/seek_bar"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_marginTop[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"60dp"[/COLOR]
        android[COLOR=#339933]:[/COLOR]text[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"Pause"[/COLOR] [COLOR=#339933]/>[/COLOR]
 
[COLOR=#339933]</[/COLOR]RelativeLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
بنابراین، از نظر گرافیکی، فایل activity_main.xml ، به صورت زیر خواهد بود :

android-258.jpg

سپس فایل MainActivity.java که همان Activity اصلی برنامه اندروید است را باز می کنیم :

android-257.jpg

کدهای فایل MainActivity.java را به صورت زیر می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.iran-eng.mediaplayerplayback[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.media.MediaPlayer[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Handler[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View.OnClickListener[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.Button[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.SeekBar[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.SeekBar.OnSeekBarChangeListener[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.TextView[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] MainActivity [B]extends[/B] Activity [B]implements[/B] OnClickListener [COLOR=#009900]{[/COLOR]
        
        SeekBar seek_bar[COLOR=#339933];[/COLOR]
    [COLOR=#003399]Button[/COLOR] play_button, pause_button[COLOR=#339933];[/COLOR]
    MediaPlayer mediaPlayer[COLOR=#339933];[/COLOR]
    TextView text_shown[COLOR=#339933];[/COLOR]
    Handler seekHandler [COLOR=#339933]=[/COLOR] [B]new[/B] Handler[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                getInit[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        seekUpdation[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]


    [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] getInit[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]  
        seek_bar [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]SeekBar[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]seek_bar[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        play_button [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]play_button[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        pause_button [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]pause_button[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        text_shown [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]TextView[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]text_shown[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        play_button.[COLOR=#006633]setOnClickListener[/COLOR][COLOR=#009900]([/COLOR][B]this[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        pause_button.[COLOR=#006633]setOnClickListener[/COLOR][COLOR=#009900]([/COLOR][B]this[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        mediaPlayer [COLOR=#339933]=[/COLOR] MediaPlayer.[COLOR=#006633]create[/COLOR][COLOR=#009900]([/COLOR][B]this[/B], R.[COLOR=#006633]raw[/COLOR].[COLOR=#006633]my_file[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        seek_bar.[COLOR=#006633]setMax[/COLOR][COLOR=#009900]([/COLOR]mediaPlayer.[COLOR=#006633]getDuration[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR]

    [COLOR=#003399]Runnable[/COLOR] run [COLOR=#339933]=[/COLOR] [B]new[/B] [COLOR=#003399]Runnable[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]

        @Override
        [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] run[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            seekUpdation[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
    [COLOR=#009900]}[/COLOR][COLOR=#339933];[/COLOR]

    [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] seekUpdation[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]

        seek_bar.[COLOR=#006633]setProgress[/COLOR][COLOR=#009900]([/COLOR]mediaPlayer.[COLOR=#006633]getCurrentPosition[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        seekHandler.[COLOR=#006633]postDelayed[/COLOR][COLOR=#009900]([/COLOR]run, [COLOR=#CC66CC]1000[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        seek_bar.[COLOR=#006633]setOnSeekBarChangeListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] OnSeekBarChangeListener[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        
                        @Override
                        [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onStopTrackingTouch[COLOR=#009900]([/COLOR]SeekBar seek_bar[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                                [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
                                
                        [COLOR=#009900]}[/COLOR]
                        
                        @Override
                        [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onStartTrackingTouch[COLOR=#009900]([/COLOR]SeekBar seek_bar[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                                [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
                                
                        [COLOR=#009900]}[/COLOR]
                        
                        @Override
                        [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onProgressChanged[COLOR=#009900]([/COLOR]SeekBar seek_bar, [COLOR=#000066][B]int[/B][/COLOR] progress, [COLOR=#000066][B]boolean[/B][/COLOR]fromUser[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                                [B]if[/B][COLOR=#009900]([/COLOR]fromUser[COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR] 
                                    mediaPlayer.[COLOR=#006633]seekTo[/COLOR][COLOR=#009900]([/COLOR]progress[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] 
                                    seek_bar.[COLOR=#006633]setProgress[/COLOR][COLOR=#009900]([/COLOR]progress[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                [COLOR=#009900]}[/COLOR]
                                
                        [COLOR=#009900]}[/COLOR]
                [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR]

    @Override
    [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onClick[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] view[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
        [B]switch[/B] [COLOR=#009900]([/COLOR]view.[COLOR=#006633]getId[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
        [B]case[/B] R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]play_button[/COLOR][COLOR=#339933]:[/COLOR]
            text_shown.[COLOR=#006633]setText[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"Playing..."[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            mediaPlayer.[COLOR=#006633]start[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            [B]break[/B][COLOR=#339933];[/COLOR]
        [B]case[/B] R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]pause_button[/COLOR][COLOR=#339933]:[/COLOR]
                mediaPlayer.[COLOR=#006633]pause[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            text_shown.[COLOR=#006633]setText[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"Paused..."[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
    [COLOR=#009900]}[/COLOR]
    
    [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onProgressChanged[COLOR=#009900]([/COLOR]SeekBar seekBar, [COLOR=#000066][B]int[/B][/COLOR] progress, [COLOR=#000066][B]boolean[/B][/COLOR] fromUser[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR] 
        [B]if[/B][COLOR=#009900]([/COLOR]fromUser[COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR] 
            mediaPlayer.[COLOR=#006633]seekTo[/COLOR][COLOR=#009900]([/COLOR]progress[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] 
            seekBar.[COLOR=#006633]setProgress[/COLOR][COLOR=#009900]([/COLOR]progress[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
    [COLOR=#009900]}[/COLOR]
    
    
    @Override
    [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onBackPressed[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
        mediaPlayer.[COLOR=#006633]stop[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        finish[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR]
      
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
پروژه اندروید آماده است و می توانید آن را به روش دلخواه، تست کنید. مثلا من آن را تبدیل به فایل apk کرده و در یک گوشی واقعی تست کردم، نتیجه به صورت زیر است (کاربر می تواند ضمن گوش دادن به آهنگ، آن را به عقب یا جلو ببرد) :

android-259.jpg

فایل های پروژه اندروید را می توانید از لینک های زیر دریافت کنید :

کدهای این مبحث، بر اساس منبع زیر می باشد (البته با کمی تغییر) :

http://mrbool.com/how-to-play-audio-files-in-android-with-a-seekbar-feature-and-mediaplayer-class/28243


توضیحات بیشتر در مورد کدها :
نکته :
کدهای زیر باعث می شود که اگر کاربر بر روی دکمه Back گوشی اشاره کرد، ابتدا پخش آهنگ متوقف شود و سپس از برنامه خارج گردد (اگر این کدها نباشد، آهنگ متوقف نخواهد شد و برنامه در پس زمینه گوشی در حال اجرا می باشد و کاربر آهنگ را همچنان می شوند) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]@Override
[B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onBackPressed[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
    mediaPlayer.[COLOR=#006633]stop[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    finish[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
 

پیوست ها

  • 128.zip
    5.8 مگایابت · بازدیدها: 0
  • 129.rar
    5.1 مگایابت · بازدیدها: 0

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تعیین یک فایل صوتی موجود در حافظه خارجی (External Storage) به عنوان زنگ گوشی (Ringtone)، در برنامه نویسی اندروید

تعیین یک فایل صوتی موجود در حافظه خارجی (External Storage) به عنوان زنگ گوشی (Ringtone)، در برنامه نویسی اندروید

چنانچه بخواهیم یک فایل صوتی (مثلا mp3) موجود در حافظه خارجی (External Storage) را به عنوان زنگ گوشی (Ringtone) تعیین کنیم، قبل از هر چیز، باید اجازه های دسترسی زیر را به فایل AndroidManifest.xml از پروژه اندروید، اضافه کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]permission android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.permission.WRITE_EXTERNAL_STORAGE"[/COLOR] [COLOR=#339933]/>[/COLOR]
[COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]permission android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.permission.READ_EXTERNAL_STORAGE"[/COLOR] [COLOR=#339933]/>[/COLOR]
[COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]permission android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.permission.WRITE_SETTINGS"[/COLOR] [COLOR=#339933]></[/COLOR]uses[COLOR=#339933]-[/COLOR]permission[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
دو اجازه اول، مربوط به خواندن و نوشتن در حافظه خارجی (External Storage) می باشد که هر زمان با حافظه خارجی سر و کار داریم، باید حتما آنها را ذکر کنیم. اجازه سوم نیز مربوط به تغییر تنظیمات گوشی می باشد.

اکنون فرض می کنیم که فایل صوتی مورد نظرمان دارای نام myFile.mp3 می باشد و در پوشه ای با نام myFolder در حافظه خارجی قرار دارد. اکنون برای تعیین آن فایل صوتی به عنوان زنگ گوشی (Ringtone)، کدهای زیر را می نویسیم (کدهایی که در Activity می نویسیم) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]File[/COLOR] root [COLOR=#339933]=[/COLOR] android.[COLOR=#006633]os[/COLOR].[COLOR=#003399]Environment[/COLOR].[COLOR=#006633]getExternalStorageDirectory[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] 
[COLOR=#003399]File[/COLOR] dir [COLOR=#339933]=[/COLOR] [B]new[/B] [COLOR=#003399]File[/COLOR] [COLOR=#009900]([/COLOR]root.[COLOR=#006633]getAbsolutePath[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#0000FF]"/myFolder"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#003399]String[/COLOR] filename [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"myFile.mp3"[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#003399]File[/COLOR] k [COLOR=#339933]=[/COLOR] [B]new[/B] [COLOR=#003399]File[/COLOR][COLOR=#009900]([/COLOR]dir, filename[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                 
ContentValues values [COLOR=#339933]=[/COLOR] [B]new[/B] ContentValues[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]MediaColumns[/COLOR].[COLOR=#006633]DATA[/COLOR], k.[COLOR=#006633]getAbsolutePath[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]MediaColumns[/COLOR].[COLOR=#006633]TITLE[/COLOR], [COLOR=#0000FF]"myRingtonTitle"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]MediaColumns[/COLOR].[COLOR=#006633]MIME_TYPE[/COLOR], [COLOR=#0000FF]"audio/mp3"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]ARTIST[/COLOR], [COLOR=#0000FF]"cssounds "[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]IS_RINGTONE[/COLOR], [COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]IS_NOTIFICATION[/COLOR], [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]IS_ALARM[/COLOR], [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]IS_MUSIC[/COLOR], [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                 
[COLOR=#666666][I]//Insert it into the database[/I][/COLOR]
Uri newUri[COLOR=#339933]=[/COLOR][B]this[/B].[COLOR=#006633]getContentResolver[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]insert[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]getContentUriForPath[/COLOR][COLOR=#009900]([/COLOR]k.[COLOR=#006633]getAbsolutePath[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR], values[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                 
RingtoneManager.[COLOR=#006633]setActualDefaultRingtoneUri[/COLOR][COLOR=#009900]([/COLOR]
    [B]this[/B],
    RingtoneManager.[COLOR=#006633]TYPE_RINGTONE[/COLOR],
    newUri
[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
در کدهای بالا، نام myRingtonTitle را به عنوان نام آهنگ مورد نظرمان انتخاب کرده ایم که در لیست آهنگ های قابل انتخاب برای زنگ گوشی، با این نام نمایش داده می شود. همچنین نوع فایل را نیز به صورت mp3 تعیین کرده ایم که در صورت دلخواه، می توان آن را تغییر داد (با نوشتن علامت * می توان همه انواع فایل های صوتی معتبر را در نظر گرفت).

پس از اجرای کدهای بالا، اگر به تنظیمات گوشی اندروید مراجعه کنید، مشاهده خواهید کرد که آن آهنگ مورد نظرتان، به عنوان زنگ گوشی (Ringtone) تعیین شده است (با همان نامی که برای آن تعیین کردیم) :

android-359.jpg

android-358.jpg

[h=4]نکته مهم :[/h]اگر کدهایی که شرح دادیم، دو یا چند بار اجرا شوند، آنگاه تعداد دو یا چند بار، زنگ با عنوان myRingtonTitle به لیست زنگ ها افزوده می شود، برای رفع این مشکل، کدها را به گونه ای می نویسیم که ابتدا اگر زنگ مورد نظر در لیست زنگ ها وجود دارد، حذف شده و سپس آن را به لیست زنگ ها اضافه می کنیم. بنابراین کدها را به صورت زیر تغییر می دهیم:
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]File[/COLOR] root [COLOR=#339933]=[/COLOR] android.[COLOR=#006633]os[/COLOR].[COLOR=#003399]Environment[/COLOR].[COLOR=#006633]getExternalStorageDirectory[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] 
[COLOR=#003399]File[/COLOR] dir [COLOR=#339933]=[/COLOR] [B]new[/B] [COLOR=#003399]File[/COLOR] [COLOR=#009900]([/COLOR]root.[COLOR=#006633]getAbsolutePath[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#0000FF]"/myFolder"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#003399]String[/COLOR] filename [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"myFile.mp3"[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#003399]File[/COLOR] k [COLOR=#339933]=[/COLOR] [B]new[/B] [COLOR=#003399]File[/COLOR][COLOR=#009900]([/COLOR]dir, filename[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

ContentValues values [COLOR=#339933]=[/COLOR] [B]new[/B] ContentValues[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]MediaColumns[/COLOR].[COLOR=#006633]DATA[/COLOR], k.[COLOR=#006633]getAbsolutePath[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]MediaColumns[/COLOR].[COLOR=#006633]TITLE[/COLOR], [COLOR=#0000FF]"myRingtonTitle"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]MediaColumns[/COLOR].[COLOR=#006633]MIME_TYPE[/COLOR], [COLOR=#0000FF]"audio/mp3"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]ARTIST[/COLOR], [COLOR=#0000FF]"cssounds "[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]IS_RINGTONE[/COLOR], [COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]IS_NOTIFICATION[/COLOR], [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]IS_ALARM[/COLOR], [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]IS_MUSIC[/COLOR], [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

Uri uri [COLOR=#339933]=[/COLOR] MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]getContentUriForPath[/COLOR][COLOR=#009900]([/COLOR]k.[COLOR=#006633]getAbsolutePath[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
getContentResolver[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]delete[/COLOR][COLOR=#009900]([/COLOR]uri, MediaStore.[COLOR=#006633]MediaColumns[/COLOR].[COLOR=#006633]DATA[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#0000FF]"=[COLOR=#000099][B]\"[/B][/COLOR]"[/COLOR] [COLOR=#339933]+[/COLOR] k.[COLOR=#006633]getAbsolutePath[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]+[/COLOR][COLOR=#0000FF]"[COLOR=#000099][B]\"[/B][/COLOR]"[/COLOR], [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
Uri newUri [COLOR=#339933]=[/COLOR] getContentResolver[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]insert[/COLOR][COLOR=#009900]([/COLOR]uri, values[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

RingtoneManager.[COLOR=#006633]setActualDefaultRingtoneUri[/COLOR][COLOR=#009900]([/COLOR]getApplication[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR],
           RingtoneManager.[COLOR=#006633]TYPE_RINGTONE[/COLOR], newUri[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
حذف یک آهنگ تعیین شده به عنوان زنگ گوشی (Ringtone)، از لیست زنگ ها (Ringtone) در تنظیمات گوشی، در برنامه نویسی اندروید

حذف یک آهنگ تعیین شده به عنوان زنگ گوشی (Ringtone)، از لیست زنگ ها (Ringtone) در تنظیمات گوشی، در برنامه نویسی اندروید

فرض کنید که یک آهنگ به عنوان گزینه ای قابل انتخاب برای زنگ گوشی (Ringtone) در لیست آهنگ های قابل انتخاب نمایش داده شده باشد (در قسمت تنظیمات) و اکنون بخواهیم آن را حذف کنیم. برای این منظور، ابتدا بهتر است کدهای مربوط به تعیین یک فایل صوتی موجود در حافظه خارجی (External Storage) به عنوان زنگ گوشی (Ringtone) را یادآوری کنیم و بعد کدهای مربوط به حذف را شرح بدهیم. قبل از هر چیز، باید اجازه های دسترسی زیر را به فایل AndroidManifest.xml از پروژه اندروید، اضافه کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]permission android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.permission.WRITE_EXTERNAL_STORAGE"[/COLOR] [COLOR=#339933]/>[/COLOR]
[COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]permission android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.permission.READ_EXTERNAL_STORAGE"[/COLOR] [COLOR=#339933]/>[/COLOR]
[COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]permission android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.permission.WRITE_SETTINGS"[/COLOR] [COLOR=#339933]></[/COLOR]uses[COLOR=#339933]-[/COLOR]permission[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
اکنون فرض می کنیم که فایل صوتی مورد نظرمان دارای نام myFile.mp3 می باشد و در پوشه ای با نام myFolder در حافظه خارجی قرار دارد. اکنون برای تعیین آن فایل صوتی به عنوان زنگ گوشی (Ringtone)، کدهای زیر را می نویسیم (کدهایی که در Activity می نویسیم) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]File[/COLOR] root [COLOR=#339933]=[/COLOR] android.[COLOR=#006633]os[/COLOR].[COLOR=#003399]Environment[/COLOR].[COLOR=#006633]getExternalStorageDirectory[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] 
[COLOR=#003399]File[/COLOR] dir [COLOR=#339933]=[/COLOR] [B]new[/B] [COLOR=#003399]File[/COLOR] [COLOR=#009900]([/COLOR]root.[COLOR=#006633]getAbsolutePath[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#0000FF]"/myFolder"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#003399]String[/COLOR] filename [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"myFile.mp3"[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#003399]File[/COLOR] k [COLOR=#339933]=[/COLOR] [B]new[/B] [COLOR=#003399]File[/COLOR][COLOR=#009900]([/COLOR]dir, filename[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                  
ContentValues values [COLOR=#339933]=[/COLOR] [B]new[/B] ContentValues[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]MediaColumns[/COLOR].[COLOR=#006633]DATA[/COLOR], k.[COLOR=#006633]getAbsolutePath[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]MediaColumns[/COLOR].[COLOR=#006633]TITLE[/COLOR], [COLOR=#0000FF]"myRingtonTitle"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]MediaColumns[/COLOR].[COLOR=#006633]MIME_TYPE[/COLOR], [COLOR=#0000FF]"audio/mp3"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]ARTIST[/COLOR], [COLOR=#0000FF]"cssounds "[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]IS_RINGTONE[/COLOR], [COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]IS_NOTIFICATION[/COLOR], [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]IS_ALARM[/COLOR], [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]IS_MUSIC[/COLOR], [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                  
[COLOR=#666666][I]//Insert it into the database[/I][/COLOR]
 Uri newUri[COLOR=#339933]=[/COLOR][B]this[/B].[COLOR=#006633]getContentResolver[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]insert[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]getContentUriForPath[/COLOR][COLOR=#009900]([/COLOR]k.[COLOR=#006633]getAbsolutePath[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR], values[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                  
 RingtoneManager.[COLOR=#006633]setActualDefaultRingtoneUri[/COLOR][COLOR=#009900]([/COLOR]
     [B]this[/B],
     RingtoneManager.[COLOR=#006633]TYPE_RINGTONE[/COLOR],
     newUri
[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
در کدهای بالا، نام myRingtonTitle را به عنوان نام آهنگ مورد نظرمان انتخاب کرده ایم که در لیست آهنگ های قابل انتخاب برای زنگ گوشی، با این نام نمایش داده می شود. همچنین نوع فایل را نیز به صورت mp3 تعیین کرده ایم که در صورت دلخواه، می توان آن را تغییر داد (با نوشتن علامت * می توان همه انواع فایل های صوتی معتبر را در نظر گرفت).

اکنون فرض کنید که بخواهیم آهنگ مورد نظر را از لیست زنگ های گوشی (Ringtone) حذف کنیم، برای این منظور، کدهای زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]File[/COLOR] root [COLOR=#339933]=[/COLOR] android.[COLOR=#006633]os[/COLOR].[COLOR=#003399]Environment[/COLOR].[COLOR=#006633]getExternalStorageDirectory[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] 
[COLOR=#003399]File[/COLOR] dir [COLOR=#339933]=[/COLOR] [B]new[/B] [COLOR=#003399]File[/COLOR] [COLOR=#009900]([/COLOR]root.[COLOR=#006633]getAbsolutePath[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#0000FF]"/myFolder"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#003399]String[/COLOR] filename [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"myFile.mp3"[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#003399]File[/COLOR] k [COLOR=#339933]=[/COLOR] [B]new[/B] [COLOR=#003399]File[/COLOR][COLOR=#009900]([/COLOR]dir, filename[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

ContentValues values [COLOR=#339933]=[/COLOR] [B]new[/B] ContentValues[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]MediaColumns[/COLOR].[COLOR=#006633]DATA[/COLOR], k.[COLOR=#006633]getAbsolutePath[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]MediaColumns[/COLOR].[COLOR=#006633]TITLE[/COLOR], [COLOR=#0000FF]"myRingtonTitle"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]MediaColumns[/COLOR].[COLOR=#006633]MIME_TYPE[/COLOR], [COLOR=#0000FF]"audio/mp3"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]ARTIST[/COLOR], [COLOR=#0000FF]"cssounds "[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]IS_RINGTONE[/COLOR], [COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]IS_NOTIFICATION[/COLOR], [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]IS_ALARM[/COLOR], [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
values.[COLOR=#006633]put[/COLOR][COLOR=#009900]([/COLOR]MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]IS_MUSIC[/COLOR], [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

Uri uri [COLOR=#339933]=[/COLOR] MediaStore.[COLOR=#006633]Audio[/COLOR].[COLOR=#006633]Media[/COLOR].[COLOR=#006633]getContentUriForPath[/COLOR][COLOR=#009900]([/COLOR]k.[COLOR=#006633]getAbsolutePath[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
getContentResolver[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]delete[/COLOR][COLOR=#009900]([/COLOR]uri, MediaStore.[COLOR=#006633]MediaColumns[/COLOR].[COLOR=#006633]DATA[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#0000FF]"=[COLOR=#000099][B]\"[/B][/COLOR]"[/COLOR] [COLOR=#339933]+[/COLOR] k.[COLOR=#006633]getAbsolutePath[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]+[/COLOR][COLOR=#0000FF]"[COLOR=#000099][B]\"[/B][/COLOR]"[/COLOR], [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
دقت شود که پس از حذف این زنگ، اگر قبلا به عنوان زنگ پیش فرض تعیین شده باشد، اکنون هیچ زنگی انتخاب نشده است (در صورت دلخواه می توانید زنگی را به عنوان زنگ پیش فرض به جای آن قرار دهید).
 
بالا