2010-06-07 5 views
3

Y a-t-il une API RIM disponible qui vous aidera à obtenir la liste des services réseau disponibles ou uniquement les réseaux Wi-Fi pour un périphérique et à définir le point d'accès réseau sélectionné pour les communications réseau?Rechercher les réseaux Wi-Fi disponibles sur BlackBerry

Est-il possible pour mon application de désactiver les réseaux mobiles tels que GPRS, WAP, etc.? Lorsque l'application est démarrée, elle doit rechercher les connexions Wi-Fi, même si aucun point d'accès au réseau Wi-Fi n'est défini sur l'appareil, et répertorier les connexions Wi-Fi disponibles. Ensuite, l'utilisateur sélectionnera la connexion Wi-Fi appropriée pour se connecter à toute communication réseau. En dehors de l'application, toute communication Internet, comme le navigateur ou toute autre application, doit être effectuée via la même connexion Wi-Fi sélectionnée. La numérisation pour le Wi-Fi et la configuration de la connexion sont presque similaires à celles de BlackBerry Wi-Fi Setup.

Je cherche à faire cela pour BlackBerry OS 4.5, 4.7 et 5.0.

Mise à jour

La chose est que je suis à la recherche pour la numérisation Wi-Fi grâce à l'application. C'est comme à travers l'application, je suis capable de scanner les points d'accès Wi-Fi disponibles ou des points d'accès et de définir un point d'accès en le sélectionnant à l'appareil, puis se connecter à lui pour la communication.

Fondamentalement, c'est comme, comment pouvons-nous définir la connexion Wi-Fi dans "Gérer la connetion" de BlackBerry? Je dois faire une chose similaire à travers l'application.

de certains forums BlackBerry J'ai appris à connaître il y a paquet dans OS v5.0, qui est un ensemble net.rim.device.api.wlan.hotspot pour obtenir les points d'accès Wi-Fi. Mais après une longue recherche je n'ai trouvé aucun exemple d'exemple ou beaucoup d'explication dessus. Comme j'essaye de mettre en application en examinant sa documentation d'API, mais je n'ai pas réussi.

Si vous avez une idée liée à ceci ou à tout exemple de code, ce sera très utile.

+0

Avez-vous trouvé une solution à cela? Je cherche un exemple de code sur les classes de hotspot et j'ai du mal à en trouver. – Tjaart

Répondre

5

Eh bien, pour rechercher tous les réseaux disponibles pour l'application, vous pouvez utiliser le NetworkDiagnostic tool de RIM.

morceau anthères de code à scanner pour votre connexion téléphonique et d'obtenir la meilleure chaîne de connexion peut être trouvée dans How to reliably establish a network connection on any BlackBerry device,

/** 
* Determines what connection type to use and returns the necessary string to use it. 
* @return A string with the connection info 
*/ 
private static String getConnectionString() 
{ 
    // This code is based on the connection code developed by Mike Nelson of AccelGolf. 
    // http://blog.accelgolf.com/2009/05/22/blackberry-cross-carrier-and-cross-network-http-connection 
    String connectionString = null; 

    // Simulator behavior is controlled by the USE_MDS_IN_SIMULATOR variable. 
    if (DeviceInfo.isSimulator()) 
    { 
      if (UploaderThread.USE_MDS_IN_SIMULATOR) 
      { 
        logMessage("Device is a simulator and USE_MDS_IN_SIMULATOR is true"); 
        connectionString = ";deviceside=false"; 
      } 
      else 
      { 
        logMessage("Device is a simulator and USE_MDS_IN_SIMULATOR is false"); 
        connectionString = ";deviceside=true"; 
      } 
    } 

    // Wi-Fi is the preferred transmission method. 
    else if (WLANInfo.getWLANState() == WLANInfo.WLAN_STATE_CONNECTED) 
    { 
     logMessage("Device is connected via Wifi."); 
     connectionString = ";interface=wifi"; 
    } 

    // Is the carrier network the only way to connect? 
    else if ((CoverageInfo.getCoverageStatus() & CoverageInfo.COVERAGE_DIRECT) == CoverageInfo.COVERAGE_DIRECT) 
    { 
     logMessage("Carrier coverage."); 

     String carrierUid = getCarrierBIBSUid(); 
     if (carrierUid == null) 
     { 
      // Has carrier coverage, but not BIBS. So use the carrier's TCP network 
      logMessage("No Uid"); 
      connectionString = ";deviceside=true"; 
     } 
     else 
     { 
      // otherwise, use the Uid to construct a valid carrier BIBS request 
      logMessage("uid is: " + carrierUid); 
      connectionString = ";deviceside=false;connectionUID="+carrierUid + ";ConnectionType=mds-public"; 
     } 
    } 

    // Check for an MDS connection instead (BlackBerry Enterprise Server). 
    else if ((CoverageInfo.getCoverageStatus() & CoverageInfo.COVERAGE_MDS) == CoverageInfo.COVERAGE_MDS) 
    { 
     logMessage("MDS coverage found"); 
     connectionString = ";deviceside=false"; 
    } 

    // If there is no connection available abort to avoid bugging the user unnecssarily. 
    else if (CoverageInfo.getCoverageStatus() == CoverageInfo.COVERAGE_NONE) 
    { 
     logMessage("There is no available connection."); 
    } 

    // In theory, all bases are covered so this shouldn't be reachable. 
    else 
    { 
     logMessage("no other options found, assuming device."); 
     connectionString = ";deviceside=true"; 
    } 

    return connectionString; 
} 

/** 
* Looks through the phone's service book for a carrier provided BIBS network 
* @return The uid used to connect to that network. 
*/ 
private static String getCarrierBIBSUid() 
{ 
    ServiceRecord[] records = ServiceBook.getSB().getRecords(); 
    int currentRecord; 

    for (currentRecord = 0; currentRecord < records.length; currentRecord++) 
    { 
     if (records[currentRecord].getCid().toLowerCase().equals("ippp")) 
     { 
      if (records[currentRecord].getName().toLowerCase().indexOf("bibs") >= 0) 
      { 
       return records[currentRecord].getUid(); 
      } 
     } 
    } 
    return null; 
} 
+0

J'ai couru ce RIM NetworkDiagnosticTool, et il ne semble pas fournir une liste des réseaux WiFi multiples disponibles. J'ai également inspecté le code source, et je n'ai rien vu là-dedans pour collecter (mais ne pas afficher) cette information. – Nate

Questions connexes