jasmine1

手机后台播音乐,设置闹钟,打一通电话,挂断电话后,闹钟与音乐同时响起

0
阅读(1283)

[DESCRIPTION]
操作步骤:
1. 手机后台播音乐,设置一个闹钟
2. 打一通电话
3. 挂断电话
现象:
闹钟和音乐的声音会同时播放

[SOLUTION]
这是google 默认行为,若贵司一定要改,请参考以下方法:
请尝试按照如下方法进行修改:
Frameworks\base\media\java\android\media\MediaFocusControl.java:
1、import packages:
import com.android.internal.telephony.ITelephony;
import android.os.ServiceManager;
2、增加获取当前Phone Call State的方法getPhoneCallState():
private int getPhoneCallState(){
int phoneCallState = TelephonyManager.CALL_STATE_IDLE;
TelephonyManager telephonyManager =
(TelephonyManager)mContext.getSystemService(Context.TELEPHONY_SERVICE);
ITelephony telephonyService =
ITelephony.Stub.asInterface(ServiceManager.getService(Context.TELEPHONY_SERVICE));
if (telephonyService != null) {
Log.w(TAG, "getPhoneCallState: mTelephonyService != null");
try {
phoneCallState = telephonyService.getPreciseCallState();
Log.w(TAG, "getPhoneCallState: telephonyService.getPreciseCallState() = " +
phoneCallState);
} catch (RemoteException ex) {
if(telephonyManager != null){
phoneCallState = telephonyManager.getCallState();
Log.w(TAG, "getPhoneCallState: telephonyManager.getCallState() = " + phoneCallState);
}
Log.w(TAG, "Catch exception when getPreciseCallState: ex = "
+ ex.getMessage());
}
} else {
Log.w(TAG, "getPhoneCallState: telephonyService == null");
if(telephonyManager != null){
phoneCallState = telephonyManager.getCallState();
Log.w(TAG, "getPhoneCallState: telephonyManager.getCallState() = " + phoneCallState);
}
}
Log.w(TAG, "getPhoneCallState: phoneCallState = " + phoneCallState);
return phoneCallState;
}

来源:一牛网论坛