1, turn on profile settings The dual-card ringtones cannot be set in the Feature:mtk_multisim_roingtone_support,music. Want to be able to add menu "Us as sim1/sim2 ringtone" in music
1,string.xml, add a new string ringtone_as_sim1_menu and Ringtone_as_sim2_menu:
<string name= "Ringtone_as_sim1_menu" >use as SIM1 ringtone</string>
<string name= "Ringtone_as_sim2_menu" >use as SIM2 ringtone</string>
2,trackbrowseractivity.java:
1), add:
Import Com.mediatek.telephony.SimInfoManager;
Import com.mediatek.common.featureoption.FeatureOption;
2), menu add Us as SIM1 ringtone/us as SIM2 ringtone according to the card situation, referring to modifications between//start Modify and//end Modify
public void Oncreatecontextmenu (ContextMenu menu, view view, Contextmenuinfo Menuinfoin) {
....
int isdrm = 0;
if (MUSICFEATUREOPTION.IS_SUPPORT_DRM) {
ISDRM = Mtrackcursor.getint (Mtrackcursor.getcolumnindexorthrow (MediaStore.Audio.Media.IS_DRM));
int drmmethod = Mtrackcursor.getint (Mtrackcursor.getcolumnindexorthrow (MediaStore.Audio.Media.DRM_METHOD));
if (Candispalyringtone (ISDRM, Drmmethod)) {
Start Modify
if (Featureoption.mtk_gemini_support &&FeatureOption.MTK_MULTISIM_RINGTONE_SUPPORT&& ( Siminfomanager.getinsertedsimcount (this) ==2)) {
Menu.add (0, Use_as_sim1_ringtone, 0, R.string.ringtone_as_sim1_menu);
Menu.add (0, Use_as_sim2_ringtone, 0, R.string.ringtone_as_sim2_menu);
}else//end Modify
Menu.add (0, Use_as_ringtone, 0, R.string.ringtone_menu);
}
} else {
Start Modify
if (Featureoption.mtk_gemini_support && (Siminfowrapper.getdefault (). Getinsertedsimcount () ==2)) {
Menu.add (0, Use_as_sim1_ringtone, 0, R.string.ringtone_as_sim1_menu);
Menu.add (0, Use_as_sim2_ringtone, 0, R.string.ringtone_as_sim2_menu);
}else//end Modify
Menu.add (0, Use_as_ringtone, 0, R.string.ringtone_menu);
}
....
}
3), add Use_as_sim1_ringtone/use_as_sim2_ringtone case processing, refer to//start Modify and//end modify modifications
public boolean oncontextitemselected (MenuItem item) {
....
Switch (Item.getitemid ()) {
....
Case Use_as_ringtone:
Set the system setting the current ringtone
Musicutils.setringtone (this, mselectedid);
return true;
Start Modify
Case Use_as_sim1_ringtone:
Set the system setting the current ringtone
Musicutils.setringtone (this, mselectedid,0);
return true;
Case Use_as_sim2_ringtone:
Set the system setting the current ringtone
Musicutils.setringtone (this, mselectedid,1);
return true;
End Modify
....
}
3,musicutils.java:
1),
Import Com.mediatek.audioprofile.AudioProfileManager;
Import Com.mediatek.telephony.SimInfoManager;
Import com.mediatek.common.featureoption.FeatureOption;
2), add the definition of Use_as_sim1_ringtone/use_as_sim2_ringtone, and modify the Child_menu_base:
Public interface Defs {
....
M:add for DRM
Public final static int drm_info = 15;
Public final static int use_as_sim1_ringtone = 16;
Public final static int use_as_sim2_ringtone = 17;
Public final static int child_menu_base = 16; This should is the last item
Public final static int child_menu_base = 18;
2) Add new Setringtone () parameter to add SlotID
A) Please inquire under Packages\apps\settings\src\com\mediatek\audioprofile\defaultringtonepreference.java's onclick () if there is " Setsimid (Simlist.get (0). Msimid); "This sentence, here indicates the use of a single card when, also add the sim ID, if there is this sentence please refer to the following modification of this article, if there is no next b) Modification:
static void Setringtone (context context, long ID, int slotid) {
Contentresolver resolver = Context.getcontentresolver ();
Set the flag in the database to mark this as a ringtone
Uri Ringuri = Contenturis.withappendedid (MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, id);
try {
Contentvalues values = new Contentvalues (2);
Values.put (MediaStore.Audio.Media.IS_RINGTONE, "1");
Values.put (MediaStore.Audio.Media.IS_ALARM, "1");
Resolver.update (Ringuri, values, NULL, NULL);
} catch (Unsupportedoperationexception ex) {
Most likely the card just got unmounted
MUSICLOGUTILS.E (TAG, "couldn ' t set ringtone flag for ID" + ID);
Return
}
string[] cols = new string[] {
MEDIASTORE.AUDIO.MEDIA._ID,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.TITLE
};
M:use Selectionargs Replace set query value in where @{
String where = mediastore.audio.media._id + "=?";
string[] Whereargs = new string[]{string.valueof (ID)};
cursor cursor = query (context, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
Cols, where, Whereargs, null);
/// @}
try {
if (cursor! = NULL && cursor.getcount () = = 1) {
Set the system setting the current ringtone
Cursor.movetofirst ();
Audioprofilemanager Mprofilemanager = (audioprofilemanager) context.getsystemservice (Context.AUDIOPROFILE_SERVICE) ;
String Mactiveprofilekey = Mprofilemanager.getactiveprofilekey ();
list<siminfo> simlist = siminfo.getinsertedsimlist (This.getcontext ());
int simnum = Simlist.size ();
if (featureoption.mtk_multisim_ringtone_support&& (slotid==-1) && (simnum==1)) {
String Urikey=mactiveprofilekey + suffix_ringer_uri+suffix_sim_id+simlist.get (0). Msimid;
Settings.System.putString (Resolver,urikey, ringuri.tostring ());
}
else if (featureoption.mtk_multisim_ringtone_support&& (slotid!=-1)) {
Long Simid = Siminfomanager.getidbyslot (context, SlotID);
Mprofilemanager.setringtoneuri (Mactiveprofilekey, Audioprofilemanager.type_ringtone, SimId, RingUri);
}
else{
Settings.System.putString (resolver, Settings.System.RINGTONE, ringuri.tostring ());
}
String message = context.getstring (R.string.ringtone_set, cursor.getstring (2));
Toast.maketext (context, message, Toast.length_short). Show ();
}
} finally {
....
}
}
b) Does the Packages\apps\settings\src\com\mediatek\audioprofile\defaultringtonepreference.java onclick () have "setSimId ( Simlist.get (0). Msimid); "This sentence, if not this sentence, please refer to this article to amend as follows:
static void Setringtone (context context, long ID, int slotid) {
Contentresolver resolver = Context.getcontentresolver ();
Set the flag in the database to mark this as a ringtone
Uri Ringuri = Contenturis.withappendedid (MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, id);
try {
Contentvalues values = new Contentvalues (2);
Values.put (MediaStore.Audio.Media.IS_RINGTONE, "1");
Values.put (MediaStore.Audio.Media.IS_ALARM, "1");
Resolver.update (Ringuri, values, NULL, NULL);
} catch (Unsupportedoperationexception ex) {
Most likely the card just got unmounted
MUSICLOGUTILS.E (TAG, "couldn ' t set ringtone flag for ID" + ID);
Return
}
string[] cols = new string[] {
MEDIASTORE.AUDIO.MEDIA._ID,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.TITLE
};
M:use Selectionargs Replace set query value in where @{
String where = mediastore.audio.media._id + "=?";
string[] Whereargs = new string[]{string.valueof (ID)};
cursor cursor = query (context, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
Cols, where, Whereargs, null);
/// @}
try {
if (cursor! = NULL && cursor.getcount () = = 1) {
Set the system setting the current ringtone
Cursor.movetofirst ();
Audioprofilemanager Mprofilemanager = (audioprofilemanager) context.getsystemservice (Context.AUDIOPROFILE_SERVICE) ;
String Mactiveprofilekey = Mprofilemanager.getactiveprofilekey ();
if (featureoption.mtk_multisim_ringtone_support&& (slotid!=-1)) {
Long Simid = Siminfomanager.getidbyslot (context, SlotID);
Mprofilemanager.setringtoneuri (Mactiveprofilekey, Audioprofilemanager.type_ringtone, SimId, RingUri);
}
else{
Settings.System.putString (resolver, Settings.System.RINGTONE, ringuri.tostring ());
}
String message = context.getstring (R.string.ringtone_set, cursor.getstring (2));
Toast.maketext (context, message, Toast.length_short). Show ();
}
} finally {
....
}
}
3) The original Setringtone (context context, long ID) is changed to call Setringtone (context context, long ID, int slotid), but SlotID is-1:
static void Setringtone (context context, long ID) {
Setringtone (context, id,-1);
}
Since the individual interfaces are removed in the KK version, the current practice is to restore the JB version of the interface.
To set up a dual-sim ringtone for the KK version of Music, continue with the following modifications:
1. Add the following code at the beginning of the Musicutils.java:
Import java.util.List;
Import Android.provider.Telephony.SIMInfo;
2. Confirm that the library of Telephony-common is added to the android.mk of music:
Local_java_libraries + = mediatek-framework \
Telephony-common
3, add the following method in Mediatek\frameworks\base\telephony\java\com\mediatek\telephony\siminfomanager.java:
/**
* Given a slot, return the Id of the SIM which is currently inserted in this slot
* @param CTX
* @param simslotid the slot which the SIM is inserted
* @return The index of the SIM card in database, 0 indicate-no SIM card is inserted
*/
public static long Getidbyslot (Context ctx, int simslotid) {
Logd ("[getidbyslot]+ simslotid:" + Simslotid);
Siminforecord siminfo = Getsiminfobyslot (CTX, Simslotid);
if (siminfo! = null) {
Logd ("[getidbyslot]-siminfoid:" + siminfo.msiminfoid);
return siminfo.msiminfoid;
}
Logd ("[getidbyslot]-null info, return 0");
return 0;
}
How to add a menu to set up a dual-sim ringtone in Android Music