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

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;

时间: 2024-10-10 05:00:23

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

[Android应用]音乐播放器

Service是一个不可见的进程在后台执行. Android中的服务,它与Activity不同,它是不能与用户交互的,不能自己启动的,运行在后台的程序,如果我们退出应用时,Service进程并没有结束,它仍然在后台运行,例如我们打开一个音乐播放器来听音乐,在听音乐的同时也想做下其它的事情,比如上网聊Q.或者上网浏览新闻之类的事情.这样的话,我们就需要用到Service服务了.下面我们以一个简单的音乐播放器的实例来说明下Service的生命周期和Service的使用. 下面是音乐播放器Demo的程

Android实现音乐播放器(一)

Graphical User Interface 本篇文章记录了我实现Android简单音乐播放器的过程,(一)中介绍了怎么构建音乐播放器的前端页面.首先大家看一下,界面最后是这样的(界面有点粗陋) 音乐文件列表是从SD卡中读取出来的. 首先我们先在Layout里面创建Music Player的GUI,diagram如下图所示: 根据diagram我们在activity_main.xml写出如下代码: <LinearLayout xmlns:android="http://schemas.

android调用音乐播放器,三种方

小弟想请问一下,如何在自己写的程序中调用系统的音乐播放器呢. 我在google上搜索了,主要是有两种方法,但是都不是我想要的. 第一种是,使用mp3音乐文件的uri,和intent,进行调用,但是这种是针对某一首歌曲的播放使用的. /** * 播放指定名称的歌曲 * @param audioPath 指定默认播放的音乐 */ public static void playAudio(String audioPath){ Intent mIntent = new Intent(); mIntent

安卓音乐播放器中歌词同步问题

音乐文件是.lrc格式的,以一首歌曲为例, [ti:回忆的沙漏][ar:邓紫棋][al:G.E.M.][by:][offset:0][00:02.50]回忆的沙漏 - G.E.M. 邓紫棋[00:04.62]词:庭竹[00:05.72]曲:G.E.M.[00:15.03]拼图一片片失落[00:18.56]像枫叶的冷漠[00:21.87]墙上的钟[00:23.79]默默数着寂寞[00:29.30]咖啡飘散过香味[00:33.06]剩苦涩陪着我[00:36.68]想念的心[00:39.44]埋葬我在

Android——简单音乐播放器

使用MediaPlayer做的简单音乐播放器,更多内容请到百度经验查看   http://jingyan.baidu.com/article/60ccbceb63452364cab197f1.html <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:l

Android开发本地及网络Mp3音乐播放器(十八)新下载歌曲加载准备SdcardSearchToList

扫描本地文件加载到item 不限于应用到音乐播放器,其他Android工程,也可以使用SdcardSearchToList 其他Android工程也可以使用,我现在做了很小的Demo 后续将博文,将在播放器里,加入这一功能,来实现刚下载好的音乐,加载到播放器 这个Demo的源码下载: http://download.csdn.net/album/detail/3105 名称为:SdcardSearchToList,如果没有显示,可能还没有审核完成 不下载也可以,因为只有1个java文件,2个xm

AIDL在音乐播放器中的应用

一.AIDL简介 由于每个应用程序都运行在自己的进程空间,并且可以从应用程序UI运行另一个服务进程,而且经常会在不同的进程间传递对象.在Android平台,一个进程通常不能访问另一个进程的内存空间,所以要想访问的话,需要将对象分解成操作系统可以理解的基本单元,并且有序的通过进程边界.通过代码来实现这个数据传输过程是冗长,但是Android为开发者提供了AIDL工具来处理这项工作. AIDL (Android Interface Definition Language)是一种IDL语言,用于生成可

Xamarin.Android开发音乐播放器

最近.Net开源着实让C#火了一把,好久就听说Mono for Android一直没静下心来看,上周末找来看看,确实不错,前台界面axml编写跟Java安卓开发毫无区别,后台用C#其实很多windows下的方法都可以用,做一个安卓音乐播放器,主要实现音乐播放,上一曲下一曲,音乐播放列表,随机播放,扫描SD卡内所有音乐. 先show一组界面啊,话说有图有真相啊: 项目结构如图: Lrc是歌词处理方法 MusicService是安卓服务播放音乐,服务Broadcast,以及界面接收Receiver

android版音乐播放器----卡拉OK歌词实现(二)

相信大家都看过酷狗的音乐播放器,特别是酷狗的滚动歌词实现起来,效果特别好.我自己也尝试看了一下酷狗的歌词文件,发现是加密的,根本就看不了,所以只能是从目前开源的歌词文件出发了.我自己选择的是ksc歌词文件. 要实现歌词的功能,那首先就是要先认识一下ksc歌词的文件与普通的lrc歌词有那方面的区别? 当然,这里我从网上找了一个文档,看了文档里面的介绍,大家大概就会明白两都的区别. http://wenku.baidu.com/link?url=Ga4ESBrytlx3qUoxX5ApHbFIZro