微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 手机后台播音乐,设置闹钟,打一通电话,挂断电话后,闹钟与音乐同时响起

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

时间:10-02 整理:3721RD 点击:
[DESCRIPTION]

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

[SOLUTION]

这是google 默认行为,若贵司一定要改,请参考以下方法:
请尝试按照如下方法进行修改:
php?mod=tag&id=6090" target="_blank" class="relatedlink">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;
}
3、修改
private boolean canReassignAudioFocus() {
// focus requests are rejected during a phone call or when the phone is ringing
// this is equivalent to IN_VOICE_COMM_FOCUS_ID having the focus
if (!mFocusStack.isEmpty() && mFocusStack.peek().hasSameCLIent(IN_VOICE_COMM_FOCUS_ID))
{
return false;
}
return true;
}

private boolean canReassignAudioFocus() {
// focus requests are rejected during a phone call or when the phone is ringing
// this is equivalent to IN_VOICE_COMM_FOCUS_ID having the focus
if (!mFocusStack.isEmpty() && mFocusStack.peek().hasSameClient(IN_VOICE_COMM_FOCUS_ID)
&& (getPhoneCallState() != TelephonyManager.CALL_STATE_IDLE)) {
Log.w(TAG, "canReassignAudioFocus: return false");
return false;
}
Log.w(TAG, "canReassignAudioFocus: return true");
return true;
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top