• RingtoneManager-获得系统当前的铃声


    bt1 = (Button) findViewById(R.id.bt1);
            bt2 = (Button) findViewById(R.id.bt2);
            bt3 = (Button) findViewById(R.id.bt3);
            bt2.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View arg0) {
                    //获得手机提示音
                    if (mNotificationUri_notify == null) {
                        mNotificationUri_notify = RingtoneManager
                                .getActualDefaultRingtoneUri(MainActivity.this,
                                        RingtoneManager.TYPE_NOTIFICATION);
                    }
                    if (mNotificationUri_notify != null && mRingtone_notify == null) {
                        String string = mNotificationUri_notify.toString();
                        tv.setText(string);
                        mRingtone_notify = RingtoneManager.getRingtone(
                                getApplicationContext(), mNotificationUri_notify);
    
                    }
    
                    if (mRingtone_notify != null) {
                        if (mRingtone_notify.isPlaying()) {
                            mRingtone_notify.stop();
                        } else {
                            mRingtone_notify
                                    .setStreamType(AudioManager.STREAM_NOTIFICATION);
                            mRingtone_notify.play();
                        }
                    }
                }
            });
            bt1.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View arg0) {
                    //获得手机来电铃声
                    if (mNotificationUri_telephone == null) {
                        mNotificationUri_telephone = RingtoneManager
                                .getActualDefaultRingtoneUri(MainActivity.this,
                                        RingtoneManager.TYPE_RINGTONE);
                    }
    
                    if (mNotificationUri_telephone != null
                            && mRingtone_telephone == null) {
                        mRingtone_telephone = RingtoneManager
                                .getRingtone(getApplicationContext(),
                                        mNotificationUri_telephone);
                    }
    
                    if (mRingtone_telephone != null) {
                        if (mRingtone_telephone.isPlaying()) {
                            mRingtone_telephone.stop();
                        } else {
                            mRingtone_telephone
                                    .setStreamType(AudioManager.STREAM_RING);
                            mRingtone_telephone.play();
                        }
                    }
    
                }
            });
            bt3.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View arg0) {
                    if (mNotificationUri_alarm == null) {
                        //获得手机闹钟铃声
                        mNotificationUri_alarm = RingtoneManager
                                .getActualDefaultRingtoneUri(MainActivity.this,
                                        RingtoneManager.TYPE_ALARM);
                    }
                    if (mNotificationUri_alarm != null && mRingtone_alarm == null) {
                        mRingtone_alarm = RingtoneManager.getRingtone(
                                getApplicationContext(), mNotificationUri_alarm);
                    }
    
                    if (mRingtone_alarm != null) {
                        if (mRingtone_alarm.isPlaying()) {
                            mRingtone_alarm.stop();
                        } else {
                            mRingtone_alarm
                                    .setStreamType(AudioManager.STREAM_ALARM);
                            mRingtone_alarm.play();
                        }
                    }
    
                }
    
            });
    复制代码

    上面的代码就是获得手机三个铃声的代码。

    其实,获得手机铃声的操作也很简单。

    它主要就涉及两个类

    1.RingtoneManager-铃声管理类

    2.Ringtone-铃声操作类

    基本上就是三个步骤

    1.获得Uri

    获得Uri的方法,需要传入一个参数 RingtoneManager.TYPE_NOTIFICATION(STREAM_NOTIFICATION..)就是

    这个参数决定了我们获得的是何种提示音

    2.获得Ringtone

    获得它的方法需要把第一步得到的Uri传进来,就可以得到相应的铃声了

    3.操作铃声

    直接只用play() stop()控制铃声的停止跟播放。

    上面有一个方法

    mRingtone_alarm.setStreamType(AudioManager.STREAM_ALARM);

    说是设置音频流的,这个音频流到底是什么东西,也不懂,就看到有人说

     Android Framework的音频子系统中,每一个音频流对应着一个AudioTrack类 的一个实例,每个AudioTrack会在创建时注册到AudioFlinger中,由AudioFlinger把所有的AudioTrack进行混合 (Mixer),然后输送到AudioHardware中进行播放。AudioTrack和AudioFlinger的通信机制通 常,AudioTrack和AudioFlinger并不在同一个进程中,它们通过android中的binder机制建立联系。

    自己查了下资料,感觉应该就是控制什么音频解析的吧

  • 相关阅读:
    递归
    linq语法
    客户端(winform)更新
    c# 实时监控数据库 SqlDependency
    C# MVC NPOI导出
    mui手机图片压缩上传+C#
    vs连接Oracle 客户端库时引发 BadImageFormatException
    一对多的子表数据利用游标循环更新主表的数据
    数据库的恢复数据语句
    mysql三-2:数据类型
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/6704962.html
Copyright © 2020-2023  润新知