Проблемы с сохранением силы сигнала текущей ячейки в Android - PullRequest
0 голосов
/ 03 марта 2012

Я пытаюсь получить уровень сигнала текущей ячейки, к которой я подключен.До сих пор я нашел этот пример:

http://www.android10.org/index.php/forums/44-maplocation/868-tutorialget-gsm-signal

Но это только для получения тоста, когда сигнал меняется.Есть ли способ сохранить значение силы сигнала в переменной?

Я пробовал это с помощью следующего кода, сохраняя значение в переменной и получая его, но я продолжаю получать «начальное значение»,Вот код:

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>

Я был бы очень признателен, если бы кто-нибудь мог помочь мне сохранить значение силы сигнала или предложить другой способсделай это ...

Спасибо

1 Ответ

1 голос
/ 20 апреля 2012
GetRssi listener = new GetRssi();
protected int Rssi;
Rssi = 99;

private class GetRssi extends PhoneStateListener 
{
    @Override  
    public void onSignalStrengthsChanged(SignalStrength signalStrength)
    {
         super.onSignalStrengthsChanged(signalStrength);
         Rssi  = signalStrength.getGsmSignalStrength();
    }
    }

Rssi был объявлен в Interger;Таким образом, после того, как вы сможете создать функцию (String), которая будет возвращать "" + Rssi, как это

public String getRssi(){
        return ""+Rssi;
}

Вы должны преобразовать значение в дБм.Надеюсь, что это поможет !!!

...