2012-04-24 1 views
2

Pour faire la vérification de licence délivrant une réponse «sans licence» avec ou sans connexion faible, j'ai essayé un travail autour. Je voulais vérifier la force du signal et si elle est supérieure à 50% (15) ou renvoie un 99 en raison de l'absence de connexion, je veux qu'elle passe la vérification jusqu'à ce que l'application soit démarrée avec un meilleur signal. De cette façon, aucun utilisateur autorisé ne devrait jamais voir la réponse NON LICENCIE. Question 1: Lors de l'utilisation de getGsmSignalStrength() renvoie seulement force de téléphone/3g/4g ou force wifi. Si l'utilisateur est en mode wifi que cela devrait fonctionner aussi bien? Je sais comment vérifier pour voir si le wifi est connecté, donc je peux toujours l'utiliser pour vérifier le wifi si nécessaire.getGsmSignalStrength() renvoie toujours '99'

Question 2: getGsmSignalStrength() renvoie toujours une valeur de '99' même lorsque je regarde mon téléphone et qu'il montre toute sa puissance. L'objectif entier de ConnecetivityCheck.java est de vérifier puis de continuer. En ce moment je l'ai juste sautant automatiquement au-dessus du contrôle et montrant la boîte de Toast avec le nombre de getGsmSignalStrength(), mais ceci montre toujours '99'.

S'il vous plaît, aidez, merci. Ci-dessous je joins mon code ...

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> 

Le .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 */ 

} 

Répondre

1

Question 1: Il ne devrait être la force du signal GSM.

Question 2: Je ne trouve rien de mal avec votre code, êtes-vous sûr que vous avez un signal GSM? Si vous habitez aux États-Unis est plus probable que vous utilisez un réseau CDMA. Il y a d'autres manières d'obtenir cette force de signal: Link

+0

Je suis aux États-Unis. DOH! Eh bien cela expliquerait pourquoi il ne vient que 99. LOL. Je vous remercie. C'est toujours les petites choses que tu regardes. Connaissez-vous la gamme de CDMA? – djmedic

+0

Non désolé, mais cette information ne devrait pas être trop difficile à trouver. Bonne chance! – Heinrisch

+0

Quelle est la portée de CDMA? son dBm toujours négatif, donc pas sûr de savoir comment cela fonctionne pour les pourcentages. – JPM

Questions connexes