更改信号格数

最近的一个新需求,需要把android原生的四个信号条改为五格信号条,一下是本人的解决方案:(注;这里主要是针对gsm网络)

android 2.3:
a. modem底层上报信号参数RSSI给modem L4
b. 在modem L4中,经过计算的到上报给上层的asu值,asu的范围是0-31,计算公式为:
asu = (-113 + RSSI) / 2
c. 在SatusBarPolicy.java中的updateSignalStrength(int simId)方法中(单卡情况为updateSignalStrength()),将asu值转化为信号格数,将asu的取值范围对应相应iconlevel就ok了
2.3就不做详细描述了 ,具体修改参考android 4. 0

android 4.0:
a:首先 frameworks/base/telephony/java/android/telephony/SignalStrength.java
public int getGsmLevel() {
int level;
// 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();

    try{
        level = mServiceStateExt.mapGsmSignalLevel(asu);//主要的函数在这里
    } catch (Exception e){
        if (asu <= 2 || asu == 99) level = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
        else if (asu >= 16) level = SIGNAL_STRENGTH_HIGHEST;  
        //具体的转换关系 asu=(-113+assi)/2
        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;
    }
return level;
                                               }

b:mServiceStateExt 的具体实例在 mediatek/frameworks/base/op/java/com/mediatek/op/telephony/ServiceStateExt.java
修改: mapGsmSignalLevel(int asu){…}
c:上层的修改主要在SystemUI模块
主要文件有:networkcontroller.java networkcontrollergemini.java 这里只需修改 判断条件就ok了 主要的原始的为if(iconlevel<5)–>if(iconlevel<6)
telephonyicons.java telephonyiconsgemini.java 大家只需打开文件 就明白要修改哪了(主要修改资源文件id数组,由原来的length为五 改为6)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 拓展信号一般指的是在原信号的基础上添加一些新的信息,可以通过以下MATLAB代码实现: 假设原始信号为x,需要添加的新信号为y,则: 1. 相加法:将x与y相加得到新信号z ```matlab z = x + y; ``` 2. 叠加法:将y叠加到x的后面,形成新的序列z ```matlab z = [x, y]; ``` 3. 插值法:对y进行插值,使其与x的长度相同,然后将两个信号相加得到新信号z ```matlab y_interp = interp1(1:length(y), y, linspace(1,length(y), length(x))); z = x + y_interp; ``` 4. 卷积法:将x和y进行卷积得到新信号z ```matlab z = conv(x, y, 'same'); ``` 以上是常见的几种拓展信号的方法,具体使用哪种方法需要根据实际情况进行选择。 ### 回答2: 拓展信号信号处理中是指对信号进行扩展或压缩的操作,可以实现信号的时间和频率的调整。下面是一个拓展信号的MATLAB代码的示例: ```matlab % 原始信号 t = 0:0.1:10; x = sin(t); % 拓展倍数 expansion_factor = 2; % 拓展信号 t_expanded = 0:0.1/expansion_factor:10; x_expanded = interp1(t, x, t_expanded, 'linear'); % 绘制图像 subplot(2, 1, 1); plot(t, x); title('原始信号'); xlabel('时间'); ylabel('幅度'); subplot(2, 1, 2); plot(t_expanded, x_expanded); title('拓展信号'); xlabel('时间'); ylabel('幅度'); ``` 以上代码中,我们首先定义了一个原始信号`t`和对应的信号值`x`,这里以正弦信号为例。然后,通过设置拓展倍数`expansion_factor`决定信号的拓展程度。接下来,利用`interp1`函数对原始信号进行线性插值,生成相应的拓展信号`t_expanded`和`x_expanded`。最后,利用`subplot`函数将原始信号和拓展信号的图像进行绘制并展示出来。 这个示例代码可以帮助我们理解拓展信号的基本思想和实现方法,根据具体的需求,可以根据这个示例代码进行修改和扩展。 ### 回答3: 拓展信号是指通过对信号进行操作,改变信号的时间、频率或幅度等特征,以达到一定的目的。Matlab是一种功能强大的数学软件,可以用于实现信号处理的各种算法。 拓展信号的Matlab代码可以通过以下步骤来实现: 1. 首先,需要定义一个输入信号。可以使用Matlab的向量或矩阵来表示信号。例如,可以定义一个正弦波信号作为输入信号,如: t = 0:0.01:2*pi; % 时间向量 x = sin(t); % 输入信号,正弦波 2. 接下来,可以通过改变时间、频率或幅度等参数来拓展信号。例如,可以将信号的时间轴延长,如: t_ext = 0:0.01:4*pi; % 拓展后的时间向量 x_ext = sin(t_ext); % 拓展后的信号 3. 如果需要改变信号的频率,可以使用离散傅里叶变换(FFT)来实现。例如,可以将信号的频率提高一倍,如: f = fft(x); % 对信号进行傅里叶变换 f_ext = f(1:length(f)/2); % 拓展后的频谱 f_ext(2:end) = f_ext(2:end) * 2; % 将频率倍增 x_ext = ifft(f_ext, 'symmetric'); % 使用反变换得到拓展后的信号 4. 如果需要改变信号的幅度,可以直接对信号的幅度进行缩放。例如,可以将信号的幅度增加一倍,如: x_ext = x * 2; % 将信号的幅度倍增 5. 最后,可以将拓展后的信号进行显示或保存。可以使用Matlab的绘图函数或保存函数来完成。例如,可以使用plot函数将信号绘制出来,如: plot(t_ext, x_ext); % 绘制拓展后的信号 xlabel('时间'); % 设置x轴标签 ylabel('幅值'); % 设置y轴标签 title('拓展后的信号'); % 设置图像标题 grid on; % 显示网格 saveas(gcf, '拓展信号.png'); % 保存图像 以上就是拓展信号的Matlab代码的基本步骤,可以根据具体要求进行调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值