android-鈴聲的設置與播放


在android系統中,不同鈴聲存放的鈴聲路徑:

/system/media/audio/ringtones        來電鈴聲
 /system/media/audio/notifications        短信通知鈴聲
 /system/media/audio/alarms        鬧鍾鈴聲

鈴聲的設置:

    import java.io.File;  
      
    import android.app.Activity;  
    import android.content.Intent;  
    import android.media.RingtoneManager;  
    import android.net.Uri;  
    import android.os.Bundle;  
    import android.view.View;  
    import android.widget.Button;  
    public class Activity01 extends Activity  
    {  
        /* 3個按鈕 */  
        private Button mButtonRingtone;  
        private Button mButtonAlarm;  
        private Button mButtonNotification;  
      
        /* 自定義的類型 */  
        public static final int ButtonRingtone          = 0;  
        public static final int ButtonAlarm             = 1;  
        public static final int ButtonNotification      = 2;  
        /* 鈴聲文件夾 */  
        private String strRingtoneFolder = "/sdcard/music/ringtones";  
        private String strAlarmFolder = "/sdcard/music/alarms";  
        private String strNotificationFolder = "/sdcard/music/notifications";  
      
      
        /** Called when the activity is first created. */  
        @Override  
        public void onCreate(Bundle savedInstanceState)  
        {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.main);  
          
            mButtonRingtone = (Button) findViewById(R.id.ButtonRingtone);  
            mButtonAlarm = (Button) findViewById(R.id.ButtonAlarm);  
            mButtonNotification = (Button) findViewById(R.id.ButtonNotification);  
            /* 設置來電鈴聲 */  
            mButtonRingtone.setOnClickListener(new Button.OnClickListener()   
            {  
                @Override  
                public void onClick(View arg0)  
                {  
                    if (bFolder(strRingtoneFolder))  
                    {  
                        //打開系統鈴聲設置  
                        Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);  
                        //類型為來電RINGTONE  
                        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE);  
                        //設置顯示的title  
                        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "設置來電鈴聲");  
                        //當設置完成之后返回到當前的Activity  
                        startActivityForResult(intent, ButtonRingtone);  
                    }  
                }  
            });  
            /* 設置鬧鍾鈴聲 */  
            mButtonAlarm.setOnClickListener(new Button.OnClickListener()   
            {  
                @Override  
                public void onClick(View arg0)  
                {  
                    if (bFolder(strAlarmFolder))  
                    {  
                        //打開系統鈴聲設置  
                        Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);  
                        //設置鈴聲類型和title  
                        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALARM);  
                        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "設置鬧鈴鈴聲");  
                        //當設置完成之后返回到當前的Activity  
                        startActivityForResult(intent, ButtonAlarm);  
                    }  
                }  
            });  
            /* 設置通知鈴聲 */  
            mButtonNotification.setOnClickListener(new Button.OnClickListener()   
            {  
                @Override  
                public void onClick(View arg0)  
                {  
                    if (bFolder(strNotificationFolder))  
                    {  
                        //打開系統鈴聲設置  
                        Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);  
                        //設置鈴聲類型和title  
                        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);  
                        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "設置通知鈴聲");  
                        //當設置完成之后返回到當前的Activity  
                        startActivityForResult(intent, ButtonNotification);  
                    }  
                }  
            });  
        }  
        /* 當設置鈴聲之后的回調函數 */  
        @Override  
        protected void onActivityResult(int requestCode, int resultCode, Intent data)  
        {  
            // TODO Auto-generated method stub  
            if (resultCode != RESULT_OK)  
            {  
                return;  
            }  
            switch (requestCode)  
            {  
                case ButtonRingtone:  
                    try  
                    {  
                        //得到我們選擇的鈴聲  
                        Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);  
                        //將我們選擇的鈴聲設置成為默認  
                        if (pickedUri != null)  
                        {  
                            RingtoneManager.setActualDefaultRingtoneUri(Activity01.this, RingtoneManager.TYPE_RINGTONE, pickedUri);  
                        }  
                    }  
                    catch (Exception e)  
                    {  
                    }  
                    break;  
                case ButtonAlarm:  
                    try  
                    {  
                        //得到我們選擇的鈴聲  
                        Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);  
                        //將我們選擇的鈴聲設置成為默認  
                        if (pickedUri != null)  
                        {  
                            RingtoneManager.setActualDefaultRingtoneUri(Activity01.this, RingtoneManager.TYPE_ALARM, pickedUri);  
                        }  
                    }  
                    catch (Exception e)  
                    {  
                    }  
                    break;  
                case ButtonNotification:  
                    try  
                    {  
                        //得到我們選擇的鈴聲  
                        Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);  
                        //將我們選擇的鈴聲設置成為默認  
                        if (pickedUri != null)  
                        {  
                            RingtoneManager.setActualDefaultRingtoneUri(Activity01.this, RingtoneManager.TYPE_NOTIFICATION, pickedUri);  
                        }  
                    }  
                    catch (Exception e)  
                    {  
                    }  
                    break;  
            }  
            super.onActivityResult(requestCode, resultCode, data);  
        }  
        //檢測是否存在指定的文件夾   
        //如果不存在則創建  
        private boolean bFolder(String strFolder)  
        {  
            boolean btmp = false;  
            File f = new File(strFolder);  
            if (!f.exists())  
            {  
                if (f.mkdirs())  
                {  
                    btmp = true;  
                }  
                else  
                {  
                    btmp = false;  
                }  
            }  
            else  
            {  
                btmp = true;  
            }  
            return btmp;  
        }  
    }  


鈴聲的播放:

    player = new MediaPlayer();  
         try{  
         player.setDataSource(context, pickUri);  
         }catch(Exception e){  
          e.printStackTrace();  
         }  
        final AudioManager  audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);  
        if(audioManager.getStreamVolume(AudioManager.STREAM_ALARM)!=0){  
           player.setAudioStreamType(AudioManager.STREAM_ALARM);  
           player.setLooping(true);  
           try {  
        player.prepare();  
    } catch (Exception e) {  
        // TODO Auto-generated catch block  
        e.printStackTrace();  
    }  
           player.start();  
        }  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM