1
信号強度とセルIDとlacを表示します。私はSIGNAL_STRENGTHSとCELL_LOCATIONの両方のリスナーを作成しました。私はまだUMTS(そのスタック-1を示している)で接続し、私はセルIDとラックを表示することはできません適切な値を取得することはできません。 Iveは、リスナークラス内に別のメソッドを追加して、場所の変更をリッスンしました。私はそれが正しいかどうかは分かりません。 onCellLocationChanged()メソッドはPhoneStateListenerに属していますが、なぜ私はこれを取得していますか?ありがとうございましたcellLocationChangedメソッドがタイプアクティビティで定義されていません
package com.example.gsmdata;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.widget.TextView;
import android.telephony.TelephonyManager;
import android.telephony.SignalStrength;
import android.telephony.gsm.GsmCellLocation;
import android.telephony.cdma.CdmaCellLocation;
import android.telephony.PhoneStateListener;
public class GsmDataActivity extends Activity {
/** Called when the activity is first created. */
int network_type;
int signal_strength;
int cid;
int Lac;
int bts;
TextView network, signal, ci, lac;
TelephonyManager phone ;
GsmCellLocation CellId;
CdmaCellLocation baseStation;
SignalStrength phone_sig;
signalStateListener listenphone;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
network = (TextView) findViewById(R.id.tvNetwork);
signal =(TextView) findViewById(R.id.tvSignalValue);
ci = (TextView) findViewById(R.id.tvCiValue);
lac = (TextView) findViewById(R.id.tvLacValue);
/* Update Listener and start it */
phone = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
listenphone= new signalStateListener();
phone.listen(listenphone, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS | PhoneStateListener.LISTEN_CELL_LOCATION);
network_type = phone.getNetworkType();
switch (network_type){
case 1: network.setText("GPRS");break;
case 3: network.setText("UMTS");break;
case 4: network.setText("CDMA");break;
case 8: network.setText("HSDPA");break;
case 9: network.setText("HSUPA");break;
case 10: network.setText("HSPA");break;
case 13: network.setText("LTE");break;
default: network.setText("UNKNOWN");break;
}
}
@Override
protected void onPause()
{
super.onPause();
phone.listen(listenphone, PhoneStateListener.LISTEN_NONE);
}
@Override
protected void onResume()
{
super.onResume();
phone.listen(listenphone, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS |PhoneStateListener.LISTEN_CELL_LOCATION);
network_type = phone.getNetworkType();
switch (network_type){
case 1: network.setText("GPRS");break;
case 3: network.setText("UMTS");break;
case 4: network.setText("CDMA");break;
case 8: network.setText("HSDPA");break;
case 9: network.setText("HSUPA");break;
case 10: network.setText("HSPA");break;
case 13: network.setText("LTE");break;
default: network.setText("UNKNOWN");break;
}
}
private class signalStateListener extends PhoneStateListener{
@Override
public void onSignalStrengthsChanged(SignalStrength phone_sig){
super.onSignalStrengthsChanged(phone_sig);
if (network_type==1){
signal_strength = phone_sig.getGsmSignalStrength();
signal.setText(-1*(113-(2*signal_strength)) + "dBm");
}
else if(network_type==0){
signal.setText("Unknown Network type");
}
else{
signal_strength= phone_sig.getCdmaDbm();
signal.setText(signal_strength + "dBm");
}
}
}
public void onCellLocationChanged(GsmCellLocation CellId){
super.onCellLocationChanged(CellId);
ci.setText(CellId.getCid());
lac.setText(CellId.getLac());
/*bts= baseStation.getBaseStationId();
Lac=cellId.getLac();*/
}
}
は、そのは、LTEおよびUMTSタイプのネットワークで作業していないセルを見ることができれば – Ateeq
@Ateeq http://developer.android.com/reference/android/telephony/PhoneStateListener.html#onCellInfoChanged(java.util.List) –
black