2012-04-24 6 views
2

연결이 없거나 연결이없는 "라이센스가없는"응답을 제공하는 라이센스 검사에 대해 작업하고 있습니다. 신호 강도를 확인하고 싶었고 연결이 없기 때문에 50 % (15)를 넘거나 99를 반환하면 다음에 앱이 더 좋은 신호로 시작될 때까지 수표를 무시하고 싶습니다. 이렇게하면인가 된 사용자는 NOT LICENSED 응답을 볼 수 없습니다.getGsmSignalStrength()는 항상 '99'를 반환합니다.

질문 1 : getGsmSignalStrength()를 사용할 때 전화/3g/4g 강도 또는 무선 랜 강도 만 반환합니다. 사용자가 Wi-Fi 모드에있는 것보다 잘 작동해야하는 경우 Wi-Fi가 연결되어 있는지 확인하는 방법을 알고 있으므로 필요한 경우 Wi-Fi를 항상 사용할 수 있습니다.

질문 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