android中保存当前小区信号强度的问题

android中保存当前小区信号强度的问题,android,listener,telephonymanager,rssi,signal-strength,Android,Listener,Telephonymanager,Rssi,Signal Strength,我正试图得到我所连接的当前电池的信号强度。到目前为止,我发现了这个例子: 但这只是为了在信号改变时干杯。有没有办法将信号强度值保存在变量中 我用下面的代码尝试了这一点,将值保存在一个变量上并得到它,但我一直得到“初始值”。代码如下: package org.mode.gsm; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.telepho

我正试图得到我所连接的当前电池的信号强度。到目前为止,我发现了这个例子:

但这只是为了在信号改变时干杯。有没有办法将信号强度值保存在变量中

我用下面的代码尝试了这一点,将值保存在一个变量上并得到它,但我一直得到“初始值”。代码如下:

package org.mode.gsm;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.SignalStrength;
import android.telephony.TelephonyManager;
import android.widget.TextView;
import android.widget.Toast;

public class GetGsmSignalStrength extends Activity {

    TelephonyManager Tel;
    MyPhoneStateListener MyListener;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView abcd = new TextView(this);
        abcd.setText(getRSSI());
        setContentView(abcd);
    }

    public String getRSSI() {
        MyListener = new MyPhoneStateListener();
        Context context = (Context) getApplicationContext();
        Tel = (TelephonyManager) context
                .getSystemService(Context.TELEPHONY_SERVICE);
        Tel.listen(MyListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
        String GSMCinr = "GSM CINR = " + MyListener.getCinr();
        return GSMCinr;
    }

    private class MyPhoneStateListener extends PhoneStateListener {

        String cinr = "initial value";

        @Override
        public void onSignalStrengthsChanged(SignalStrength signalStrength) {
            super.onSignalStrengthsChanged(signalStrength);
            cinr = String.valueOf(signalStrength.getGsmSignalStrength());
            Toast.makeText(
                    getApplicationContext(),
                    "GSM Cinr = "
                            + String.valueOf(signalStrength
                                .getGsmSignalStrength()), Toast.LENGTH_LONG)
                    .show();
        }

        public String getCinr() {
            return cinr;
        }
    }
}
以及舱单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.mode.gsm"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="7" />

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".GetGsmSignalStrength" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
         </activity>
    </application>

</manifest>

如果有人能帮我保存信号强度的价值,或者建议其他方法,我将不胜感激

谢谢

Rssi在INTEGER中声明;因此,在创建一个函数(字符串)之后,可以像这样返回“+Rssi”

public String getRssi(){
        return ""+Rssi;
}
您必须转换以dBm为单位的值。
希望这会有帮助

您希望将信号强度保存到何处?SD卡、网络、本地数据库上的文件?首先,我只想将其保存在变量中,稍后我会将其放入数据库中,但这不是问题。。。我只想从我的GetGsmSignalStrength类中获得它
public String getRssi(){
        return ""+Rssi;
}