`
Aina_hk55HK
  • 浏览: 388180 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

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;
	}
}


<?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>



<?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给app自定义铃声

    由于Android 6.0(API级别23)及以上版本引入了运行时权限管理,因此在运行时还需要检查并请求这些权限: ```java if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != ...

    Android获取系统铃声并选择、保存demo

    首先,我们需要理解Android的音频资源管理。在Android系统中,音频资源分为多种类型,包括铃声、通知声、闹钟声等,它们存储在系统的媒体库中。通过MediaStore类,我们可以访问到这些资源。MediaStore.Audio.Media....

    android查看与设置来电铃声

    在Android平台上,管理和设置来电铃声是一个常见的需求。本文将深入探讨如何查看系统中的所有可用铃声,并详细讲解如何选择和设置来电铃声。我们还会讨论如何创建一个简化且无bug的用户界面,以提供良好的用户体验。...

    Android 源码 选择&播放&暂停铃声

    在Android系统中,选择、播放和暂停铃声是常见的功能,尤其对于个性化用户界面和多媒体应用至关重要。本文将深入探讨如何在Android应用中实现这些功能,主要涉及以下几个关键知识点: 1. **媒体库访问**: Android...

    Android铃声设置软件源代码

    1. **铃声资源管理**:在Android中,铃声通常存储在`/res/raw`或`/media/ringtone`目录下,是可打包在应用内的音频文件。开发者可以通过`RingtoneManager`类来获取和操作可用的铃声列表。例如,`RingtoneManager.get...

    android手机设置自己喜欢的铃声

    首先,Android系统提供了一个方便的界面供用户管理手机的铃声。用户可以通过“设置”应用中的“声音与振动”选项来更改各种类型的铃声。然而,如果想要设置的铃声不在系统预设的列表中,就需要将自定义的音频文件...

    android 铃声设置相关源码

    在Android系统中,铃声设置涉及到多个层次的代码实现,包括用户界面交互、音频资源管理、系统服务调用等。以下是对"android 铃声 设置 相关 源码"这一主题的详细解析: 1. **用户界面**: - `AndroidManifest.xml`...

    Android源码——手机铃声软件源码.zip

    为了实现铃声的设置,源码会涉及到系统的音频设置API,如RingtoneManager,它允许应用设置系统默认的来电、闹钟或通知铃声。同时,源码可能包含对媒体库的更新逻辑,当用户选择新的铃声时,会更新到系统媒体库,确保...

    Android设置铃声实现代码

    总的来说,设置Android设备的铃声涉及到对音频文件的管理、媒体库的更新以及系统铃声设置的修改。通过理解并运用这些知识点,开发者可以创建一个功能完善的自定义铃声设置功能,为用户提供更丰富的体验。

    Android试手——Dota铃声

    总结来说,这篇“Android试手——Dota铃声”教程涵盖了Android应用中处理音频资源的基本步骤,包括资源管理、音频播放以及设置系统铃声的方法。通过这个实例,开发者不仅可以学习到Android多媒体编程的技巧,还能...

    Android中notification通知的Demo——震动,铃声,Led灯闪烁

    "Android中notification通知的Demo——震动,铃声,Led灯闪烁"这个主题主要涉及如何创建具有特殊反馈效果的通知,如震动、铃声和Led灯闪烁。以下是对这些知识点的详细解释: 1. **Notification的创建**: 创建一个...

    获取手机铃声

    在智能手机的世界里,个性化设置是用户...总结来说,获取手机所有铃声涉及Android的媒体库操作、权限管理以及音频播放和设置。开发者需要对Android系统结构和API有深入的理解,才能提供一个用户友好的铃声管理功能。

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 远程下载桌面背景图案——URLConnection与setWallpaper()搭配 8.11 将手机文件上传至网站服务器——模拟HTTPFORM的POSTACTION 8.12 移动博客...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 远程下载桌面背景图案——URLConnection与setWallpaper()搭配 8.11 将手机文件上传至网站服务器——模拟HTTPFORM的POSTACTION 8.12 移动博客...

    Android仿苹果通话界面源码.zip

    - **RingtoneManager**:可能用于播放来电铃声,或者处理其他与声音相关的功能。 - **AudioManager**:控制音量和音频焦点,确保通话过程中的音频体验。 7. **线程管理**: - **AsyncTask**或`Handler/Looper`:...

    Android手机小闹钟源码.zip

    6. **多媒体处理**:为了播放闹钟铃声,开发者需要了解如何访问和控制Android的音频系统,可能涉及MediaPlayer或RingtoneManager类。 7. **权限管理**:在Android中,应用需要获取特定的权限才能访问硬件(如震动器...

    Android4.0.3中的提示音

    4. **权限管理**:应用如果需要播放提示音,需要在AndroidManifest.xml中声明`android.permission.WRITE_SETTINGS`权限,以修改系统设置,或者`android.permission.MODIFY_AUDIO_SETTINGS`权限,以控制音频输出。...

    android开发技巧总汇android开发培训-教师必备.docx

    通过`RingtoneManager`和`MediaStore.Audio.Media`类,可以更改设备的默认来电铃声。 14. 开机自启动 注册BroadcastReceiver监听`ACTION_BOOT_COMPLETED`广播,可在设备启动完成后执行特定任务。 15. 线程与子线程...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 远程下载桌面背景图案——URLConnection与setWallpaper()搭配 8.11 将手机文件上传至网站服务器——模拟HTTPFORM的POSTACTION 8.12 移动博客...

    Android来电拦截及拦截后的提示音源码.zip

    然后,关于拦截后的提示音,Android允许自定义铃声。你可以通过`RingtoneManager`来设置。首先,你需要在应用的资源文件夹下放入提示音文件,例如`res/raw`目录。然后,获取提示音的Uri,并用`RingtoneManager`播放...

Global site tag (gtag.js) - Google Analytics