如何编写程序设置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. Uri uri = MediaStore.Audio.Media.getContentUriForPath(sdfile.getAbsolutePath());
  14. Uri newUri = this.getContentResolver().insert(uri, values);
  15. RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);
  16. Toast.makeText( getApplicationContext (),"设置来电铃声成功!", Toast.LENGTH_SHORT ).show();
  17. System.out.println("setMyRingtone()-----铃声");
  18. }
  19. //设置--提示音的具体实现方法
  20. public void setMyNotification(String path)
  21. {
  22. File sdfile = new File(path);
  23. ContentValues values = new ContentValues();
  24. values.put(MediaStore.MediaColumns.DATA, sdfile.getAbsolutePath());
  25. values.put(MediaStore.MediaColumns.TITLE, sdfile.getName());
  26. values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
  27. values.put(MediaStore.Audio.Media.IS_RINGTONE, false);
  28. values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
  29. values.put(MediaStore.Audio.Media.IS_ALARM, false);
  30. values.put(MediaStore.Audio.Media.IS_MUSIC, false);
  31. Uri uri = MediaStore.Audio.Media.getContentUriForPath(sdfile.getAbsolutePath());
  32. Uri newUri = this.getContentResolver().insert(uri, values);
  33. RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_NOTIFICATION, newUri);
  34. Toast.makeText( getApplicationContext (),"设置通知铃声成功!", Toast.LENGTH_SHORT ).show();
  35. System.out.println("setMyNOTIFICATION-----提示音");
  36. }
  37. //设置--闹铃音的具体实现方法
  38. public void setMyAlarm(String path)
  39. {
  40. File sdfile = new File(path);
  41. ContentValues values = new ContentValues();
  42. values.put(MediaStore.MediaColumns.DATA, sdfile.getAbsolutePath());
  43. values.put(MediaStore.MediaColumns.TITLE, sdfile.getName());
  44. values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
  45. values.put(MediaStore.Audio.Media.IS_RINGTONE, false);
  46. values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
  47. values.put(MediaStore.Audio.Media.IS_ALARM, true);
  48. values.put(MediaStore.Audio.Media.IS_MUSIC, false);
  49. Uri uri = MediaStore.Audio.Media.getContentUriForPath(sdfile.getAbsolutePath());
  50. Uri newUri = this.getContentResolver().insert(uri, values);
  51. RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM, newUri);
  52. Toast.makeText( getApplicationContext (),"设置闹钟铃声成功!", Toast.LENGTH_SHORT ).show();
  53. System.out.println("setMyNOTIFICATION------闹铃音");
  54. }

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. Cursor cursor = this.getContentResolver().query(uri, null, MediaStore.MediaColumns.DATA + "=?", new String[] { path2 },null);
  8. if (cursor.moveToFirst() && cursor.getCount() > 0)
  9. {
  10. String _id = cursor.getString(0);
  11. switch (id) {
  12. case AppConstant.RINGTONE:
  13. cv.put(MediaStore.Audio.Media.IS_RINGTONE, true);
  14. cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
  15. cv.put(MediaStore.Audio.Media.IS_ALARM, false);
  16. cv.put(MediaStore.Audio.Media.IS_MUSIC, false);
  17. break;
  18. case AppConstant.NOTIFICATION:
  19. cv.put(MediaStore.Audio.Media.IS_RINGTONE, false);
  20. cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
  21. cv.put(MediaStore.Audio.Media.IS_ALARM, false);
  22. cv.put(MediaStore.Audio.Media.IS_MUSIC, false);
  23. break;
  24. case AppConstant.ALARM:
  25. cv.put(MediaStore.Audio.Media.IS_RINGTONE, false);
  26. cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
  27. cv.put(MediaStore.Audio.Media.IS_ALARM, true);
  28. cv.put(MediaStore.Audio.Media.IS_MUSIC, false);
  29. break;
  30. case AppConstant.ALL:
  31. cv.put(MediaStore.Audio.Media.IS_RINGTONE, true);
  32. cv.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
  33. cv.put(MediaStore.Audio.Media.IS_ALARM, true);
  34. cv.put(MediaStore.Audio.Media.IS_MUSIC, false);
  35. break;
  36. default:
  37. break;
  38. }
  39. // 把需要设为铃声的歌曲更新铃声库
  40. getContentResolver().update(uri, cv, MediaStore.MediaColumns.DATA + "=?",new String[] { path2 });
  41. newUri = ContentUris.withAppendedId(uri, Long.valueOf(_id));
  42. // 一下为关键代码:
  43. switch (id) {
  44. case AppConstant.RINGTONE:
  45. RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);
  46. break;
  47. case AppConstant.NOTIFICATION:
  48. RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_NOTIFICATION, newUri);
  49. break;
  50. case AppConstant.ALARM:
  51. RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM, newUri);
  52. break;
  53. case AppConstant.ALL:
  54. RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALL, newUri);
  55. break;
  56. default:
  57. break;
  58. }
  59. //播放铃声
  60. //Ringtone rt = RingtoneManager.getRingtone(this, newUri);
  61. //rt.play();
  62. }
  63. }

如何编写程序设置Android来电铃声,布布扣,bubuko.com

时间: 2024-12-26 00:25:54

如何编写程序设置Android来电铃声的相关文章

Android之来电铃声设置

从文件管理器中设置一首歌曲为来电铃声铃声,进入拨号盘设置中点击提示音和振动,来电铃声就会变成默认铃声 从文件管理器中设置一首歌曲为来电铃声铃声,进入拨号盘设置中点击提示音和振动,来电铃声就会变成默认铃声歌曲是SD卡中的1.进入文件管理器2.从SD卡中设置一首歌曲为来电铃声3.进入settings>>提示音和通知>>手机铃声,查看来电铃声的歌曲是刚刚设置的外部歌曲4.进入拨号盘设置中,点击提示音和振动5.返回settings>>提示音和通知>>手机铃声,查看来

我的Android进阶之旅------>Android系统设置默认来电铃声、闹钟铃声、通知铃声

首先了解Android系统本身提供的默认铃声文件,这些文件都放在  /system/media/audio  目录下. /system/media/audio/ringtones   系统来电铃声 /system/media/audio/notifications  系统通知铃声 /system/media/audio/alarms 系统闹钟铃声 自己下载的铃声,可以放在SD卡的music目录.主要包括:一般的铃声(如来电铃声).闹钟铃声和通知铃声.这三种铃声分别放在如下的目录中: /sdcar

Android程序设置软件图标

默认新建的工程里会设置一个系统默认图标 如果没有,就在工程的AndroidManifest.xml文件中添加下面的语句即可. 这里需要预先在/res/drawable/目录下放一个叫icon.png的图标图片(48×48),并且在/res/values/strings.xml中定义app_name这个字符串(就是程序名) <application android:icon="@drawable/icon" android:label="@string/app_name&

【Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性

在进行UI布局的时候,可能常常会用到 android:gravity  和 android:layout_Gravity 这两个属性. 关于这两个属性的差别,网上已经有许多人进行了说明,这边再简单说一下. (资料来自网络) LinearLayout有两个很类似的属性: android:gravity与android:layout_gravity. 他们的差别在于: android:gravity 属性是对该view中内容的限定.比方一个button 上面的text. 你能够设置该text 相对于

在程序中设置android:gravity 和 android:layout_Gravity属性 .

转载自:http://blog.csdn.net/feng88724/article/details/6333809  作者:feng88724 在进行UI布局的时候,可能经常会用到 android:gravity  和 android:layout_Gravity 这两个属性. 关于这两个属性的区别,网上已经有很多人进行了说明,这边再简单说一下. (资料来自网络) LinearLayout有两个非常相似的属性: android:gravity与android:layout_gravity. 他

将SD卡的音频设置为手机铃声后删除,手机铃声没有恢复到默认的问题

1. Android7.0,将存储卡中MP3设置为铃声,删除该MP3后,settings中的铃声没有变化,来电铃声也没有变化. 原因:android7.0的新特性 google 默认如此设计,在选择铃声的过程中,会将删除的铃声进行缓存,在删除铃声后,播放为缓存文件                         1. google 目前将铃声分为actual default ringtone和cache ringtone,前者以ringtone为key将文件uri存储在xml文件里,后者是以st

编写高效的Android代码

为什么在这就意味着没有多少剩余空间给你去浪费了,因此,在你写Androi编写Android程序时要时刻考虑执行的效率,这些系统不是想象中的那么快,并且你还要考虑它电池的续航能力.写程序的时候,要尽可能的使你的代码优化而提高效率. 对于如何判断一个系统的不合理,这里有两个基本的原则: 1.不要做不必要做的事情. 2.尽可能的节省内存的使用. 下面是常用的几点优化建议: 1.尽可能避免创建对象(Object) 因为对象的创建并不是没有代价的,如果你在一个用户界面的循环中分配一个对象,你不得不强制的进

Android RingtoneManager铃声管理

本篇介绍一下跳转到系统铃声选择界面,android中的铃声通过RingtoneManager管理,RingtoneManager管理来电铃声(TYPE_RINGTONE).提示音(TYPE_NOTIFICATION).闹钟铃声(TYPE_ALARM)等,RingtoneManager的常用方法包括: 1.getRingtone()    //获取铃声 2.getDefaultUri()    //获取某一铃声类型的默认铃声 3.setActualDefaultRingtoneUri()  //为

Android RingtoneManager 铃声管理

package com.Aina.Android; 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.os.Environment; import android.view.View