Android Open Source - android-chat-telnet Anarchy Telnet






From Project

Back to project page android-chat-telnet.

License

The source code is released under:

GNU Lesser General Public License

If you think the Android project android-chat-telnet listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.anarchy.anarchytelnet;
//ww w . ja v a2s.  c o  m
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.SocketException;
import org.apache.commons.net.telnet.TelnetClient;
import android.app.Notification;
import android.app.PendingIntent;
import android.content.Intent;

// classe qui gre la rception de messages

public class AnarchyTelnet extends Thread implements Runnable {
  // reference sur l'activite principale
  Main main;
    
  // flux de sortie
  public PrintStream out;
  // flux d'entree
  public InputStream in;
  
  // donnees recues
  int data;
  // donnees converties en string
  String stringData;
  // le message est constitue de l'ensemble des donnees recues
  String nouveauMessage;

  /* le string buffer contient tous les messages (les donnees recues) 
  il est prevu pour etre modifier par plusieurs threads sans problemes
  c'est comme ca que les messages s'ajoutent au fur et a mesure*/
  
  public StringBuffer sb;
  
  // le string nouveauMessage sert pour les notifications car il est initialise seulement quand l'appli est en pause

  /* TelnetClient est l'objet principal pour gerer les communications telnet.
  On peut aussi le faire en TCP classique mais parmis les differentes methodes existantes, 
  j'ai trouve que celle-ci fonctionne le mieux car c'est un objet programme pour */
  public TelnetClient telnet;

  AnarchyTelnet(Main m) {
    // on recupere l'activite principale
    main = m;
  }

  public void run() {
    telnet = new TelnetClient();
    // il n'y a qu'un seul StringBuffer qui contient tous les messages
    sb = new StringBuffer();
    
    try {
      // le thread se connecte  anarchy.rayanmestiri.com
      telnet.connect("88.161.45.180", 8080);
      // on etabli une connexion persistante
      telnet.setKeepAlive(true);
      // on recupere le flux entrant
      in = telnet.getInputStream();
      // et le flux sortant
      out = new PrintStream(telnet.getOutputStream());
      
      while (true) {
        // on lit les donnees du flux entrant
        data = in.read();
        // on cast cela en string
        stringData = Character.toString((char) data);
        // on prepare un nouveau message
        if (main.onPause) {
          nouveauMessage += stringData;
        }
        // on ajoute ces donnees dans le StringBuffer
        sb.append(stringData);
        /* on lance un nouveau thread pour modifier le texte dans l'appli
        c'est indispensable car sinon on ne peut pas modifier l'interface
        de l'activite de maniere asynchrone  et ca ferait tout ramer*/
        main.mHandler.post(new Runnable() {
          public void run() {
            // ne sert a rien (j'ai oublie de l'enlever je crois)
            main.text.getText();
            // on change le texte de l'interface que l'on recupere depuis le StringBuffer (pas de problemes entre les threads)
            main.text.setText(sb.toString());
            if (main.onPause) {
              // si l'app est en pause, on notifie
              notifyMessage(nouveauMessage);
            }
          }
        });

      }

    } catch (SocketException e1) {
      // TODO Auto-generated catch block
      e1.printStackTrace();
    } catch (IOException e1) {
      // TODO Auto-generated catch block
      e1.printStackTrace();
    }

  }
  
  // methode de deconnexion non utilisee pour le moment

  public void disconnect() {
    try {
      // on ferme les flux
      in.close();
      out.close();
      // on deconnecte
      telnet.disconnect();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  // methode de notification
  public void notifyMessage(String message) {
    // l'intent qui sera effectue au clic de la notif
    Intent intent = new Intent(main, Main.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
           
           // l'intent fait parti d'un PendingIntent car c'est ce que les notifs utilisent
    PendingIntent pIntent = PendingIntent.getActivity(main, 0, intent, 0);

    // creation de la notification
    Notification n = new Notification.Builder(main)
        .setContentTitle("Nouveau message").setContentText(message)
        // c'est la qu'on donne l'intent
        .setSmallIcon(R.drawable.ic_launcher).setContentIntent(pIntent)
        .setAutoCancel(true)
        // style qui permet d'agrandir la notif
        .setStyle(new Notification.BigTextStyle().bigText(message))
        .build();
    // on apelle la methode pour que la notification soit envoye au systeme
    main.notifyMessage(n);

  }

}




Java Source Code List

com.anarchy.anarchytelnet.AnarchyTelnet.java
com.anarchy.anarchytelnet.EnvoieMessage.java
com.anarchy.anarchytelnet.Main.java
com.anarchy.anarchytelnet.MessageReceiver.java
org.apache.commons.net.DatagramSocketClient.java
org.apache.commons.net.DatagramSocketFactory.java
org.apache.commons.net.DefaultDatagramSocketFactory.java
org.apache.commons.net.DefaultSocketFactory.java
org.apache.commons.net.MalformedServerReplyException.java
org.apache.commons.net.PrintCommandListener.java
org.apache.commons.net.ProtocolCommandEvent.java
org.apache.commons.net.ProtocolCommandListener.java
org.apache.commons.net.ProtocolCommandSupport.java
org.apache.commons.net.SocketClient.java
org.apache.commons.net.io.CRLFLineReader.java
org.apache.commons.net.io.CopyStreamAdapter.java
org.apache.commons.net.io.CopyStreamEvent.java
org.apache.commons.net.io.CopyStreamException.java
org.apache.commons.net.io.CopyStreamListener.java
org.apache.commons.net.io.DotTerminatedMessageReader.java
org.apache.commons.net.io.DotTerminatedMessageWriter.java
org.apache.commons.net.io.FromNetASCIIInputStream.java
org.apache.commons.net.io.FromNetASCIIOutputStream.java
org.apache.commons.net.io.SocketInputStream.java
org.apache.commons.net.io.SocketOutputStream.java
org.apache.commons.net.io.ToNetASCIIInputStream.java
org.apache.commons.net.io.ToNetASCIIOutputStream.java
org.apache.commons.net.io.Util.java
org.apache.commons.net.io.package-info.java
org.apache.commons.net.telnet.EchoOptionHandler.java
org.apache.commons.net.telnet.InvalidTelnetOptionException.java
org.apache.commons.net.telnet.SimpleOptionHandler.java
org.apache.commons.net.telnet.SuppressGAOptionHandler.java
org.apache.commons.net.telnet.TelnetClient.java
org.apache.commons.net.telnet.TelnetCommand.java
org.apache.commons.net.telnet.TelnetInputListener.java
org.apache.commons.net.telnet.TelnetInputStream.java
org.apache.commons.net.telnet.TelnetNotificationHandler.java
org.apache.commons.net.telnet.TelnetOptionHandler.java
org.apache.commons.net.telnet.TelnetOption.java
org.apache.commons.net.telnet.TelnetOutputStream.java
org.apache.commons.net.telnet.Telnet.java
org.apache.commons.net.telnet.TerminalTypeOptionHandler.java
org.apache.commons.net.telnet.WindowSizeOptionHandler.java
org.apache.commons.net.telnet.package-info.java
org.apache.commons.net.util.Base64.java
org.apache.commons.net.util.Charsets.java
org.apache.commons.net.util.KeyManagerUtils.java
org.apache.commons.net.util.ListenerList.java
org.apache.commons.net.util.SSLContextUtils.java
org.apache.commons.net.util.SubnetUtils.java
org.apache.commons.net.util.TrustManagerUtils.java
org.apache.commons.net.util.package-info.java
org.apache.commons.net.package-info.java