在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();
}

android-铃声的设置与播放的更多相关文章

  1. Android IJKPlayer缓冲区设置以及播放一段时间出错解决方案

    IJKPlayer拖动播放进度会导致重新请求数据,未使用已经缓冲好的数据,所以应该尽量控制缓冲区大小,减少不必要的数据损失. mMediaPlayer.setOption(IjkMediaPlayer ...

  2. 【Android】20.1 音频播放

    分类:C#.Android.VS2015: 创建日期:2016-03-11 一.简介 MediaPlayer:适合每次播放一个音频资源或者音频文件的场合. SoundPool:适合同时播放多个音频资源 ...

  3. android 通过帧动画方式播放Gif动画

    注意:经过本人测试,这个方法很耗内存, 图片一多就崩了.慎用 <1>用工具(photoshop或者FireWorks)将GIF动画图片分解成多个GIF静态图片,然后保存在res\drawa ...

  4. Android开发教程 录音和播放

    首先要了解andriod开发中andriod多媒体框架包含了什么,它包含了获取和编码多种音频格式的支持,因此你几耍轻松把音频合并到你的应用中,若设备支持,使用MediaRecorder APIs便可以 ...

  5. Android系统默认设置

    修改Settings源码,可修改系统设置项,Settings数据被存放于com.android.providers.settings/databases/settings.db中,如果想修改系统启动后 ...

  6. android 随手记 videoview循环播放网络视频 和mediaplayer+sufaceview播放网络视频

    1:videoview循环播放视频 1>xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res ...

  7. audio与video控件/标签的隐藏,iso/Android下自动全屏播放,短暂黑屏问题

    (一)audio音频标签 <audio src="xxx.mp3"></audio> (二)video视频标签 <video src="xx ...

  8. 第二十三篇-ubuntu18.04怎么下载播放器以及如何设置默认播放器

    下载播放器 安装命令:sudo apt-get install smplayer再安装解码器: 安装win32codecs包 如果是intel的CPU 代码: sudo apt-get install ...

  9. Android中webview html5 自动播放本地视频

    MainActivity代码 public class Html5VideoAutoPlay extends Activity { WebView webview = null; @Override ...

随机推荐

  1. div动态加载页面

    div动态加载页面 /* /// method 1 var url="<%=basePath%>/qne.do?p=pessegerCountSet"; $.post( ...

  2. 学习总结--Dom

    节点(每个元素都会有的3个nodeValue nodeType nodeName:) 1 元素节点 nodeName 元素节点名 nodeType 1 nodeValue null或者undefine ...

  3. linux杂谈(十八):DNSserver的配置(一)

    1.DNSserver简单介绍 域名系统(英文:Domain Name System,縮寫:DNS)是因特网的一项服务. 它作为将域名和IP地址相互映射的一个分布式数据库,可以使人更方便的訪问互联网. ...

  4. 实现外网訪问局域网内的SVN——花生壳+visiualSVN实现外网訪问局域网内的SVN(三)

    经过前两篇文章.到眼下为止,我们已经获取了外网域名而且搭建好了SVN server.接下来,我们就总结一下怎样实践实现一下訪问局域网. 1.安装VisiualSVN Server(可见:http:// ...

  5. Java源代码之集合框架(图)

    百度"java 集合"图时.搜出来一张图.图蛮不错的.跟大家分享下.

  6. maven项目运行没问题,但是项目名上有一把×

    原因有以下:你先要自己进行检查,看是出现的什么错误 有红叉,并不代表编译和运行就出错.到Windows—Show view—Problems下看看到底报了什么错.像一些validation出错,项目虽 ...

  7. win7中下mysql-5.6.22免安装配置

    windows下mysql免安装配置 1. 下载mysql免安装压缩包 下载mysql-5.6.22-winx64.zip 解压到本地D:\mysql-5.6.22-winx64 2. 修改配置文件 ...

  8. Python 面向对象 —— 多重继承

    多重继承(一个子类同时继承多个父类),容易造成混乱,即如果两个父类又相同的方法名和变量名时,无法确定继承哪一个. 正因如此,Java 等语言中并不支持多重继承(Java 是单继承多接口).Python ...

  9. 小白算法之路-非确定性多项式(non-deterministic polynomial,缩写NP)

    前端小白的算法之路   时隔多日终于解决了埋在心头的一道难题,霎时云开雾散,今天把一路而来碰到的疑惑和心得都记录下来,也算是开启了自己探索算法的大门. 问题背景 曾经有一个年少轻狂的职场小白,在前端圈 ...

  10. vue 打包成 apk 文件(修改路径)

    第一个坑:文件引用路径 现在项目我们什么都没动,是初始化之后直接打包的状态,打开dist/index.htmnl文件整个网页都是一片空白的. 爬坑: 打开 config文件夹/index.js文件 a ...