搞个这么个小东西费了4个小时,还好问题解决了。
package rocka.media.ringtong;
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.view.View.OnClickListener;
import android.widget.Button;
public class Media_RingTongActivity extends Activity {
//定义三个按钮
private Button mRingtongButton;
private Button mAlarmButton;
private Button mNotificationButton;
//定义类型
private static final int RingtongButton=0;
private static final int AlarmButton=1;
private static final int NotificationButton=2;
//铃声文件夹
private String strRingtongFolder="/sdcard/media/ringtones";
private String strAlarmFolder="/sdcard/media/alarms";
private String strNotificationFolder="/sdcard/media/notifications";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mRingtongButton=(Button)findViewById(R.id.myRingtongButton);
mRingtongButton.setOnClickListener(new myRingtongButtonListener());
mAlarmButton=(Button)findViewById(R.id.myAlarmButton);
mAlarmButton.setOnClickListener(new myAlarmButtonListener());
mNotificationButton=(Button)findViewById(R.id.myNotificationButton);
mNotificationButton.setOnClickListener(new myNotificationButtonListener());
}
//设置来电铃声监听器
private class myRingtongButtonListener implements OnClickListener{
@Override
public void onClick(View v) {
if(isFolder(strRingtongFolder)){
//打开系统铃声设置
Intent intent=new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI, true);
//类型为来电ringtong
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE);
//设置显示的题目
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置来电的铃声");
//当设置完成之后返回到当前的activity
startActivityForResult(intent, RingtongButton);
}
}
}
//设置闹钟铃声监听器
private class myAlarmButtonListener implements OnClickListener{
@Override
public void onClick(View v) {
if(isFolder(strAlarmFolder)){
Intent intent=new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALARM);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置闹铃铃声");
startActivityForResult(intent, AlarmButton);
}
}
}
//设置通知铃声监听器
private class myNotificationButtonListener implements OnClickListener{
@Override
public void onClick(View v) {
if(isFolder(strNotificationFolder)){
Intent intent=new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置通知铃声");
startActivityForResult(intent, NotificationButton);
}
}
}
//检查是否存在指定的文件夹,如果不存在就创建
private boolean isFolder(String strFolder){
boolean tmp = false;
File f1 = new File(strFolder);
if (!f1.exists())
{
if (f1.mkdirs())
{
tmp = true;
}
else
{
tmp = false;
}
}
else
{
tmp = true;
}
return tmp;
}
//设置铃声之后的回调函数
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode!=RESULT_OK){
return;
}
switch(requestCode){
case RingtongButton:
try {
//得到我们选择的铃声
Uri pickedUri=data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
//将我们选择的铃声选择成默认
if(pickedUri!=null){
RingtoneManager.setActualDefaultRingtoneUri(Media_RingTongActivity.this, RingtoneManager.TYPE_RINGTONE, pickedUri);
}
} catch (Exception e) {
e.printStackTrace();
}
break;
case AlarmButton:
try {
//得到我们选择的铃声
Uri pickedUri=data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
//将我们选择的铃声选择成默认
if(pickedUri!=null){
RingtoneManager.setActualDefaultRingtoneUri(Media_RingTongActivity.this, RingtoneManager.TYPE_ALARM, pickedUri);
}
} catch (Exception e) {
e.printStackTrace();
}
break;
case NotificationButton:
try {
//得到我们选择的铃声
pickedUri=data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
//将我们选择的铃声选择成默认
if(pickedUri!=null){
RingtoneManager.setActualDefaultRingtoneUri(Media_RingTongActivity.this, RingtoneManager.TYPE_NOTIFICATION, pickedUri);
}
} catch (Exception e) {
e.printStackTrace();
}
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
}
1.布局文件就是三个按钮,没什么好说的了.
2.在真机盖世兔上测试了一下,可以运行,在模拟器测试的童鞋要注意了,每次把音频文件push到sdcard中得时候,必须重启模拟器,模拟器才会应用设置,不然是检索不到的哦,这点我后面才发现的.
3.系统的原始声音存放在/system/media/audio/文件中
4.最后一点不要忘记给应用程序加权限了:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
- 大小: 29 KB
分享到:
相关推荐
mediacoder常规选项设置,保证转码出来的视频小而清晰
Windows Media Player 开发用的SDK 。可以开发 Media Player Active X
《Flash Media Server基本的服务器设置》
Laravel开发-media 不工作的媒体管理器
visual studio2008 开发的media
版本:Microsoft Visual Studio 2008 上开发 实现功能: 1.选择文件播放 2.设置播放器的属性 3.批量添加文件 4.批量将列表中的文件加到播放器列表 5.显示当前播放的文件,变背景色 6.本程序支持Windows Media Player...
C# 开发的media player
Windows Media Services集成开发技术,更多免费资源下载:http://download.csdn.net/user/gouyue
Laravel开发-media-manager Laravel媒体经理
Media SDK 是一个软件开发库,包含解码、视频处理和编码三大模块。利用 Intel 平台的 硬件加速能力, Media SDK 为低端用户提供了优秀的高清视频质量,极大的降低了播放高 清视频的硬件门槛。此外,强大的视频 APIs 也...
mediaFoundation开发文档.pdf
VC开发的暴风影音MediaPlayerClassic源码 VC开发的暴风影音MediaPlayerClassic源码 VC开发的暴风影音MediaPlayerClassic源码 VC开发的暴风影音MediaPlayerClassic源码VC开发的暴风影音MediaPlayerClassic源码 VC开发...
MediaCoder行业版一款针对VOD及KTV视频点播行业开发的,用于转换和处理带有多音轨内容的视频节目的软件。它具备业界领先的视频编码引擎,在高性能转码的同时保持高画质,并通过丰富的视频滤镜增强画面视觉效果。作为...
这是微软公司基于 DirectShow 基础之上开发的媒体播放软件。它提供最广泛,最具可操作性,最方便的多媒体内容。你可以播放更多的文件类型,包括:Windows Media (即以前称为NetShow的), ASF, MPEG-1, MPEG-2, WAV, AVI...
包含要安装media的各个模块的安装包,并附加安装的步骤。
IIS Media Services 4.1
通过mediacoder 可以对音频视频进行批量、单个、预览转码操作,支持目前主流所有操作,是学习的神器
Pro Android学习系列中的media frameworks小例子。具体见http://blog.csdn.net/flowingflying/article/details/6212512