NetworkDetector: uses android.telephony.TelephonyManager to obtain telephony parameters like network


/*
*Copyright(C)2011TheAndroidOpenSourceProject
*
*LicensedundertheApacheLicense,Version2.0(the"License");
*youmaynotusethisfileexceptincompliancewiththeLicense.
*YoumayobtainacopyoftheLicenseat
*
*http://www.apache.org/licenses/LICENSE-2.0
*
*Unlessrequiredbyapplicablelaworagreedtoinwriting,software
*distributedundertheLicenseisdistributedonan"ASIS"BASIS,
*WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.
*SeetheLicenseforthespecificlanguagegoverningpermissionsand
*limitationsundertheLicense.
*/

packagecom.example.android.apis.telephony;

importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.telephony.PhoneStateListener;
importandroid.telephony.ServiceState;
importandroid.telephony.TelephonyManager;
importandroid.widget.TextView;


/**
*Activitythatuses{@linkandroid.telephony.TelephonyManager}toobtain
*telephonyparameterslikenetworkstate,phonetypeandSIMstate.
*/
publicclassNetworkDetectorextendsActivity{

/*
*SIMstateconstants
*/
publicstaticfinalStringSIM_ABSENT="Absent";
publicstaticfinalStringSIM_READY="Ready";
publicstaticfinalStringSIM_PIN_REQUIRED="PINrequired";
publicstaticfinalStringSIM_PUK_REQUIRED="PUKrequired";
publicstaticfinalStringSIM_NETWORK_LOCKED="Networklocked";
publicstaticfinalStringSIM_UNKNOWN="Unknown";

/*
*Networktypeconstants
*/
publicstaticfinalStringNETWORK_CDMA="CDMA:EitherIS95AorIS95B(2G)";
publicstaticfinalStringNETWORK_EDGE="EDGE(2.75G)";
publicstaticfinalStringNETWORK_GPRS="GPRS(2.5G)";
publicstaticfinalStringNETWORK_UMTS="UMTS(3G)";
publicstaticfinalStringNETWORK_EVDO_0="EVDOrevision0(3G)";
publicstaticfinalStringNETWORK_EVDO_A="EVDOrevisionA(3G-Transitional)";
publicstaticfinalStringNETWORK_EVDO_B="EVDOrevisionB(3G-Transitional)";
publicstaticfinalStringNETWORK_1X_RTT="1xRTT(2G-Transitional)";
publicstaticfinalStringNETWORK_HSDPA="HSDPA(3G-Transitional)";
publicstaticfinalStringNETWORK_HSUPA="HSUPA(3G-Transitional)";
publicstaticfinalStringNETWORK_HSPA="HSPA(3G-Transitional)";
publicstaticfinalStringNETWORK_IDEN="iDen(2G)";
publicstaticfinalStringNETWORK_LTE="LTE(4G)";
publicstaticfinalStringNETWORK_EHRPD="EHRPD(3G)";
publicstaticfinalStringNETWORK_HSPAP="HSPAP(3G)";
publicstaticfinalStringNETWORK_UNKOWN="Unknown";

/*
*Phonetypeconstants
*/
publicstaticfinalStringPHONE_CDMA="CDMA";
publicstaticfinalStringPHONE_GSM="GSM";
publicstaticfinalStringPHONE_SIP="SIP";
publicstaticfinalStringPHONE_NONE="Noradio";

@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//Getthetelephonysystemservicetofindoutnetworkdetails
finalTelephonyManagertm=(TelephonyManager)getSystemService(TELEPHONY_SERVICE);

//Updatetextviewswithreadablevalues.
updateViews(tm);

//Sincetheseattributescanchange,wewillregistera
//{@codePhoneStateListener}tolistenforthesechangesand
//updatetheview.
tm.listen(newPhoneStateListener(){
@Override
publicvoidonServiceStateChanged(ServiceStateserviceState){
//UpdateourTextViews
updateViews(tm);
}

@Override
publicvoidonDataConnectionStateChanged(intstate){
//Achangeindataconnectionstatemaybeduetoavailability
//ofadifferentnetworktype
updateViews(tm);
}

},PhoneStateListener.LISTEN_SERVICE_STATE
|PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
}

@Override
protectedvoidonResume(){
super.onResume();
finalTelephonyManagertm=(TelephonyManager)getSystemService(TELEPHONY_SERVICE);

//Updatetextviewswithreadablevalues.
updateViews(tm);
}

/**
*Updatetextviewswithtelephonyattributes.
*/
privatefinalvoidupdateViews(TelephonyManagertm){

//Thetelephonysystemservicereturnsintegerconstantsforvarious
//telephonyattributes.
TextViewview=null;

view=(TextView)findViewById(R.id.sim_state);
view.setText("SIMState:"+mapSimStateToName(tm.getSimState()));

view=(TextView)findViewById(R.id.network_type);
view.setText("NetworkType:"+mapNetworkTypeToName(tm.getNetworkType()));

view=(TextView)findViewById(R.id.phone_type);
view.setText("PhoneType:"+mapDeviceTypeToName(tm.getPhoneType()));

view=(TextView)findViewById(R.id.network_name);
view.setText("NetworkOperator:"+tm.getNetworkOperatorName());
}

/**
*ReturnsastringdescribingthecurrentSIMstate.
*/
privatestaticStringmapSimStateToName(intsimState){
switch(simState){
caseTelephonyManager.SIM_STATE_ABSENT:
returnSIM_ABSENT;
caseTelephonyManager.SIM_STATE_READY:
returnSIM_READY;
caseTelephonyManager.SIM_STATE_PIN_REQUIRED:
returnSIM_PIN_REQUIRED;
caseTelephonyManager.SIM_STATE_PUK_REQUIRED:
returnSIM_PUK_REQUIRED;
caseTelephonyManager.SIM_STATE_NETWORK_LOCKED:
returnSIM_NETWORK_LOCKED;
caseTelephonyManager.SIM_STATE_UNKNOWN:
returnSIM_UNKNOWN;
default:
//shouldn'thappen.
returnnull;
}
}

/**
*Returnsastringindicatingthephoneradiotype.
*/
privatestaticStringmapDeviceTypeToName(intdevice){

switch(device){
caseTelephonyManager.PHONE_TYPE_CDMA:
returnPHONE_CDMA;
caseTelephonyManager.PHONE_TYPE_GSM:
returnPHONE_GSM;
caseTelephonyManager.PHONE_TYPE_SIP:
returnPHONE_SIP;
caseTelephonyManager.PHONE_TYPE_NONE:
returnPHONE_NONE;
default:
//shouldn'thappen.
returnnull;
}
}

/**
*Returnsastringdescribingthenetworktype.
*/
publicstaticStringmapNetworkTypeToName(intnetworkType){

switch(networkType){
caseTelephonyManager.NETWORK_TYPE_CDMA:
returnNETWORK_CDMA;
caseTelephonyManager.NETWORK_TYPE_EDGE:
returnNETWORK_EDGE;
caseTelephonyManager.NETWORK_TYPE_GPRS:
returnNETWORK_EDGE;
caseTelephonyManager.NETWORK_TYPE_UMTS:
returnNETWORK_UMTS;
caseTelephonyManager.NETWORK_TYPE_EVDO_0:
returnNETWORK_EVDO_0;
caseTelephonyManager.NETWORK_TYPE_EVDO_A:
returnNETWORK_EVDO_A;
caseTelephonyManager.NETWORK_TYPE_EVDO_B:
returnNETWORK_EVDO_B;
caseTelephonyManager.NETWORK_TYPE_1xRTT:
returnNETWORK_1X_RTT;
caseTelephonyManager.NETWORK_TYPE_HSDPA:
returnNETWORK_HSDPA;
caseTelephonyManager.NETWORK_TYPE_HSPA:
returnNETWORK_HSPA;
caseTelephonyManager.NETWORK_TYPE_HSUPA:
returnNETWORK_HSUPA;
caseTelephonyManager.NETWORK_TYPE_IDEN:
returnNETWORK_IDEN;
caseTelephonyManager.NETWORK_TYPE_LTE:
returnNETWORK_LTE;
caseTelephonyManager.NETWORK_TYPE_EHRPD:
returnNETWORK_EHRPD;
//caseTelephonyManager.NETWORK_TYPE_HSPAP:
//returnNETWORK_HSPAP;
caseTelephonyManager.NETWORK_TYPE_UNKNOWN:
default:
returnNETWORK_UNKOWN;
}
}
}
//main.xml
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextViewandroid:id="@+id/phone_type"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextViewandroid:id="@+id/network_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextViewandroid:id="@+id/sim_state"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextViewandroid:id="@+id/network_type"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值