AudioProfile,情景模式,多卡设置铃声
系统开启Multi_ringtone_support。进入菜单--音乐--歌曲列表--长按一首歌曲选择设为手机铃声,提示已成功设置,但是进入设置中情景模式查看,仍然是默认铃声。打电话后铃声还为默认铃声。
修改:
AudioProfileService.java
mRingtoneObserver = new ContentObserver(new Handler())函数里面的
case GENERAL:
case OUTDOOR:
                        if (mExt.shouldSyncGeneralRingtoneToOutdoor()) {
                            // If ringtone has been changed and the active profile is general
                            // or outdoor profile, synchronize the current system ringtone
                            // to both profiles.
                            if (isPassiveChange && (!mResetFlag)) {
                                String generalKey = mPredefinedKeys.get(Scenario.GENERAL.ordinal());
                                String outdoorKey = mPredefinedKeys.get(Scenario.OUTDOOR.ordinal());
                                getProfileState(generalKey, mSimId).mRingerStream = systemUri;
                                getProfileState(outdoorKey, mSimId).mRingerStream = systemUri;
                                persistRingtoneUriToDatabase(generalKey, AudioProfileManager.TYPE_RINGTONE, mSimId, systemUri);
                                persistRingtoneUriToDatabase(outdoorKey, AudioProfileManager.TYPE_RINGTONE, mSimId, systemUri);
                                Log.d(TAG, "Ringtone changed by other app in non-silent "
                                        + "profile, synchronize to active profile: new uri = " + systemUri);
                            } else {
                                Log.d(TAG, "Ringtone changed by itself, do nothing!");
                            }
                            break;
                        }
改为如下的样子
                    case GENERAL:
                    case OUTDOOR:
                        if (mExt.shouldSyncGeneralRingtoneToOutdoor()) {
                            // If ringtone has been changed and the active profile is general
                            // or outdoor profile, synchronize the current system ringtone
                            // to both profiles.
                            if (isPassiveChange && (!mResetFlag)) {
                                //M: for setringtoneformprofile or from 3rd app
                                if (FeatureOption.MTK_MULTISIM_RINGTONE_SUPPORT) {
                                    // add to get  selected SIM id                     
                                    List<SIMInfo> simList = SIMInfo.getInsertedSIMList(mContext);
                                    int simNum = simList.size();
                                    Log.d(TAG, "simList.size() == " + simNum);                        
                                    long simId = -1;
                                    for (int i = 0; i < simNum; i++) {
                                        simId = simList.get(i).mSimId;
                                        
                                        String generalKey = mPredefinedKeys.get(Scenario.GENERAL.ordinal());
                                        String outdoorKey = mPredefinedKeys.get(Scenario.OUTDOOR.ordinal());
                                        getProfileState(generalKey, simId).mRingerStream = systemUri;
                                        getProfileState(outdoorKey, simId).mRingerStream = systemUri;
                                        persistRingtoneUriToDatabase(generalKey, AudioProfileManager.TYPE_RINGTONE, simId, systemUri);
                                        persistRingtoneUriToDatabase(outdoorKey, AudioProfileManager.TYPE_RINGTONE, simId, systemUri);
                                        Log.d(TAG, "Ringtone changed by other app in non-silent "
                                                + "profile, synchronize to active profile: new uri = " + systemUri);
                                        Log.d(TAG,"mRingtoneObserver simId " + simId);
                                    }
                                }else {
                                    String generalKey = mPredefinedKeys.get(Scenario.GENERAL.ordinal());
                                    String outdoorKey = mPredefinedKeys.get(Scenario.OUTDOOR.ordinal());
                                    getProfileState(generalKey, mSimId).mRingerStream = systemUri;
                                    getProfileState(outdoorKey, mSimId).mRingerStream = systemUri;
                                    persistRingtoneUriToDatabase(generalKey, AudioProfileManager.TYPE_RINGTONE, mSimId, systemUri);
                                    persistRingtoneUriToDatabase(outdoorKey, AudioProfileManager.TYPE_RINGTONE, mSimId, systemUri);
                                    Log.d(TAG, "Ringtone changed by other app in non-silent "
                                            + "profile, synchronize to active profile: new uri = " + systemUri);
                                }
                                
                          } else {
                                Log.d(TAG, "Ringtone changed by itself, do nothing!");
                           }
                            break;
                        }
同样的,对于custom case 也要处理
Case CUSTOM:
if (isPassiveChange && (!mResetFlag )){
activeState.mRingerStream = systemUri;
persistRingtoneUriToDatabase(mActiveProfileKey,AudioProfileManager.TYPE_RINGTONE,mSimId,systemUri);
Log.d(…);
} else {
Log.d(…);
}
break;
改为,
Case CUSTOM:
if (isPassiveChange && (!mResetFlag )){
    if (FeatureOption.MTK_MULTISIM_RINGTONE_SUPPORT){
// add to get  selected SIM id                     
                                    List<SIMInfo> simList = SIMInfo.getInsertedSIMList(mContext);
                                    int simNum = simList.size();
                                    Log.d(TAG, "simList.size() == " + simNum);                        
                                    long simId = -1;
                                    for (int i = 0; i < simNum; i++) {
                                        simId = simList.get(i).mSimId;
                            persistRingtoneUriToDatabase(mActiveProfileKey,AudioProfileManager.TYPE_RINGTONE, simId,systemUri);
}
} else {
activeState.mRingerStream = systemUri;
persistRingtoneUriToDatabase(mActiveProfileKey,AudioProfileManager.TYPE_RINGTONE,mSimId,systemUri);
Log.d(…);
}
} else {
Log.d(…);
}
break;

android 在音乐播放器中设置一首歌曲为来电铃声,设置不起作用相关推荐

  1. android 音乐播放器中播放模式的设计

    在音乐播放器中,播放模式一般放在音乐播放完毕后自动识别,如下给出逻辑代码,可根据需要添加合适的代码 public static final int ALL = 0;//全部循环 public stat ...

  2. Android开发音乐播放器

    音乐播放器中综合了以下内容: SeekBar.ListView.广播接收者(以代码的形式注册Receiver).系统服务.MediaPlayer 实现的功能: 1.暂停/播放.下一首/上一首,点击某一 ...

  3. 三款Android平台音乐播放器多方位对比

    音乐播放器作为重要的娱乐工具,在PC端异常重要,在移动端同样如此.移动端的音乐播放器很多,巨头们纷纷在这个领域布局,腾讯百度等均拥有各自的移动端音乐播放器.爱好音乐的机友们也面临较多的选择. 小编在这 ...

  4. 音乐播放器android版,Android版音乐播放器

    音乐播放器是一个非常常见的应用,这篇博客就是介绍如何制作一个简单的音乐播放器,这款音乐播放器具有以下的功能:播放歌曲.暂停播放歌曲..显示歌曲的总时长.显示歌曲的当前播放时长.调节滑块可以将歌曲调节到 ...

  5. Android 自定义音乐播放器实现

    Android自定义音乐播放器 一:首先介绍用了哪些Android的知识点: 1 MediaPlayer工具来播放音乐 2 Handle.因为存在定时任务(歌词切换,动画,歌词进度条变换等)需要由Ha ...

  6. android 小型音乐播放器(实现播放、下一首、上一首、自动播放、随机播放按钮、当前播放歌曲界面)

    该文章主要针对 android 的音乐播放器软件进行简单的功能添加:播放.断点播放.停止.上一曲.下一曲.随机播放.显示当前播放歌曲(后续会为当前显示的播放添加动画): 软件开发流程: 1.先向内存卡 ...

  7. Android Car音乐播放器分析

    Android Car音乐播放器分析 概述 Android Car系统音乐路径是packages/apps/Car/Media,应用名称是CarMediaApp,包名是com.android.car. ...

  8. 音乐播放器中的跳动的平衡器

    完整的音乐Demo我放在资源上,利于解析原理.地址:http://download.csdn.net/detail/zhangli_/9421671 主要用到的平衡器的工具类代码: package c ...

  9. android 音乐播放器 获取sd卡所有音乐文件,Android Studio音乐播放器无法读取SD卡,只有内部存储器...

    我很抱歉,如果这原来是一个愚蠢的问题,它可能会成为一个快速修复,但我只是无法弄清楚.我在android studio中创建了音乐播放器,并且没有任何sdcard上的歌曲不会显示在列表视图中,只有内部内 ...

最新文章

  1. 面试必备的C++知识(未完待续)
  2. [NOIP2009] 最优贸易 (最短路,分层图)
  3. 基于注解的Spring AOP的配置和使用--转载
  4. Mysql主从和redis集群哪个好_Redis的三种模式:主从、哨兵、集群
  5. 如何使用CSS创建巧妙的动画提示框
  6. djano 模型查询
  7. nodejs 实践:express 最佳实践(六) express 自省获得所有的路由
  8. 数据结构与算法——栈、队列、堆汇总整理
  9. mysql查询结果作为附件_python3+mysql查询数据并通过邮件群发excel附件
  10. python twisted应用_如何通过Python(而不是通过Twisted)运行Twisted应用程序?
  11. bzoj 3399: [Usaco2009 Mar]Sand Castle城堡
  12. ubuntu安装python3.6_Ubuntu16.04下安装python3.6.4详细步骤
  13. 不用编写客户端调试WebServices
  14. PDF 文件如何转换从可以编辑的文本和word
  15. Microbiome:中国科学家完成鸡肠道微生物宏基因集的构建(张和平、魏泓、秦楠点评)...
  16. pandas实现股票日线数据转周线,月线等
  17. 洁厕灵的工作原理、使用方法和危害 //2021-1-27
  18. 第三方开发者服务平台汇总
  19. STM32工程文件的建立以及Keil软件的基本设置和修改
  20. 罗胖的文字墙是如何制作的?

热门文章

  1. Markdown基础学习
  2. 教育部启动本科毕业论文抽检试点:比例不低于2%,涉抄袭剽窃的撤销学位
  3. 服务器2012系统评估版,解决windows server2012 评估版本过期,系统会自动关机
  4. JavaScript中var、let和const的区别
  5. 智慧医疗信息化系统的层次结构
  6. Windows Store apps开发[76]企业部署Windows 8 Store 风格应用
  7. 网络环境下连接SQL Server和Oracle 19c的方法
  8. 计算几何基础知识 叉乘、点乘、点到直线距离、叉积方向法等
  9. idea使用正则匹配汉字
  10. vue2安装插件失败方法