android 紧急呼叫如何客制化紧急号码

danxinzhicheng
基于MTK平台定制导航栏部分,在左边增加音量减,右边增加音量加
代码修改步骤
增加需要的音量资源文件,增加4张图片到drawable图片资源下,注意尺寸和back,home,recent一致,分为亮色和暗色两种图片。(图片尽然还要自己搞,幸好有在线PS可以修改尺寸和颜色)
ic_sysbar_volume_up.png,ic_sysbar_volume_up_dark.png,ic_sysbar_volume_down.png,ic_sysbar_volume_down_dark.png;
layout下增加volume_down.xml 和 volume_up.xml(里面keyRepeatExt是自己定义的,可以忽略,为了标识是音量键,方便在KeyButtonView.java里作特殊长按处理)
&com.android.systemui.statusbar.policy.KeyButtonView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res-auto"
android:id="@+id/volume_down"
android:layout_width="@dimen/navigation_key_width"
android:layout_height="match_parent"
android:layout_weight="0"
systemui:keyCode="25"
systemui:keyRepeatExt="true"
android:scaleType="center"
android:contentDescription="@string/accessibility_key"
android:paddingStart="@dimen/navigation_key_padding"
android:paddingEnd="@dimen/navigation_key_padding"
&com.android.systemui.statusbar.policy.KeyButtonView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:systemui="http://schemas.android.com/apk/res-auto"
android:id="@+id/volume_up"
android:layout_width="@dimen/navigation_key_width"
android:layout_height="match_parent"
android:layout_weight="0"
systemui:keyCode="24"
systemui:keyRepeatExt="true"
android:scaleType="center"
android:contentDescription="@string/accessibility_key"
android:paddingStart="@dimen/navigation_key_padding"
android:paddingEnd="@dimen/navigation_key_padding"
修改 res/values-sw600dp/config.xml下的name为config_navBarLayout配置(我这里平板,对values-sw600dp生效,默认是values)
&string name="config_navBarLayout" translatable="false"&left;volume_down,back,home,recent,volume_right&/string&
修改res/values-sw600dp/dimens.xml下的navigation_key_width和navigation_key_padding参数,对每个icon调整合适的宽度
name="navigation_key_width"&90dp&
name="navigation_key_padding"&0dp&
NavigationBarInflaterView.java中,增加
public static final String VOLUME_DOWN = "volume_down";
public static final String VOLUME_UP = "volume_up";
createView方法里增加:
else if (VOLUME_DOWN.equals(button)) {
v = inflater.inflate(R.layout.volume_down, parent, false);
} else if (VOLUME_UP.equals(button)) {
v = inflater.inflate(R.layout.volume_up, parent, false);
NavigationBarView.java里,增加:
private KeyButtonDrawable mVolumeDown,mVolumeUp;
构造方法里增加:
mButtonDispatchers.put(R.id.volume_down, new ButtonDispatcher(R.id.volume_down))
mButtonDispatchers.put(R.id.volume_up, new ButtonDispatcher(R.id.volume_up))
getVolumeDownButton().setLongClickable(false)
getVolumeUpButton().setLongClickable(false)
增加新方法:
public ButtonDispatcher getVolumeDownButton() {
return mButtonDispatchers.get(R.id.volume_down);
public ButtonDispatcher getVolumeUpButton() {
return mButtonDispatchers.get(R.id.volume_up);
updateIcons()方法里增加:
mVolumeDown = getDrawable(ctx,R.drawable.ic_sysbar_volume_down,R.drawable.ic_sysbar_volume_down_dark)
mVolumeUp = getDrawable(ctx,R.drawable.ic_sysbar_volume_up,R.drawable.ic_sysbar_volume_up_dark)
setNavigationIconHints()方法里增加:
getVolumeDownButton().setImageDrawable(mVolumeDown)
getVolumeUpButton().setImageDrawable(mVolumeUp)
setDisabledFlags()方法里增加:
//volume down and up just follow the home key
getVolumeDownButton().setVisibility(disableHome ? View.INVISIBLE : View.VISIBLE)
getVolumeUpButton().setVisibility(disableHome ? View.INVISIBLE : View.VISIBLE)
至此,make,push…
阅读排行榜Android 【信号格的客制化】Part 2:客制化修改代码说明与示例 - google-android-frameworks - ITkeyowrd
Android 【信号格的客制化】Part 2:客制化修改代码说明与示例
推荐:需要修改frameworks/base/下的代码,请注意 :如果修改了Android原有API的 ,需要update frameworks/base/api/current.txt。否则编译被中断并出现下面提示。
领取地址:
前言 &&&&&&&&&欢迎大家我分享和推荐好用的代码段~~ 声明 &&&&&&&&&欢迎转载,但请保留文章原始出处: &&&&&&&&&CSDN: &&&&&&&&&雨季o莫忧离:
上面介绍的是信号格的计算公式,下面将针对不同的版本做客制化方式说明。
由于 Android V2.3中modem的source code没有给到客户,且相关的信号物理参数也没有上报给AP端,因此信号格的客制化只能根据客户自己需求推导出asu值之后,在SatusBarPolicy.java中修改相关代码实现客制化。
这个版本上,信号的物理参数会通过上报给AP端,格式为:
&&&&(2G网络)
AT& +ECSQ: &asu&, &ber&, &rssi&, &rscp&, &ec/no&&&&&&(3G网络)
在StatusBarPolicy.java中的updateSignalStrength()(单卡版本接口)或者updateSignalStrength(int simId)(双卡版本接口)中,通过mSignalStrength.getGsmSignalStrengthDbm()来获取到信号的rssi(2G)或者rscp(3G)的值,然后进行客制化即可。
Example:WCDAM/GSM网络asu作为匹配参数:
1、&信号的物理参数会通过上报给AP端,格式为:
&&&&(2G网络)
AT& +ECSQ: &asu&, &ber&, &rssi&, &rscp&, &ec/no&&&&&&(3G网络)
其中&rssi&, &rscp&, &ec/no&这几个物理参数上报时单位为qdbm,换算为dbm的公式为:dbm=qdbm/4
2、AP端信号格处理是在SignalStrength.java中。asu与icon level的对应关系使用的是getGsmLevel()。
一般的客制化需求可能会有以下几种修改的情况:
a.区分3G网络与2G网络
可以通过判断&mGsmRscpQdbm & 0&是否是3G网络,若是3G网络的话,这个判断为true,反之则是2G网络。
b.使用asu与icon level来匹配
可以自行通过计算自己需求上的信号物理参数,来得到对应的asu值来自行修改信号格数的显示。
c.使用dbm与icon level来匹配
若是asu的方式没有办法实现贵司的需求的话,可以直接使用RSCP或者RSSI这种信号物理参数来与信号格数匹配。
2G:RSSI在代码中可以通过getGsmDbm()得到
3G:RSCP在代码中可以直接使用mGsmRscpQdbm来得到
JB/JB2/JB3/JB5
1、&信号的物理参数会通过AT+ECSQ上报给AP端,格式为:
AT& +ECSQ: &asu&, &ber&, &rssi&&&&&(2G网络)
AT& +ECSQ: &asu&, &ber&, &rssi&, &rscp&, &ec/no&&&&&&(3G网络)
其中&rssi&, &rscp&, &ec/no&这几个物理参数上报时单位为qdbm,换算为dbm的公式为:dbm=qdbm/4
2、SignalStrength.java中使用IServiceStateExt作为不同运营商客制化的接口。
&O&&对于普通版本:IServiceStateExt的实现为ServiceStateExt.java
&O&&对于中国移动(OP01)版本:IServiceStateExt的实现为ServiceStateExtOP01.java
步骤1:请修改ServiceStateExtXXX.java中的mapGsmSignalDbm(int GsmRscpQdbm,int asu)接口为以下形式,以方便我们接下来的客制化。
&&&&public int mapGsmSignalDbm(int GsmRscpQdbm,int asu){
&&&&&&&&int dBm;
&//mtk add
&&&&&&&&if(mGsmRscpQdbm&& 0 &&&mGsmRscpQdbm&! = -1)
&&&&&&&&&&&&dBm = GsmRscpQdbm / 4; // Return raw value for 3G network.
&&&&&&&&else
//mtk add end
&&&&&&&&&&&&dBm = -113 + (2 * asu);&&&&&&&
&&&&&&&&&&&&&
&&&&&&&&return dBm;
&&&&步骤2:SignalStrength.java中修改getGsmLevel():
&&&&public int getGsmLevel() {
&&&&&&&&// ASU ranges from 0 to 31 - TS 27.007 Sec 8.5
&&&&&&&&// asu = 0 (-113dB or less) is very weak
&&&&&&&&// signal, its better to show 0 bars to the user in such cases.
&&&&&&&&// asu = 99 is a special case, where the signal strength is unknown.
&&&&&&&&int asu = getGsmSignalStrength();
&&&&&&&&int dBm = getGsmDbm();&&&//mtk add
&&&&&&&&boolean is3G = (mGsmRscpQdbm&& 0 &&&mGsmRscpQdbm&! = -1) ?&true :&&&&//mtk add
&&&&&&&&try{ //mtk add
&&&&&&&&&&&&//level = mServiceStateExt.mapGsmSignalLevel(asu);
&&&&&&&&&&&&level = mServiceStateExt.mapGsmSignalLevel(is3G, dBm, asu);
//mtk add end
&&&&&&&&} catch (Exception e){
&&&&&&&&&&&&if (asu &= 2 || asu == 99) level = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
&&&&&&&&&&&&else if (asu &= 12) level = SIGNAL_STRENGTH_GREAT;
&&&&&&&&&&&&else if (asu &= 8)&&level = SIGNAL_STRENGTH_GOOD;
&&&&&&&&&&&&else if (asu &= 5)&&level = SIGNAL_STRENGTH_MODERATE;
&&&&&&&&&&&&else level = SIGNAL_STRENGTH_POOR;
&&&&&&&&if (DBG) log(&getGsmLevel=& + level);
步骤3:在ServiceStateExtXXX.java中添加mapGsmSignalLevel (boolean is3G, int&dBm,int asu),做信号格mapping:
a.区分3G网络与2G网络
可以通过判断函数参数is3G是否是3G网络,若是3G网络的话为true,反之则是2G网络。
b.使用asu与icon level来匹配
利用传入的asu参数,根据自己信号格标准修改代码。
c.使用dbm与icon level来匹配
利用传入的dBm参数,根据自己信号格标准修改代码。
&&&&Example:使用asu作为参数计算WCDMA/GSM信号
欢迎大家我分享和推荐好用的代码段~~ 声明
欢迎转载,但请保留文章原始出处:
CSDN:http://www.csdn.net
雨季o莫忧离:http://blog.csdn.net/luckko
相关阅读排行
相关内容推荐
请激活账号
为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。
您的注册邮箱:
如果您没有收到激活邮件,请注意检查垃圾箱。有关设置里的客制化【android吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:1,266,066贴子:
有关设置里的客制化收藏
安卓2.3.6,在设置-客制化里,联想手机。在客制化里还有个主题和壁纸两个选项。请问主题就一个怎么添加?求大神  ------随手一打就是如此标准的十五个字
登录百度帐号紧急拨号的修改及其客制化
[问题点数:20分]
紧急拨号的修改及其客制化
[问题点数:20分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|一个开手推车的IT男
Android客制化------过滤设置应用列表中某个应用
diff --git a/packages/apps/Settings/src/com/android/settings/applications/ManageApplications.java b/packages/apps/Settings/src/com/android/set
index 7c35b1a..dec6876 100644
--- a/packages/apps/Settings/src/com/android/settings/applications/ManageApplications.java
+++ b/packages/apps/Settings/src/com/android/settings/applications/ManageApplications.java
@@ -1037,7 +1037,20 @@ public class ManageApplications extends InstrumentedFragment
ArrayList&ApplicationsState.AppEntry& applyPrefixFilter(CharSequence prefix,
ArrayList&ApplicationsState.AppEntry& origEntries) {
if (prefix == null || prefix.length() == 0) {
return origE
ArrayList&ApplicationsState.AppEntry& newEntries
= new ArrayList&ApplicationsState.AppEntry&();
for (int i=0; i&origEntries.size(); i++) {
ApplicationsState.AppEntry entry = origEntries.get(i);
String nlabel = entry.getNormalizedLabel();
if((entry.info.packageName.equals("com.xxx.xxx"))){
}else if((entry.label.equals("xxxxx"))){
newEntries.add(entry);
return newE
String prefixStr = ApplicationsState.normalize(prefix.toString());
final String spacePrefixStr = " " + prefixS
@@ -1047,7 +1060,13 @@ public class ManageApplications extends InstrumentedFragment
ApplicationsState.AppEntry entry = origEntries.get(i);
String nlabel = entry.getNormalizedLabel();
if (nlabel.startsWith(prefixStr) || nlabel.indexOf(spacePrefixStr) != -1) {
newEntries.add(entry);
if((entry.info.packageName.equals("com.xxx.xxx"))){
}else if((entry.label.equals("xxxxx"))){
newEntries.add(entry);
return newE
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!}

我要回帖

更多关于 android 添加紧急号码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信