zoukankan      html  css  js  c++  java
  • 如何编写程序设置Android来电铃声

          我们在拿到新手机后通常会为其设置来年铃声,那么怎样通过代码来设置Android来电铃声,本文就为大家实例讲解下。

           1、如果读到的是音频文件路径,需要先将音乐文件插入到多媒体库。

    Java代码
    1. //设置--铃声的具体方法     
    2.     public void setMyRingtone(String path)     
    3.     {      
    4.       File sdfile = new File(path);     
    5.       ContentValues values = new ContentValues();     
    6.       values.put(MediaStore.MediaColumns.DATA, sdfile.getAbsolutePath());     
    7.       values.put(MediaStore.MediaColumns.TITLE, sdfile.getName());     
    8.       values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");       
    9.       values.put(MediaStore.Audio.Media.IS_RINGTONE, true);     
    10.       values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);     
    11.       values.put(MediaStore.Audio.Media.IS_ALARM, false);     
    12.       values.put(MediaStore.Audio.Media.IS_MUSIC, false);     
    13.           
    14.       Uri uri = MediaStore.Audio.Media.getContentUriForPath(sdfile.getAbsolutePath());     
    15.       Uri newUri = this.getContentResolver().insert(uri, values);     
    16.       RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);     
    17.       Toast.makeText( getApplicationContext (),"设置来电铃声成功!", Toast.LENGTH_SHORT ).show();     
    18.       System.out.println("setMyRingtone()-----铃声");     
    19.     }     
    20.     
    21.   //设置--提示音的具体实现方法     
    22.     public void setMyNotification(String path)     
    23.     {     
    24.        
    25.       File sdfile = new File(path);       
    26.       ContentValues values = new ContentValues();     
    27.       values.put(MediaStore.MediaColumns.DATA, sdfile.getAbsolutePath());     
    28.       values.put(MediaStore.MediaColumns.TITLE, sdfile.getName());     
    29.       values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");       
    30.       values.put(MediaStore.Audio.Media.IS_RINGTONE, false);     
    31.       values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);     
    32.       values.put(MediaStore.Audio.Media.IS_ALARM, false);     
    33.       values.put(MediaStore.Audio.Media.IS_MUSIC, false);     
    34.           
    35.       Uri uri = MediaStore.Audio.Media.getContentUriForPath(sdfile.getAbsolutePath());     
    36.       Uri newUri = this.getContentResolver().insert(uri, values);     
    37.           
    38.       RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_NOTIFICATION, newUri);     
    39.       Toast.makeText( getApplicationContext (),"设置通知铃声成功!", Toast.LENGTH_SHORT ).show();     
    40.       System.out.println("setMyNOTIFICATION-----提示音");     
    41.     }     
    42.   //设置--闹铃音的具体实现方法     
    43.   public void setMyAlarm(String path)     
    44.     {     
    45.       File sdfile = new File(path);       
    46.       ContentValues values = new ContentValues();     
    47.       values.put(MediaStore.MediaColumns.DATA, sdfile.getAbsolutePath());     
    48.       values.put(MediaStore.MediaColumns.TITLE, sdfile.getName());     
    49.       values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");       
    50.       values.put(MediaStore.Audio.Media.IS_RINGTONE, false);     
    51.       values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);     
    52.       values.put(MediaStore.Audio.Media.IS_ALARM, true);     
    53.       values.put(MediaStore.Audio.Media.IS_MUSIC, false);     
    54.           
    55.       Uri uri = MediaStore.Audio.Media.getContentUriForPath(sdfile.getAbsolutePath());     
    56.       Uri newUri = this.getContentResolver().insert(uri, values);     
    57.       RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM, newUri);     
    58.       Toast.makeText( getApplicationContext (),"设置闹钟铃声成功!", Toast.LENGTH_SHORT ).show();     
    59.       System.out.println("setMyNOTIFICATION------闹铃音");     
    60.     }   

           2、如果读取多媒体库的音频文件,设为铃声,使用以下方式:

           首先写一个常量类(定义想要设置为那种铃声的标示):

           AppConstant.java 

    Java代码
    1. public interface AppConstant {     
    2.      public static final int RINGTONE = 0;                   //铃声          
    3.      public static final int NOTIFICATION = 1;               //通知音           
    4.      public static final int ALARM = 2;                      //闹钟        
    5.      public static final int ALL = 3;                        //所有声音           
    6. }   

           此方法需要传入想要设置为铃声的全路径(如:/mnt/sdcard/mp3/a.mp3),和想要设置为哪种铃声的标示:

    Java代码
    1. private void setVoice(String path2,int id)       
    2. {     
    3.      ContentValues cv = new ContentValues();     
    4.      Uri newUri = null;        
    5.      Uri uri = MediaStore.Audio.Media.getContentUriForPath(path2);     
    6.       
    7.      // 查询音乐文件在媒体库是否存在       
    8.      Cursor cursor = this.getContentResolver().query(uri, null, MediaStore.MediaColumns.DATA + "=?", new String[] { path2 },null);        
    9.      if (cursor.moveToFirst() && cursor.getCount() > 0)      
    10.      {       
    11.           String _id = cursor.getString(0);       
    12.           switch (id) {        
    13.           case AppConstant.RINGTONE:        
    14.                cv.put(MediaStore.Audio.Media.IS_RINGTONE, true);       
    15.                cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);        
    16.                cv.put(MediaStore.Audio.Media.IS_ALARM, false);       
    17.                cv.put(MediaStore.Audio.Media.IS_MUSIC, false);       
    18.                break;       
    19.           case AppConstant.NOTIFICATION:        
    20.                cv.put(MediaStore.Audio.Media.IS_RINGTONE, false);       
    21.                cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);      
    22.                cv.put(MediaStore.Audio.Media.IS_ALARM, false);     
    23.                cv.put(MediaStore.Audio.Media.IS_MUSIC, false);     
    24.                break;     
    25.           case AppConstant.ALARM:     
    26.                cv.put(MediaStore.Audio.Media.IS_RINGTONE, false);     
    27.                cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);     
    28.                cv.put(MediaStore.Audio.Media.IS_ALARM, true);     
    29.                cv.put(MediaStore.Audio.Media.IS_MUSIC, false);     
    30.                break;     
    31.           case AppConstant.ALL:     
    32.                cv.put(MediaStore.Audio.Media.IS_RINGTONE, true);     
    33.                cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);     
    34.                cv.put(MediaStore.Audio.Media.IS_ALARM, true);     
    35.                cv.put(MediaStore.Audio.Media.IS_MUSIC, false);     
    36.                break;     
    37.           default:     
    38.                break;     
    39.       }     
    40.     
    41.       // 把需要设为铃声的歌曲更新铃声库     
    42.       getContentResolver().update(uri, cv, MediaStore.MediaColumns.DATA + "=?",new String[] { path2 });     
    43.       newUri = ContentUris.withAppendedId(uri, Long.valueOf(_id));     
    44.       // 一下为关键代码:     
    45.       switch (id) {     
    46.       case AppConstant.RINGTONE:     
    47.            RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);     
    48.            break;     
    49.       case AppConstant.NOTIFICATION:     
    50.            RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_NOTIFICATION, newUri);     
    51.            break;     
    52.       case AppConstant.ALARM:     
    53.            RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM, newUri);     
    54.            break;     
    55.       case AppConstant.ALL:     
    56.            RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALL, newUri);     
    57.            break;     
    58.       default:     
    59.            break;     
    60.       }     
    61.     
    62.       //播放铃声     
    63.        //Ringtone rt = RingtoneManager.getRingtone(this, newUri);     
    64.       //rt.play();     
    65.    }     
    66. }    
  • 相关阅读:
    UVA1349 Optimal Bus Route Design 最优巴士路线设计
    POJ3565 Ants 蚂蚁(NEERC 2008)
    UVA1663 Purifying Machine 净化器
    UVa11996 Jewel Magic 魔法珠宝
    NEERC2003 Jurassic Remains 侏罗纪
    UVA11895 Honorary Tickets
    gdb调试coredump(使用篇)
    使用 MegaCLI 检测磁盘状态并更换磁盘
    员工直接坦诚直来直去 真性情
    山东浪潮超越3B4000申泰RM5120-L
  • 原文地址:https://www.cnblogs.com/xiaochao1234/p/3860418.html
Copyright © 2011-2022 走看看