2012-04-24 23 views
2

接続の有無にかかわらず「ライセンスされていない」応答を提供するライセンスチェックに行って、私は回避策を試しています。私は信号強度を確認したいと思っていましたが、接続がないために信号強度が50%(15)を超えているか99を返している場合は、次回のアプリケーション起動時までチェックをバイパスします。この方法では、許可されたユーザーはNOT LICENSED応答を見るべきではありません。getGsmSignalStrength()は常に '99'を返します

質問1:getGsmSignalStrength()を使用すると、phone/3g/4g強度またはwifi強度だけが返されます。ユーザーがWi-Fiモードになっている場合よりもうまくいくはずですか?私はwifiが接続されているかどうかを確認する方法を知っているので、私はいつでも必要に応じてwifiをチェックするために使用することができます。

質問2:getGsmSignalStrength()は、自分の電話機を見つめているのに、完全な強度を示していても、常に「99」の値を返します。

ConnecetivityCheck.javaの目的はすべてチェックしてから続行します。今私はちょうど自動的にチェックをジャンプし、getGsmSignalStrength()番号でトーストボックスを表示するが、これは常に '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

質問1ファイル:それは唯一のGSM信号の強さでなければなりません。

質問2:あなたのコードに間違いはありません。あなたはGSM信号を受信して​​いますか?あなたが米国に住んでいる場合は、CDMAネットワークを使用している可能性が高くなります。その信号強度を得る他の方法があります:Link

+0

私は米国にいます。 DOH!それはなぜそれが来るのかを説明するだろう99. LOL。ありがとうございました。あなたが見ていることは、常に小さなものです。あなたはCDMAの範囲を知っていますか? – djmedic

+0

申し訳ありませんが、その情報を見つけるのは難しくありません。がんばろう! – Heinrisch

+0

CDMAの範囲は何ですか?常に負のdBmなので、どのようにパーセンテージで動作するかはわかりません。 – JPM

関連する問題