2015-12-16 2 views
-4

Je suis assez nouveau pour android, mais il y a quelque chose que je veux vraiment construire et j'ai vraiment besoin de conseils sur comment et ce que je devrais examiner.application de messagerie instantanée Android

il est fondamentalement va être une application de messagerie instantanée pour Android, c'est une application qui ne fonctionne que pour 2 personnes. La personne A et la personne B, elles devront se connecter à l'autre téléphone (je suppose en utilisant un ID unique?), et il y aura un widget sur leur téléphone. Lorsque la personne A appuie sur le bouton, la personne B reçoit un message aléatoire qui apparaît sur le téléphone de la personne B et qui vibre également sur le téléphone de la personne B. et quand la personne B appuie de nouveau sur cette touche, elle fera de même pour le téléphone de la personne A.

Quel type de bibliothèque ou de concept devrais-je examiner dans cette application?

merci

+0

GCM peut vous aider à – Sree

+0

merci pour les conseils, je me demande quelle est la meilleure façon de se connecter b/w 2 téléphones –

Répondre

1

https://thinkandroid.wordpress.com/2010/03/27/incorporating-socket-programming-into-your-applications/

L'idée implique la programmation Socket et de laisser essentiellement un téléphone être le « serveur » et l'autre téléphone le « client ». Maintenant, je ne sais pas si c'est la pratique standard pour laisser deux téléphones communiquer les uns avec les autres, mais cela a fonctionné pour moi dans une nouvelle application sur laquelle j'ai travaillé, et voici: public class ServerActivity extends Activity {

private TextView serverStatus; 

// DEFAULT IP 
public static String SERVERIP = "10.0.2.15"; 

// DESIGNATE A PORT 
public static final int SERVERPORT = 8080; 

private Handler handler = new Handler(); 

private ServerSocket serverSocket; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.server); 
    serverStatus = (TextView) findViewById(R.id.server_status); 

    SERVERIP = getLocalIpAddress(); 

    Thread fst = new Thread(new ServerThread()); 
    fst.start(); 
} 

public class ServerThread implements Runnable { 

    public void run() { 
     try { 
      if (SERVERIP != null) { 
       handler.post(new Runnable() { 
        @Override 
        public void run() { 
         serverStatus.setText("Listening on IP: " + SERVERIP); 
        } 
       }); 
       serverSocket = new ServerSocket(SERVERPORT); 
       while (true) { 
        // LISTEN FOR INCOMING CLIENTS 
        Socket client = serverSocket.accept(); 
        handler.post(new Runnable() { 
         @Override 
         public void run() { 
          serverStatus.setText("Connected."); 
         } 
        }); 

        try { 
         BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())); 
         String line = null; 
         while ((line = in.readLine()) != null) { 
          Log.d("ServerActivity", line); 
          handler.post(new Runnable() { 
           @Override 
           public void run() { 
            // DO WHATEVER YOU WANT TO THE FRONT END 
            // THIS IS WHERE YOU CAN BE CREATIVE 
           } 
          }); 
         } 
         break; 
        } catch (Exception e) { 
         handler.post(new Runnable() { 
          @Override 
          public void run() { 
           serverStatus.setText("Oops. Connection interrupted. Please reconnect your phones."); 
          } 
         }); 
         e.printStackTrace(); 
        } 
       } 
      } else { 
       handler.post(new Runnable() { 
        @Override 
        public void run() { 
         serverStatus.setText("Couldn't detect internet connection."); 
        } 
       }); 
      } 
     } catch (Exception e) { 
      handler.post(new Runnable() { 
       @Override 
       public void run() { 
        serverStatus.setText("Error"); 
       } 
      }); 
      e.printStackTrace(); 
     } 
    } 
} 

// GETS THE IP ADDRESS OF YOUR PHONE'S NETWORK 
private String getLocalIpAddress() { 
    try { 
     for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { 
      NetworkInterface intf = en.nextElement(); 
      for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { 
       InetAddress inetAddress = enumIpAddr.nextElement(); 
       if (!inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress().toString(); } 
      } 
     } 
    } catch (SocketException ex) { 
     Log.e("ServerActivity", ex.toString()); 
    } 
    return null; 
} 

@Override 
protected void onStop() { 
    super.onStop(); 
    try { 
     // MAKE SURE YOU CLOSE THE SOCKET UPON EXITING 
     serverSocket.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

} 

Vous aurez un client et un serveur. Le serveur envoie au client. Comme les deux téléphones s'envoient mutuellement, le client et le serveur changeront constamment. Vous pouvez également essayer d'utiliser la mise en œuvre bluetooth:

android bluetooth implementation basics

Il y a plusieurs façons de faire la mise en réseau, et vous devriez examiner cela. Mais, pour faire vibrer le téléphone, comme vous avez dit que vous vouliez, il suffit d'utiliser le code suivant:

import android.os.Vibrator; 
... 
Vibrator v = (Vibrator) this.context.getSystemService(Context.VIBRATOR_SERVICE); 
// Vibrate for 500 milliseconds 
v.vibrate(500); 

Et vous aurez besoin de cette autorisation dans le manifeste:

<uses-permission android:name="android.permission.VIBRATE"/> 

Laissez-moi savoir si cela a aidé!

:-)

+0

merci beaucoup pour l'info, il me faudra parfois pour obtenir tout cela, je vous ferai savoir si j'ai des problèmes avec votre code tho. Merci –

1

Vous pouvez implémenter un nuage moblie pour le faire. Ex: Google Cloud Message, Parse, ... ceux sont remplacer un serveur web pour recevoir un message, les traiter et envoyer à d'autres. Je recommande d'utiliser Parse: https://parse.com/ (en utilisant la fonction de notification Push). Il a également l'appui Geopoint, fichier magasin, envoyer un message, ...

+0

Parse semble assez cool, je vais besoin de temps pour les lire un par un, mais merci pour les conseils –