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; import android.widget.Button; public class Test extends Activity { /** Called when the activity is first created. */ private Button btn1 = null; private Button btn2 = null; private Button btn3 = null; private static final int Ringtone = 0; private static final int Alarm = 1; private static final int Notification = 2; private static final String FileRingtone = Environment .getExternalStorageDirectory() + "/music/ringtones"; private static final String FileAlarm = Environment .getExternalStorageDirectory() + "/music/alarms"; private static final String FileNotification = Environment .getExternalStorageDirectory() + "/music/notifications"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn1 = (Button) this.findViewById(R.id.Button01); btn2 = (Button) this.findViewById(R.id.Button02); btn3 = (Button) this.findViewById(R.id.Button03); btn1.setOnClickListener(new Button.OnClickListener() { public void onClick(View arg0) { // TODO Auto-generated method stub if (isFile(FileRingtone)) { // 打开系统铃声设置 Intent intent = new Intent( RingtoneManager.ACTION_RINGTONE_PICKER); // 设置类型为来电 intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE); // 设置显示的标题 intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置来电铃声"); startActivityForResult(intent, Ringtone); } } }); btn2.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub if (isFile(FileAlarm)) { 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, Alarm); } } }); btn3.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub if (isFile(FileNotification)) { 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, Notification); } } }); } /** * 设置铃声之后的回调函数 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode != RESULT_OK) { return; } else { // 得到我们选择的铃声 Uri uri = data .getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); if (uri != null) { switch (requestCode) { case Ringtone: RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, uri); break; case Alarm: RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM, uri); break; case Notification: RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_NOTIFICATION, uri); break; default: break; } } } } /** * 判断文件是否存在,不存在则创建. * * @param path * @return */ private boolean isFile(String path) { boolean b = false; File f = new File(path); if (f.exists()) { b = true; } else { if (f.mkdirs()) { b = true; } else { b = false; } } return b; } } Java代码 收藏代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:text="设置来电铃声" android:id="@+id/Button01" android:layout_width="fill_parent" android:layout_height="wrap_content"> </Button> <Button android:text="设置闹钟铃声" android:id="@+id/Button02" android:layout_width="fill_parent" android:layout_height="wrap_content"> </Button> <Button android:text="设置通知铃声" android:id="@+id/Button03" android:layout_width="fill_parent" android:layout_height="wrap_content"> </Button> </LinearLayout> Java代码 收藏代码 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.Aina.Android" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Test" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> </manifest>
分类:
android提高篇
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2016-04-13 swift:自定义UICollectionViewFlowLayout
2016-04-13 Swift Core Data 图片存储与读取Demo
2016-04-13 iOS 在 Xcode 中重命名项目名称
2015-04-13 Android 之窗口小部件详解--App Widget
2015-04-13 Android 之窗口小部件高级篇--App Widget 之 RemoteViews - 跨到对岸去
2014-04-13 android自定义TabWidget
2014-04-13 Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信