getGsmSignalStrength()总是返回'99'

时间:2012-04-24 17:21:18

标签: android signal-strength

对许可检查提供“未许可”的响应,没有连接或连接不足,我一直在尝试解决。我想检查信号强度,如果它超过50%(15)或由于没有连接而返回99,我希望它绕过检查,直到下次应用程序以更好的信号启动时。这样,任何授权用户都不会看到NOT LICENSED响应。

问题1:使用getGsmSignalStrength()时,只返回手机/ 3g / 4g强度或wifi强度。如果用户处于wifi模式而不是它应该工作?我知道如何检查wifi是否已连接,所以我总是可以使用它来检查wifi是否需要。

问题2:getGsmSignalStrength()总是返回值'99',即使我正盯着我的手机并且显示全力。

检查ConnecetivityCheck.java的全部目的然后继续。现在我只是让它自动跳过支票并用getGsmSignalStrength()号显示Toast框,但这总是显示'99'。

请帮助,谢谢。 下面我附上了我的代码......

的Manifest.xml

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

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

<!-- PERMISSIONS -->
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


<!-- LICENSE PERMISSIONS -->
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />

<!-- USES -->
<uses-feature android:name="android.hardware.telephony" android:required="false"/>

<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
    <activity android:name=".ProtocolsSplashActivity"
              android:label="@string/app_name">
        <intent-filter>

.Java文件

package com.emsprotocols.ilpaemsprotocols;

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

public class ConnectivityCheck extends Activity {
TelephonyManager        Tel;
MyPhoneStateListener    MyListener;

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);         

    /* Update the listener, and start it */
    MyListener   = new MyPhoneStateListener();
    Tel       = ( TelephonyManager )getSystemService(Context.TELEPHONY_SERVICE);
  Tel.listen(MyListener ,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);

        startActivity(new Intent(this, ProtocolsMMenuActivity.class));  
        ConnectivityCheck.this.finish();
}

/* Called when the application is minimized */
@Override
protected void onPause()
{
  super.onPause();
  Tel.listen(MyListener, PhoneStateListener.LISTEN_NONE);
 }

 /* Called when the application resumes */
@Override
 protected void onResume()
{
  super.onResume();
  Tel.listen(MyListener,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
}

/* —————————– */
 /* Start the PhoneState listener */
/* —————————– */
 private class MyPhoneStateListener extends PhoneStateListener
 {
   /* Get the Signal strength from the provider, each tiome there is an update */
   @Override
   public void onSignalStrengthsChanged(SignalStrength signalStrength)
   {
      int strengthAmplitude = signalStrength.getGsmSignalStrength();

      super.onSignalStrengthsChanged(signalStrength);
      Toast.makeText(getApplicationContext(), "GSM Cinr = "
         + String.valueOf(strengthAmplitude), Toast.LENGTH_SHORT).show();
   }

 };/* End of private Class */

}

1 个答案:

答案 0 :(得分:1)

问题1:它应该只是GSM信号强度。

问题2:我发现您的代码没有任何问题,您确定您有GSM信号吗?如果你住在美国,你更有可能使用CDMA网络。还有其他方法可以获得信号强度:Link