Android RingtoneManager 铃声管理

Posted brave-sailor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 RingtoneManager 铃声管理的主要内容,如果未能解决你的问题,请参考以下文章

Android RingtoneManager 铃声管理

如何在 Android 中获取当前铃声?

在 LG 擎天柱上使用 RingtoneManager.getRingtone

使用android默认闹钟声音列表

三星Android 7中未显示通知图标

Android 呼叫通知 - 单击时停止计时器