网上关于来电翻转静音的功能有很多实现,但大同小以异,下面主要记录以下几点:
1.settting中添加控制。
2.Dialer中添加具体的功能实现。
3.AudioManager实现完成静音。
首先,关于setting中简单的控制,我是放在辅助功能中控制该功能;
/packages/apps/Settings/res/xml/accessibility_settings.xml
<SwitchPreference
android:key="toggle_turn_call_silent_preference"
android:title="@string/accessibility_turn_call_silent_preference_title"
android:persistent="false"/>
/packages/apps/Settings/src/com/android/settings/accessibility/AccessibilitySettings.java
在这里我将当前的控制参数保存后发送了一个sticky广播,当应用中组测时就能够接收。
if(mTurnCallSilentPreference == preference) {
boolean silent= (Boolean) newValue;
SharedPreferences sharedPreferences = getActivity().getSharedPreferences("call_silent_setting",getActivity().MODE_WORLD_WRITEABLE);
if(silent) {
Editor editor = sharedPreferences.edit();
editor.putBoolean("callTurnSilent", true);
editor.commit();
} else {
Editor editor = sharedPreferences.edit();
editor.putBoolean("callTurnSilent", false);
editor.commit();
}
Intent mCallIntent = new Intent();
mCallIntent.setAction("TURN_CALL_SILENT");
mCallIntent.putExtra("call_silent", silent);
getActivity().sendStickyBroadcast(mCallIntent);
return true;
}
接下来就是在dialer中的实现
得先创建一个服务来实现该功能,添加文件如下:
/packages/apps/InCallUI/src/com/android/incallui/SilentService.java
package com.android.incallui;
import java.util.L