web-dev-qa-db-fra.com

Comment se connecter Android wifi pour adhoc wifi?)

Je suis nouveau sur le système Android. Est-ce exact, le Android 2.2.1 WIFI détecte uniquement les réseaux sans fil non ad hoc?). Je me demandais si Il existe un moyen de connecter mon Android à une configuration de réseau ad hoc à partir de mon ordinateur portable.

61
Cyril Horad

Vous avez raison de dire que cette fonctionnalité n'est actuellement pas prise en charge de manière native dans Android, bien que Google l'ait annoncée depuis le lancement officiel de Android.

Bien que non pris en charge de manière native, le matériel de chaque Android périphérique publié à ce jour le prend en charge. Il est simplement désactivé dans le logiciel et vous devez l'activer pour pouvoir utiliser ces fonctionnalités.

C'est cependant assez facile à faire, mais vous devez être root, et les détails peuvent être légèrement différents entre différents appareils. Les développeurs XDA seraient votre meilleure source d'information à ce sujet. http://forum.xda-developers.com/forumdisplay.php?f=564 . La plupart des solutions existantes sont basées sur le remplacement de wpa_supplicant, et c'est la méthode que je recommanderais si possible sur votre appareil. Pour plus de détails, voir http://szym.net/2010/12/adhoc-wifi-in-Android/ .

Mise à jour : Cela fait quelques années maintenant, et chaque fois que j'ai besoin d'un réseau ad hoc sur mon téléphone, j'utilise CyanogenMod . Il vous donne à la fois un accès programmé et un script à ces fonctions, ainsi que la possibilité de créer des réseaux ad hoc (ibss) dans le menu des paramètres WiFi.

38
Andy

Si vous souhaitez spécifiquement utiliser un réseau sans fil ad hoc , alors la réponse de Andy semble être votre seule option. Toutefois, si vous souhaitez simplement partager la connexion Internet de votre ordinateur portable via Wi-Fi par tout moyen nécessaire, vous avez au moins deux options supplémentaires:

  1. Utilisez votre ordinateur portable comme routeur pour créer un point d'accès wifi à l'aide de routeur virtuel ou Connectify . On peut trouver un bel ensemble d’instructions ici .
  2. Utilisez le protocole Wi-fi Direct qui crée une connexion directe entre tous les appareils qui le prennent en charge, même si avec Android, le support des appareils est limité * et avec Windows, cette fonctionnalité semble probable.) être sous Windows 8 uniquement.

* Certains téléphones avec Android 2.3 ont des extensions de système d’exploitation propriétaires qui permettent le Wi-fi Direct (la plupart des téléphones plus récents de Samsung), mais Android 4 devraient pleinement prendre en charge cette fonctionnalité (- source ).

15
Silveri

J'ai remarqué quelque chose d'intéressant ici: dans mon téléphone 2.3.4, je ne peux pas voir les SSID AP/AdHoc dans le menu Paramètres> Sans fil et réseaux. Sur un Acer A500 tournant sous 4.0.3, je les vois, préfixés par (*)

Cependant, dans le texte de code suivant que j'ai adapté à partir de (je ne me souviens plus de la source, désolé!), Le Ad Hoc apparaît dans l'analyse Wifi sur mon téléphone 2.3.4. Je cherche toujours à connecter et créer un socket + input/outputStream. Mais, voila:

    public class MainActivity extends Activity {

private static final String CHIPKIT_BSSID = "E2:14:9F:18:40:1C";
private static final int CHIPKIT_WIFI_PRIORITY = 1;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final Button btnDoSomething = (Button) findViewById(R.id.btnDoSomething);
    final Button btnNewScan = (Button) findViewById(R.id.btnNewScan);
    final TextView textWifiManager = (TextView) findViewById(R.id.WifiManager);
    final TextView textWifiInfo = (TextView) findViewById(R.id.WifiInfo);
    final TextView textIp = (TextView) findViewById(R.id.Ip);

    final WifiManager myWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    final WifiInfo myWifiInfo = myWifiManager.getConnectionInfo();

    WifiConfiguration wifiConfiguration = new WifiConfiguration();
    wifiConfiguration.BSSID = CHIPKIT_BSSID;
    wifiConfiguration.priority = CHIPKIT_WIFI_PRIORITY;
    wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
    wifiConfiguration.allowedKeyManagement.set(KeyMgmt.NONE);
    wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
    wifiConfiguration.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
    wifiConfiguration.status = WifiConfiguration.Status.ENABLED;

    myWifiManager.setWifiEnabled(true);

    int netID = myWifiManager.addNetwork(wifiConfiguration);

    myWifiManager.enableNetwork(netID, true);

    textWifiInfo.setText("SSID: " + myWifiInfo.getSSID() + '\n' 
            + myWifiManager.getWifiState() + "\n\n");

    btnDoSomething.setOnClickListener(new View.OnClickListener() {          
        public void onClick(View v) {
            clearTextViews(textWifiManager, textIp);                
        }           
    });

    btnNewScan.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            getNewScan(myWifiManager, textWifiManager, textIp);
        }
    });     
}

private void clearTextViews(TextView...tv) {
    for(int i = 0; i<tv.length; i++){
        tv[i].setText("");
    }       
}

public void getNewScan(WifiManager wm, TextView...textViews) {
    wm.startScan();

    List<ScanResult> scanResult = wm.getScanResults();

    String scan = "";

    for (int i = 0; i < scanResult.size(); i++) {
        scan += (scanResult.get(i).toString() + "\n\n");
    }

    textViews[0].setText(scan);
    textViews[1].setText(wm.toString());
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

N'oubliez pas que dans Eclipse, vous pouvez utiliser Ctrl + Maj + [lettre O] pour compléter les importations manquantes ...

et mon manifeste:

    <manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.digilent.simpleclient"
Android:versionCode="1"
Android:versionName="1.0" >

<uses-sdk
    Android:minSdkVersion="8"
    Android:targetSdkVersion="15" />
<uses-permission Android:name="Android.permission.ACCESS_WIFI_STATE"/>
<uses-permission Android:name="Android.permission.CHANGE_WIFI_STATE"/>

<application
    Android:icon="@drawable/ic_launcher"
    Android:label="@string/app_name"
    Android:theme="@style/AppTheme" >
    <activity
        Android:name=".MainActivity"
        Android:label="@string/title_activity_main" >
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

J'espère que ça t'as aidé!

5
Chris

Si vous avez une carte Microsoft Virtual WiFi Miniport comme l’une des cartes réseau disponibles, procédez comme suit:

  • Exécuter le processeur de commandes Windows (cmd) en tant qu'administrateur
  • Type: netsh wlan set hostednetwork mode=allow ssid=NAME key=PASSWORD
  • Ensuite: netsh wlan start hostednetwork
  • Ouvrez "Panneau de configuration\Réseau et Internet\Connexions réseau".
  • Cliquez avec le bouton droit sur votre carte réseau active (celle que vous utilisez pour vous connecter à Internet), puis cliquez sur Propriétés.
  • Puis ouvrez l'onglet Partage
  • Cochez "Autoriser les autres utilisateurs du réseau à se connecter ..." et sélectionnez votre adaptateur WiFi Miniport.
  • Une fois terminé, tapez: netsh wlan stop hostednetwork

C'est ça!

Source: Comment connecter Android téléphone à un réseau ad-hoc sans logiciel.

5
w35l3y

Vous avez raison, mais notez que vous pouvez le faire dans l’inverse - utilisez Android) le partage de connexion Wi-Fi qui configure le téléphone en tant que station de base et vous connectez à cette dernière à partir de votre ordinateur portable.

1
gby