Android开发铃声的设置与播放

来源:互联网 发布:老司机 知乎 收藏夹 编辑:程序博客网 时间:2024/06/10 05:03

在android系统中,不同铃声存放的铃声路径:

/system/media/audio/ringtones        来电铃声 /system/media/audio/notifications        短信通知铃声 /system/media/audio/alarms        闹钟铃声
 
铃声的设置:
 
  1. import java.io.File;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.media.RingtoneManager;  
  6. import android.net.Uri;  
  7. import android.os.Bundle;  
  8. import android.view.View;  
  9. import android.widget.Button;  
  10. public class Activity01 extends Activity  
  11. {  
  12.     /* 3个按钮 */  
  13.     private Button mButtonRingtone;  
  14.     private Button mButtonAlarm;  
  15.     private Button mButtonNotification;  
  16.   
  17.     /* 自定义的类型 */  
  18.     public static final int ButtonRingtone          = 0;  
  19.     public static final int ButtonAlarm             = 1;  
  20.     public static final int ButtonNotification      = 2;  
  21.     /* 铃声文件夹 */  
  22.     private String strRingtoneFolder = "/sdcard/music/ringtones";  
  23.     private String strAlarmFolder = "/sdcard/music/alarms";  
  24.     private String strNotificationFolder = "/sdcard/music/notifications";  
  25.   
  26.   
  27.     /** Called when the activity is first created. */  
  28.     @Override  
  29.     public void onCreate(Bundle savedInstanceState)  
  30.     {  
  31.         super.onCreate(savedInstanceState);  
  32.         setContentView(R.layout.main);  
  33.       
  34.         mButtonRingtone = (Button) findViewById(R.id.ButtonRingtone);  
  35.         mButtonAlarm = (Button) findViewById(R.id.ButtonAlarm);  
  36.         mButtonNotification = (Button) findViewById(R.id.ButtonNotification);  
  37.         /* 设置来电铃声 */  
  38.         mButtonRingtone.setOnClickListener(new Button.OnClickListener()   
  39.         {  
  40.             @Override  
  41.             public void onClick(View arg0)  
  42.             {  
  43.                 if (bFolder(strRingtoneFolder))  
  44.                 {  
  45.                     //打开系统铃声设置  
  46.                     Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);  
  47.                     //类型为来电RINGTONE  
  48.                     intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE);  
  49.                     //设置显示的title  
  50.                     intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置来电铃声");  
  51.                     //当设置完成之后返回到当前的Activity  
  52.                     startActivityForResult(intent, ButtonRingtone);  
  53.                 }  
  54.             }  
  55.         });  
  56.         /* 设置闹钟铃声 */  
  57.         mButtonAlarm.setOnClickListener(new Button.OnClickListener()   
  58.         {  
  59.             @Override  
  60.             public void onClick(View arg0)  
  61.             {  
  62.                 if (bFolder(strAlarmFolder))  
  63.                 {  
  64.                     //打开系统铃声设置  
  65.                     Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);  
  66.                     //设置铃声类型和title  
  67.                     intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALARM);  
  68.                     intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置闹铃铃声");  
  69.                     //当设置完成之后返回到当前的Activity  
  70.                     startActivityForResult(intent, ButtonAlarm);  
  71.                 }  
  72.             }  
  73.         });  
  74.         /* 设置通知铃声 */  
  75.         mButtonNotification.setOnClickListener(new Button.OnClickListener()   
  76.         {  
  77.             @Override  
  78.             public void onClick(View arg0)  
  79.             {  
  80.                 if (bFolder(strNotificationFolder))  
  81.                 {  
  82.                     //打开系统铃声设置  
  83.                     Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);  
  84.                     //设置铃声类型和title  
  85.                     intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);  
  86.                     intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置通知铃声");  
  87.                     //当设置完成之后返回到当前的Activity  
  88.                     startActivityForResult(intent, ButtonNotification);  
  89.                 }  
  90.             }  
  91.         });  
  92.     }  
  93.     /* 当设置铃声之后的回调函数 */  
  94.     @Override  
  95.     protected void onActivityResult(int requestCode, int resultCode, Intent data)  
  96.     {  
  97.         // TODO Auto-generated method stub  
  98.         if (resultCode != RESULT_OK)  
  99.         {  
  100.             return;  
  101.         }  
  102.         switch (requestCode)  
  103.         {  
  104.             case ButtonRingtone:  
  105.                 try  
  106.                 {  
  107.                     //得到我们选择的铃声  
  108.                     Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);  
  109.                     //将我们选择的铃声设置成为默认  
  110.                     if (pickedUri != null)  
  111.                     {  
  112.                         RingtoneManager.setActualDefaultRingtoneUri(Activity01.this, RingtoneManager.TYPE_RINGTONE, pickedUri);  
  113.                     }  
  114.                 }  
  115.                 catch (Exception e)  
  116.                 {  
  117.                 }  
  118.                 break;  
  119.             case ButtonAlarm:  
  120.                 try  
  121.                 {  
  122.                     //得到我们选择的铃声  
  123.                     Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);  
  124.                     //将我们选择的铃声设置成为默认  
  125.                     if (pickedUri != null)  
  126.                     {  
  127.                         RingtoneManager.setActualDefaultRingtoneUri(Activity01.this, RingtoneManager.TYPE_ALARM, pickedUri);  
  128.                     }  
  129.                 }  
  130.                 catch (Exception e)  
  131.                 {  
  132.                 }  
  133.                 break;  
  134.             case ButtonNotification:  
  135.                 try  
  136.                 {  
  137.                     //得到我们选择的铃声  
  138.                     Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);  
  139.                     //将我们选择的铃声设置成为默认  
  140.                     if (pickedUri != null)  
  141.                     {  
  142.                         RingtoneManager.setActualDefaultRingtoneUri(Activity01.this, RingtoneManager.TYPE_NOTIFICATION, pickedUri);  
  143.                     }  
  144.                 }  
  145.                 catch (Exception e)  
  146.                 {  
  147.                 }  
  148.                 break;  
  149.         }  
  150.         super.onActivityResult(requestCode, resultCode, data);  
  151.     }  
  152.     //检测是否存在指定的文件夹   
  153.     //如果不存在则创建  
  154.     private boolean bFolder(String strFolder)  
  155.     {  
  156.         boolean btmp = false;  
  157.         File f = new File(strFolder);  
  158.         if (!f.exists())  
  159.         {  
  160.             if (f.mkdirs())  
  161.             {  
  162.                 btmp = true;  
  163.             }  
  164.             else  
  165.             {  
  166.                 btmp = false;  
  167.             }  
  168.         }  
  169.         else  
  170.         {  
  171.             btmp = true;  
  172.         }  
  173.         return btmp;  
  174.     }  
  175. }  

 

铃声的播放:

  1. player = new MediaPlayer();  
  2.      try{  
  3.      player.setDataSource(context, pickUri);  
  4.      }catch(Exception e){  
  5.       e.printStackTrace();  
  6.      }  
  7.     final AudioManager  audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);  
  8.     if(audioManager.getStreamVolume(AudioManager.STREAM_ALARM)!=0){  
  9.        player.setAudioStreamType(AudioManager.STREAM_ALARM);  
  10.        player.setLooping(true);  
  11.        try {  
  12.     player.prepare();  
  13. catch (Exception e) {  
  14.     // TODO Auto-generated catch block  
  15.     e.printStackTrace();  
  16. }  
  17.        player.start();  
  18.     }  

 

 

 

0 0