android-移动TD-SCDMA网络信号的接口

问题描述

移动TD-SCDMA网络信号的接口

电信与联通3G信号强度在Android中都有接口,signalStrength.getEvdoDbm()和signalStrength.getCdmaDbm() 唯独移动3G没有,请问移动3G的信号强度在手机中是如何获取到的呢?

解决方案

移动3G的取不到,因为TD-SCDMA国际上不通用

signalStrength.getCdmaDbm(); 联通3G 信号强度
signalStrength.getCdmaEcio(); 联通3G 载干比
signalStrength.getEvdoDbm(); 电信3G 信号强度
signalStrength.getEvdoEcio(); 电信3G 载干比
signalStrength.getEvdoSnr(); 电信3G 信噪比
signalStrength.getGsmSignalStrength(); 2G 信号强度
signalStrength.getGsmBitErrorRate(); 2G 误码率

解决方案二:

android 3G 手机信号 信息获取

在androi中手机信号信息的获取可以通过系统提供的TELEPHONY_SERVICE获取

[java]
TelephonyManager tel = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);

TelephonyManager 可以监听 PhoneStateListener, PhoneStateListener 提供了
[java]
onSignalStrengthsChanged 手机信号变动
onServiceStateChanged 手机服务状态变动

其中onSignalStrengthsChanged可以获取到的有用信息如下:
[java]
/*
signalStrength.isGsm() 是否GSM信号 2G or 3G
signalStrength.getCdmaDbm(); 联通3G 信号强度
signalStrength.getCdmaEcio(); 联通3G 载干比
signalStrength.getEvdoDbm(); 电信3G 信号强度
signalStrength.getEvdoEcio(); 电信3G 载干比
signalStrength.getEvdoSnr(); 电信3G 信噪比
signalStrength.getGsmSignalStrength(); 2G 信号强度
signalStrength.getGsmBitErrorRate(); 2G 误码率

载干比 ,它是指空中模拟电波中的信号与噪声的比值
*/

奇怪的是移动的3G信号TD-SCDMA 信息没办法获取到

而onServiceStateChanged 提供的状态变动如下:

[java]
/*
ServiceState.STATE_EMERGENCY_ONLY 仅限紧急呼叫
ServiceState.STATE_IN_SERVICE 信号正常
ServiceState.STATE_OUT_OF_SERVICE 不在服务区
ServiceState.STATE_POWER_OFF 断电
*/

以下给出具体的实例:

1.在布局文件中增加一个3G图标,和显示具体信息的文本 (activity_g3_example.xml)

[html]
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">

<ImageButton
    android:id="@+id/Icon_3GStatus"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_3g"/> 

<TextView
    android:id="@+id/Label_3GDetail"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:maxWidth="320dp"/>
  1. 为3G图标添加一组可选的图标,在drawable-hdpi目录下增加ic_3g.xml文件,内容如下:
    [html]
    <?xml version="1.0" encoding="utf-8"?>

注意需要导入用到的图片

3.在代码中监听手机信号和状态的变动 (G3Example.java)
[java]
package com.example.g3example;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.Menu;
import android.widget.ImageButton;
import android.widget.TextView;

public class G3Example extends Activity {

private final String TAG = "G3Example"; 

private ImageButton       mIcon3G;
private TextView          mLabel3G; 

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_g3_example); 

    mIcon3G  = (ImageButton)findViewById(R.id.Icon_3GStatus);
    mLabel3G = (TextView)findViewById(R.id.Label_3GDetail);  

    TelephonyManager tel = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
    tel.listen(new PhoneStateMonitor(), PhoneStateListener.LISTEN_SIGNAL_STRENGTHS | PhoneStateListener.LISTEN_SERVICE_STATE);
} 

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_g3_example, menu);
    return true;
} 

public class PhoneStateMonitor extends PhoneStateListener{
    public void onSignalStrengthsChanged(SignalStrength signalStrength) {
        super.onSignalStrengthsChanged(signalStrength);
        /*
        signalStrength.isGsm()           是否GSM信号 2G or 3G
        signalStrength.getCdmaDbm();     联通3G 信号强度
        signalStrength.getCdmaEcio();    联通3G 载干比
        signalStrength.getEvdoDbm();     电信3G 信号强度
        signalStrength.getEvdoEcio();    电信3G 载干比
        signalStrength.getEvdoSnr();     电信3G 信噪比
        signalStrength.getGsmSignalStrength();  2G 信号强度
        signalStrength.getGsmBitErrorRate();    2G 误码率

        载干比 ,它是指空中模拟电波中的信号与噪声的比值
         */
        mLabel3G.setText("IsGsm : " + signalStrength.isGsm() +
                "nCDMA Dbm : " + signalStrength.getCdmaDbm() + "Dbm" +
                "nCDMA Ecio : " + signalStrength.getCdmaEcio() +  "dB*10" +
                "nEvdo Dbm : " + signalStrength.getEvdoDbm() + "Dbm" +
                "nEvdo Ecio : " + signalStrength.getEvdoEcio() + "dB*10" +
                "nGsm SignalStrength : " + signalStrength.getGsmSignalStrength() +
                "nGsm BitErrorRate : " + signalStrength.getGsmBitErrorRate()); 

        mIcon3G.setImageLevel(Math.abs(signalStrength.getGsmSignalStrength()));
    } 

    public void onServiceStateChanged(ServiceState serviceState){
        super.onServiceStateChanged(serviceState); 

        /*
         ServiceState.STATE_EMERGENCY_ONLY   仅限紧急呼叫
         ServiceState.STATE_IN_SERVICE       信号正常
         ServiceState.STATE_OUT_OF_SERVICE   不在服务区
         ServiceState.STATE_POWER_OFF        断电
         */
        switch(serviceState.getState())
        {
        case ServiceState.STATE_EMERGENCY_ONLY:
            Log.d(TAG, "3G STATUS : STATE_EMERGENCY_ONLY");
            break;
        case ServiceState.STATE_IN_SERVICE:
            Log.d(TAG, "3G STATUS : STATE_IN_SERVICE");
            break;
        case ServiceState.STATE_OUT_OF_SERVICE:
            Log.d(TAG, "3G STATUS : STATE_OUT_OF_SERVICE");
            break;
        case ServiceState.STATE_POWER_OFF:
            Log.d(TAG, "3G STATUS : STATE_POWER_OFF");
            break;
        default:
            break;
        }
    }
}

}

  1. 最后在AndroidManifest.xml增加获取手机信号权限的支持

[html] view plaincopy

时间: 2024-08-30 01:55:12

android-移动TD-SCDMA网络信号的接口的相关文章

宁波3G(TD—SCDMA)网络发展大事记

2008年9月,作为全国重点建设城市之一,宁波3G(TD-SCDMA)建设工作启动. 2008年12月24日,宁波天宁大厦基站成为第一个开通的3G(TD-SCDMA)基站. 2009年1月8日,宁波历史上第一个3G(TD-SCDMA)视频电话成功打通. 2009年3月4日,宁波市TD建设推进工作小组正式成立,3月10日召开工作小组第一次会议. 2009年3月20日,宁波3G(TD-SCDMA)网络基本建成. 2009年4月13日,中国移动宁波分公司率先完成世界上最长的跨海大桥--杭州湾跨海大桥3

如何用FPGA将RJ45网络信号转换为单端串行数据

问题描述 如何用FPGA将RJ45网络信号转换为单端串行数据 如何用FPGA将RJ45网络信号转换为单端串行数据.双绞线过来的网络信号,通过RJ45接口,网络隔离变压器,链接到网卡,然后用FPGA读取网卡信息.将读取的所有信号原封不动地,存入一步FIFO,将100M信号写入,用4M时钟读出:再存入另外一个异步FIFO,用4M速度写,100M速度读取,读取的信号在用FPGA传递给网卡2,通过另一个RJ45传递出去. 用到2个RJ网口,2个网卡,一块FPGA芯片(包含2个网卡控制器和2个异步FIFO

Android开发学习笔记之通过API接口将LaTex数学函数表达式转化为图片形式_Android

本文将讲解如何通过codecogs.com和Google.com提供的API接口来将LaTeX数学函数表达式转化为图片形式.具体思路如下:       (1)通过EditText获取用户输入的LaTeX数学表达式,然后对表达式格式化使之便于网络传输.       (2)将格式化之后的字符串,通过Http请求发送至codecogs.com或者Google.com.       (3)获取网站返回的数据流,将其转化为图片,并显示在ImageView上. 具体过程为: 1.获取并格式化LaTeX数学表

android 获取手机GSM/CDMA信号信息,并获得基站信息的方法_Android

在Android中我们常用的轻松获取WIFI信号列表,那如何获取CDMA或者GSM的手机信号呢? 系统提供了TelephonyManager类,此类非常丰富,基本你所需要的手机信息都能获取到,那下面就来看看我们所需要的CDMA与GSM信号是如何获取的吧. private TelephonyManager telephonyManager; private PhoneStateListener phoneStateListener; 首先声明两个变量 在onCreate()方法中初始化变量 Ini

上海年内3G网络信号将覆盖全市

早报世博记者 单芸 昨日,市政府召开的"上海市推进3G发展暨TD-SCDMA网络建设和应用工作会议"指出,目前,本市正加快3G网络建设步伐,年内将新建3G基站近3000个,基本形成覆盖全市的3G网络信号. 在昨日的会议上,"上海市推进TD-SCDMA等3G网络建设和应用联席会议"办公室还表示,市环保局要加强对基站电磁辐射的日常检测,特别是对新建基站在开通运行前的检测,对选址可能引起市民关注的基站,要及时公开检测结果. 昨日,在上海市推进3G发展暨TD-SCDMA网络

安卓5.0网络信号图标感叹号解决办法

如下图所示我们的Android5.0的调协出来了一个这样的图标了,这个在其它安卓版本是没有此问题出现的哦. Android 5.0网络信号图标感叹号怎么办 首先下载修复工具http://pan.baidu.com/share/init?shareid=2377574099&uk=3106229976  网盘密码: arcu 安装好软件之后我们点击"设为小狐狸中国"进入之后我们打开 开启飞行模式,然后我们再 关闭飞行模式即可~ 重复几次你会发现信号旁边的感叹号图标消失了哦.

谈谈Android的三种网络通信方式

Android平台有三种网络接口可以使用,他们分别是:java.net.*(标准Java接口).Org.apache接口和Android.net.*(Android网络接口).下面分别介绍这些接口的功能和作用. 1.标准Java接口 java.net.*提供与联网有关的类,包括流.数据包套接字(socket).Internet协议.常见Http处理等.比如:创建URL,以及URLConnection/HttpURLConnection对象.设置链接参数.链接到服务器.向服务器写数据.从服务器读取

如何进行无线网络信号设置

好多朋友都在使用无线上网,随着无线技术的发展,802.11N标准已经成为无线路由设备与接入设备必备的一项服务标准,其良好的技术优势让之前的协议都无法比拟,无论是安全性还是实用性都拥有了一次全新的升级,不可否认的是,802.11N标准的出台是值得所有无线网络用户开心的一件事,无论是从数据分享看还是无线信号稳定性.覆盖区域上都有巨大提升.那么,如何拥有更好的信号来保障无线网络更出色地工作呢?下面我们就给大家介绍一些切实可行的小技巧.希望对您能有所帮助! 1.选择5GHz频率下工作 作为802.11N

如何增强无线网络信号

  如何增强无线网络信号 现在,利用无线路由器和无线网卡来组建局域网的家庭已不在少数,但是,利用无线路由组建的网络,其数据传输率受到信号强度的影响很大,在信号不够强的时候,无线网络的数据传输率往往非常慢,甚至会出现无法建立连接的现象.在实际使用的时候,也常常发现无线信号的覆盖范围并不如产品说明上的那样好,不免令人失望.因为在实际使用的时候,信号会受到环境等一些客观因素的影响而出现衰减,这是无法避免的.当然,对于信号的衰减,也并不是束手无策,在使用的时候,可以通过一些技巧,尽量将信号衰减降到最低.