2012-03-03 8 views
0

私が接続している現在のセルの信号強度を取得しようとしています。これまでのところ、私はこの例を見つけた:アンドロイドの現在のセルの信号強度を保存する際の問題

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> 

私は本当に誰も私には信号強度の値を救うことができれば、それを感謝し、またはそれを行うには、他の方法をお勧めします。.. 。

おかげ

+0

どこに信号強度を保存しますか? SDカード、ネットワーク、ローカルデータベースのファイルですか? – qdot

+0

まず、変数に保存したいのですが、後でデータベースを作成しますが、それは問題ではありません。 GetGsmSignalStrengthクラスから取得できるだけです – modellero

答えて

1
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で宣言されました。だからあなたはそのような "+ Rssi"を返す関数(String)を作成することができます

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

dBmで値を変換する必要があります。 希望があれば助かります!

関連する問題