Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> 如何編寫程序設置Android來電鈴聲

如何編寫程序設置Android來電鈴聲

編輯: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. }    

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved