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>  
时间: 2024-10-23 07:33:44

Android RingtoneManager 铃声管理的相关文章

Android RingtoneManager铃声管理

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

如何编写程序设置Android来电铃声

我们在拿到新手机后通常会为其设置来年铃声,那么怎样通过代码来设置Android来电铃声,本文就为大家实例讲解下. 1.如果读到的是音频文件路径,需要先将音乐文件插入到多媒体库. Java代码 //设置--铃声的具体方法 public void setMyRingtone(String path) { File sdfile = new File(path); ContentValues values = new ContentValues(); values.put(MediaStore.Med

Android的软件包管理服务PackageManagerService源码分析

Android系统下的apk程序都是通过名为PackageManagerService的包管理服务来管理的.PacketManagerService是安卓系统的一个重要服务,由SystemServer启动,主要实现apk程序包的解析,安装,更新,移动,卸载等服务.不管是系统apk(/system/app),还是我们手工安装上去的,系统所有的apk都是由其管理的. 以android 4.0.4的源码为例,android4.0.4/frameworks/base/services/java/com/

android 进程/线程管理(四)续----消息机制的思考(自定义消息机制)

继续分析handler 和looper 先看看handler的 public void dispatchMessage(Message msg) { if (msg.callback != null) { handleCallback(msg); } else { if (mCallback != null) { if (mCallback.handleMessage(msg)) { return; } } handleMessage(msg); } } 所以消息的处理分层三种,就是 1.传入一

Android Dalvikvm 内存管理理解

网上很多文件介绍了 jvm 内存管理的理论,但在 Dalvikvm 中,究竟是如何实现的. 这几天猛看了 Dalvikvm 的源代码,说一下我的理解: 在大层面上讲跟理论一样,jvm 把内存分成了一些区, 关于各区的说明参见. http://blog.csdn.net/lengyuhong/article/details/5953544 对于hello world 这样简单程序,发现dalvikvm也就用了一个heap, 就是Eden区了. dalvikvm 使用 mmap 创建共享内存(堆是多

Android系统下载管理DownloadManager功能介绍及使用示例

http://www.trinea.cn/android/android-downloadmanager/ 本文主要结合源码介绍Android系统下载管理DownloadManager的强大功能及使用.这是许久来准备写的一系列博客,这篇主要介绍DownloadManager的功能和示例,后面还有两篇会介绍下载管理的底层设计(DownloadProvider.DownloadManager.DownloadManagerUI).下载管理如何进行功能增强和bug修改. 示例APK可从这些地址下载:G

Android 内存溢出管理与测试

今天发现正在做的项目,时不时的会报错:dalvikvm heap out of memory on a 7458832-byte allocation (堆分配的内存溢出) 为什么会内存溢出呢?我以前从未遇见这种情况.后来在网上查了查资料,还是挺多的. 怎么说呢?因为Android开发基本上是以java语言为基础,那么程序是在java虚拟机上运行的.而虚拟机不允许单个程序中的Bitmap占用超过8M的内存,从报错的日志可以看出:7458832-byte大约就是7M多的样子,基本吻合上述数据.在我

android快捷方式shortcut 管理

如下58同城快捷方式的效果: 下面是添加桌面快捷方式: /** * 启动某个activity是需要在manifest里面定义 <intent-filter> <action * android:name="android.intent.action.MAIN" /> </intent-filter> */ private void addShortCut() { // 安装的Intent Intent shortcut = new Intent(&q

android 的通知管理

1在context里定义通知管理器(NotificationManager) NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE); 2.定义和创建通知(Notification),并且设置相应的参数:通知标题,通知内容,通知时间,通知要调用的(灯光,声音,震动等..) Notification notification = ne