—— 路漫漫其修远兮,吾将上下而求索

——刚接触android一个月,想把自己学到的一些东西记录下来以激励自己

获取信号强度用到的相关的包android.telephony,用到的相关的类有android.telephony.PhoneStateListener;

android.telephony.SignalStrength;

android.telephony.TelephonyManager;

public class GetGsmSignalStrength extends Activity {TelephonyManager Tel;//TelephonyManager类的对象MyPhoneStateListener MyListener;//MyPhoneStateListener类的对象,即设置一个监听器对象    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {    //SignalStrength signalStrength;    super.onCreate(savedInstanceState);        setContentView(R.layout.main);        //private TextView myText=null;    //TextView myText = (TextView)findViewById(R.id.myText);    //myText.setText("GSM Cinr = "+ String.valueOf(SignalStrength.signalStrength.getGsmSignalStrength()));        MyListener = new MyPhoneStateListener();//初始化对象        Tel = ( TelephonyManager )getSystemService(Context.TELEPHONY_SERVICE);//Return the handle to a system-level service by name.通过名字获得一个系统级服务        Tel.listen(MyListener ,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);//Registers a listener object to receive notification of changes in specified telephony states.设置监听器监听特定事件的状态        }    @Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();Tel.listen(MyListener, PhoneStateListener.LISTEN_NONE);}    @Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();Tel.listen(MyListener,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);}    private class MyPhoneStateListener extends PhoneStateListener{//监听器类    /*得到信号的强度由每个tiome供应商,有更新*/    TextView myText = (TextView)findViewById(R.id.myText);    TextView myText1=(TextView)findViewById(R.id.myText1);    @Override    public void onSignalStrengthsChanged(SignalStrength signalStrength){    super.onSignalStrengthsChanged(signalStrength);//调用超类的该方法,在网络信号变化时得到回答信号    Toast.makeText(getApplicationContext(), "Go to Firstdroid!!! GSM Cinr = "+ String.valueOf(signalStrength.getGsmSignalStrength()), Toast.LENGTH_SHORT).show();//cinr:Carrier to Interference plus Noise Ratio(载波与干扰和噪声比)        myText.setText("CDMA RSSI = "+ String.valueOf(signalStrength.getCdmaDbm()));        myText1.setText("GSM Cinr = "+ String.valueOf(signalStrength.getGsmSignalStrength()));    }    }}

上面的代码参考了别人的程序,并在基础上做了一些小小的改动。

下面是关于信号强度的一些总结。(参考了网上一些资料)

信号强度单位:android定义了2种信号单位:dBm(1毫瓦的分贝数)和asu(alone signal unit 独立信号单元)。
它们之间的关系是:dBm =-113+2*asu,这是google给android手机定义的特有信号单位。而且信号强度数值越大越好,
67dbm VS -90dbm ,前者信号比后者好!中国移动的规范规定,手机接收电平>=(城市取-90dBm;乡村取-94dBm)时,则满足覆盖要求,也就是说此处无线信号强度满足覆盖要求,即接受电平>=-90dBm,就可以满足覆盖要求
-67dBm要比-90dBm信号要强20多个dB,那么它在打电话接通成功率和通话过程中的话音质量都会好的多(当然也包括EDGE(EDGE是一种从GSM到3G的过渡技术)/GPRS上网的速度那些 )




更多相关文章

  1. Android中FTP上传、下载(含进度)
  2. 理解杀进程的实现原理
  3. Android_开发 实用滚轮效果选择数字(十三)
  4. Android实现 ScrollView + ListView无滚动条滚动
  5. seekBard的使用方法
  6. android 自定义View设置自定义监听 框架(监听自定义字符)
  7. android HDMI (一):HDMI基础篇
  8. Android(安卓)API 中提供的20个服务
  9. [Com]Java中的串口编程

随机推荐

  1. Redis安装教程(超详细)
  2. 用户登录/注册/退出全流程详解
  3. session流程实践
  4. css边框带箭头,方便修改上下左右。
  5. 实例演示单文件上传与分页原理及实现
  6. 数字物业管理成趋势,传统物业公司如何通过
  7. VM_Ware虚拟机+CentOS 7 系统安装教程
  8. 硬盘参数错误恢复方法
  9. ThinkPHP6 公共 上传到本地的方法 附带使
  10. 实例演示:盒模型常用属性、媒体查询以及em