2010-11-04 12 views
0

Mon équipe et moi essayons de connecter un téléphone Android au tableau WiFly. Nous avons du mal à faire cela pour nous connecter. Est-ce que certains téléphones ne supportent pas cela ou supportent cette fonctionnalité et que devons-nous faire pour pouvoir effectuer cette connexion?Connectez un téléphone Android au tableau WiFly

Nous avons essayé quelques petites choses, et cela ne fonctionne toujours pas. Si vous avez besoin de plus d'informations faites le moi savoir.

+1

Vous pouvez envisager de poser cette question à http://android.stackexchange.com –

+0

Posté là-bas aussi, merci pour le conseil. – prolink007

+0

Toujours à la recherche d'idées concernant une solution à ce problème, si quelqu'un a quelque chose s'il vous plaît faites le moi savoir! – prolink007

Répondre

0

Nous avons trouvé une solution à ce problème. Nous faisons en sorte que le téléphone serve de point d'accès et que la carte WiFly se connecte au téléphone. Nous l'avons testé en connectant la carte WiFly au téléphone et en nous connectant à un ordinateur portable. Nous avons ensuite navigué vers la page Web par défaut qui se trouve sur le forum WiFly et nous avons pu voir la page. Cela semble fonctionner bien et va résoudre notre problème. Cependant, cela drainera la batterie du téléphone plus rapidement.

0

Je ne serais pas surpris si le problème est avec l'infrastructure (clients d'un point d'accès) par rapport aux modes de mise en réseau sans fil ad-hoc (peer-to-peer). Le plus simple serait de disposer d'un point d'accès auquel les deux appareils puissent se connecter. Il peut être un peu plus difficile de les connecter directement, car vous devez tous les deux travailler en mode ad hoc ou vous devez être prêt à jouer au point d'accès.

+0

Le conseil wifly peut agir en mode adhoc, obtenir le téléphone android pour faire le mode adhoc est la partie difficile. Nous sommes conscients que Android ne supporte pas cette fonctionnalité sans enracinement. Cependant, nous voulons que les consommateurs puissent le faire sans être enracinés. Je vais contacter les développeurs android et voir s'ils ont un aperçu. Publiera les résultats ici quand j'aurai une réponse. – prolink007

+0

Vous feriez peut-être mieux d'essayer d'amener le conseil wifly à jouer au point d'accès (ou en utilisant quelque chose d'autre qui peut à la place). Il est ironique que le plus intelligent de la paire d'appareils soit le partenaire limitant, mais c'est le verrouillage du vendeur pour vous .... –

+0

Chris, nous utilisons le tableau wifly comme «point d'accès». Et nous devons obtenir le téléphone directement connecté à la wifly, pas de mitm. Et quand je dis point d'accès, je l'utilise de manière lâche, parce que le téléphone va faire la connexion, le wifly va simplement accepter la connexion. – prolink007

0

Pour une autre solution ne nécessitant pas de racine, voir this.

1

J'ai eu un projet basé sur le module WiFly et ai développé avec succès une application qui fait une connexion tcp ainsi que des connexions udp avec le module sur le réseau wifi. Non, je n'avais pas besoin de créer mon téléphone comme point d'accès. Je peux communiquer depuis mon téléphone vers WiFly avec un routeur sans fil comme point d'accès. Je pourrais aussi le faire passer en mode commande afin que je puisse éditer sa configuration. Si vous cherchez toujours une solution viable, je serais heureux de vous fournir mon code.

EDIT: Voici l'intégralité du code pour l'application que j'ai faite. Il a été utilisé pour se connecter à WiFly dans un projet de domotique.

Le MainActivity

public class MainActivity extends Activity { 

    private ToggleButton toggleButton1; 
    private TcpClient mTcpClient; 
    private Spinner spinner1, spinner2,spinner3,spinner4; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     addItemsOnSpinner2(); 
     addItemsOnSpinner3(); 
     addItemsOnSpinner4(); 

     new connectTask().execute(""); 
     spinner1 = (Spinner) findViewById(R.id.spinner1); 
     spinner2 = (Spinner) findViewById(R.id.spinner2); 
     Button button_send = (Button) findViewById(R.id.button_send); 
     button_send.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View view) { 

       String message = String.valueOf(spinner1.getSelectedItem()) + " " + String.valueOf(spinner2.getSelectedItem()) + " " + "ON"; 

       //sends the message to the server 
       if (mTcpClient != null) { 
        mTcpClient.sendMessage(message); 
       } 
      } 
      }); 
      Button button_send1 = (Button) findViewById(R.id.button_send1); 
      button_send1.setOnClickListener(new View.OnClickListener() 
      { 
       public void onClick(View view) { 

        String message = String.valueOf(spinner1.getSelectedItem()) + " " + String.valueOf(spinner2.getSelectedItem()) + " " + "OFF"; 

        //sends the message to the server 
        if (mTcpClient != null) { 
         mTcpClient.sendMessage(message); 
        } 
       } 
      }); 
      Button button_intensity = (Button) findViewById(R.id.button_intensity); 
      button_intensity.setOnClickListener(new View.OnClickListener() 
      { 
       public void onClick(View view) { 

        String message = String.valueOf(spinner1.getSelectedItem()) + " " + String.valueOf(spinner2.getSelectedItem()) + " " + String.valueOf(spinner3.getSelectedItem()); 

        //sends the message to the server 
        if (mTcpClient != null) { 
         mTcpClient.sendMessage(message); 
        } 
       } 
      }); 
      Button button_turnon = (Button) findViewById(R.id.button_turnon); 
      button_turnon.setOnClickListener(new View.OnClickListener() 
      { 
       public void onClick(View view) { 

        String message = String.valueOf(spinner4.getSelectedItem()) + " ON"; 

        //sends the message to the server 
        if (mTcpClient != null) { 
         mTcpClient.sendMessage(message); 
        } 
       } 
      }); 
      Button button_turnoff = (Button) findViewById(R.id.button_turnoff); 
      button_turnoff.setOnClickListener(new View.OnClickListener() 
      { 
       public void onClick(View view) { 

        String message = String.valueOf(spinner4.getSelectedItem()) + " OFF"; 

        //sends the message to the server 
        if (mTcpClient != null) { 
         mTcpClient.sendMessage(message); 
        } 
       } 
      }); 
      toggleButton1 = (ToggleButton) findViewById(R.id.toggleButton1); 
      toggleButton1.setOnClickListener(new View.OnClickListener() 
      { 
       public void onClick(View view) { 
        // Is the toggle on? 
        boolean on = ((ToggleButton) view).isChecked(); 

        if (on) { 
         String message = "$$$"; 

         //sends the message to the server 
         if (mTcpClient != null) { 
          mTcpClient.sendMessage(message); 
         } 
        } else { 
         String message = "exit\r"; 

         //sends the message to the server 
         if (mTcpClient != null) { 
          mTcpClient.sendMessage(message); 
         } 
        } 
       } 
       }); 
      Button button_led1 = (Button) findViewById(R.id.button_led1); 
      button_led1.setOnClickListener(new View.OnClickListener() 
      { 
       public void onClick(View view) { 

        String message = "set sys iofunc 0x1\r"; 

        //sends the message to the server 
        if (mTcpClient != null) { 
         mTcpClient.sendMessage(message); 
        } 
       } 
      }); 
      Button button_led2 = (Button) findViewById(R.id.button_led2); 
      button_led2.setOnClickListener(new View.OnClickListener() 
      { 
       public void onClick(View view) { 

        String message = "set sys iofunc 0x2\r"; 

        //sends the message to the server 
        if (mTcpClient != null) { 
         mTcpClient.sendMessage(message); 
        } 
       } 
      }); 
      Button button_led3 = (Button) findViewById(R.id.button_led3); 
      button_led3.setOnClickListener(new View.OnClickListener() 
      { 
       public void onClick(View view) { 

        String message = "set sys iofunc 0x4\r"; 

        //sends the message to the server 
        if (mTcpClient != null) { 
         mTcpClient.sendMessage(message); 
        } 
       } 
      }); 
      Button button_reset = (Button) findViewById(R.id.button_reset); 
      button_reset.setOnClickListener(new View.OnClickListener() 
      { 
       public void onClick(View view) { 

        String message = "set sys iofunc 0x0\r"; 

        //sends the message to the server 
        if (mTcpClient != null) { 
         mTcpClient.sendMessage(message); 
        } 
       } 
      }); 
      Button button_save = (Button) findViewById(R.id.button_save); 
      button_save.setOnClickListener(new View.OnClickListener() 
      { 
       public void onClick(View view) { 

        String message = "save\r"; 

        //sends the message to the server 
        if (mTcpClient != null) { 
         mTcpClient.sendMessage(message); 
        } 
       } 
      }); 
      Button button_reboot = (Button) findViewById(R.id.button_reboot); 
      button_reboot.setOnClickListener(new View.OnClickListener() 
      { 
       public void onClick(View view) { 

        String message = "reboot\r"; 

        //sends the message to the server 
        if (mTcpClient != null) { 
         mTcpClient.sendMessage(message); 
        } 
       } 
      }); 
    } 


     // add items into spinner dynamically 
      public void addItemsOnSpinner2() { 

      spinner2 = (Spinner) findViewById(R.id.spinner2); 
      List<String> list = new ArrayList<String>(); 
      list.add("load1"); 
      list.add("load2"); 
      list.add("load3"); 
      list.add("load4"); 
      list.add("load5"); 
      list.add("load6"); 
      list.add("load7"); 
      list.add("load8"); 
      ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_spinner_item, list); 
      dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      spinner2.setAdapter(dataAdapter); 
      } 

      public void addItemsOnSpinner3() { 

       spinner3 = (Spinner) findViewById(R.id.spinner3); 
       List<String> list = new ArrayList<String>(); 
       list.add("Default"); 
       list.add("10"); 
       list.add("20"); 
       list.add("30"); 
       list.add("40"); 
       list.add("50"); 
       list.add("60"); 
       list.add("70"); 
       list.add("80"); 
       list.add("90"); 
       list.add("100"); 
       ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
        android.R.layout.simple_spinner_item, list); 
       dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       spinner3.setAdapter(dataAdapter); 
       } 

      public void addItemsOnSpinner4() { 

       spinner4 = (Spinner) findViewById(R.id.spinner4); 
       List<String> list = new ArrayList<String>(); 
       list.add("s1"); 
       list.add("s2"); 
       list.add("s3"); 
       list.add("s4"); 
       ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
        android.R.layout.simple_spinner_item, list); 
       dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       spinner4.setAdapter(dataAdapter); 
       } 

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

      public class connectTask extends AsyncTask<String,String,TcpClient> { 

       @Override 
       protected TcpClient doInBackground(String... message) { 

        //we create a TcpClient object and 
        mTcpClient = new TcpClient(new TcpClient.OnMessageReceived() { 
         @Override 
         //here the messageReceived method is implemented 
         public void messageReceived(String message) { 
          //this method calls the onProgressUpdate 
          publishProgress(message); 
         } 
        }); 
        mTcpClient.run(); 

        return null; 
       } 

      } 
} 
le

Et c'est la classe crée un client tcp pour communiquer avec WiFly

package com.example.homauto; 

import android.util.Log; 
import java.io.*; 
import java.net.InetAddress; 
import java.net.Socket; 


public class TcpClient { 

    public static final String SERVERIP = "192.168.1.5"; 
    public static final int SERVERPORT = 2000; 
    // message to send to the server 
    private String mServerMessage; 
    // sends message received notifications 
    private OnMessageReceived mMessageListener = null; 
    // while this is true, the server will continue running 
    private boolean mRun = false; 
    // used to send messages 
    private PrintWriter mBufferOut; 
    // used to read messages from the server 
    private BufferedReader mBufferIn; 

    /** 
    * Constructor of the class. OnMessagedReceived listens for the messages received from server 
    */ 
    public TcpClient(OnMessageReceived listener) { 
     mMessageListener = listener; 
    } 

    /** 
    * Sends the message entered by client to the server 
    * 
    * @param message text entered by client 
    */ 


    public void sendMessage(String message) { 
     if (mBufferOut != null && !mBufferOut.checkError()) { 
      mBufferOut.println(message); 
      mBufferOut.flush(); 
     } 
    } 

    /** 
    * Close the connection and release the members 
    */ 
    public void stopClient() { 



     mRun = false; 

     if (mBufferOut != null) { 
      mBufferOut.flush(); 
      mBufferOut.close(); 
     } 

     mMessageListener = null; 
     mBufferIn = null; 
     mBufferOut = null; 
     mServerMessage = null; 
    } 

    public void run() { 

     mRun = true; 

     try { 
      //here you must put your computer's IP address. 
      InetAddress serverAddr = InetAddress.getByName(SERVERIP); 

      Log.e("TCP Client", "C: Connecting..."); 

      //create a socket to make the connection with the server 
      Socket socket = new Socket(serverAddr, SERVERPORT); 

      try { 

       //sends the message to the server 
       mBufferOut = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true); 

       //receives the message which the server sends back 
       mBufferIn = new BufferedReader(new InputStreamReader(socket.getInputStream())); 


       //in this while the client listens for the messages sent by the server 
       while (mRun) { 

        mServerMessage = mBufferIn.readLine(); 

        if (mServerMessage != null && mMessageListener != null) { 
         //call the method messageReceived from MyActivity class 
         mMessageListener.messageReceived(mServerMessage); 
        } 

       } 

       Log.e("RESPONSE FROM SERVER", "S: Received Message: '" + mServerMessage + "'"); 

      } catch (Exception e) { 

       Log.e("TCP", "S: Error", e); 

      } finally { 
       //the socket must be closed. It is not possible to reconnect to this socket 
       // after it is closed, which means a new socket instance has to be created. 
       socket.close(); 
      } 

     } catch (Exception e) { 

      Log.e("TCP", "C: Error", e); 

     } 

    } 

    //Declare the interface. The method messageReceived(String message) will must be implemented in the MyActivity 
    //class at on asynckTask doInBackground 
    public interface OnMessageReceived { 
     public void messageReceived(String message); 
    } 
} 

espoir cette personne d'aide à l'avenir. Le code est applicable à tous les serveurs TCP et pas seulement WiFly en particulier.

+0

Je sais .. Mais j'ai remarqué après avoir posté ma réponse que la question a presque 3 ans et beaucoup d'avancements ont été faits depuis. Cependant, je posterai toujours le code ... Espérons que cela aide quelqu'un. – user2586280

+0

Même pensé qu'il est vieux, il est encore grandement apprécié! Merci d'avoir prêté vos connaissances et cela aidera quelqu'un. = D – prolink007