Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Skype4Java, telefono e chat nelle applicazioni Java

Effettuare con Java operazioni di base come chiamare e inviare SMS
Effettuare con Java operazioni di base come chiamare e inviare SMS
Link copiato negli appunti

In questo articolo esamineremo e utilizzaremo la libreria open source Skype4Java, per interagire con Skype, uno dei programmi VoIP più diffusi al mondo. Questa libreria può essere concettualmente suddivisa in due parti: la prima, contenente le classi e le interfacce Java utilizzabili dal programmatore, e la seconda che comprende le librerie native, richiamate tramite tecnologia JNI (Java Native Interface), per la comunicazione a basso livello con il client Skype.

È possibile scarircare la libreria e la documentazione del progetto dal sito ufficiale.

Skype4Java ci permette è possibile effettuare moltissime operazioni, tra cui:

  • Visualizzare e modificare le impostazioni del client (lingua, sfondi, proprietà)
  • Visualizzare, aggiungere, modificare ed eliminare i contatti ed i gruppi
  • Gestire il proprio profilo
  • Avviare una sessione voce
  • Avviare una sessione di chat
  • Inviare SMS

La classe principale della libreria è com.skype.Skype. Questa classe ci fornisce numerosi metodi statici che ci permettono di recuperare moltissime informazioni: versione installata del client, lista dei gruppi, lista dei contatti, informazioni relative ai profili dei nostri contatti, e molte altre informazioni.

Alcuni esempi ci aiuteranno a prendere confidenza con questa libreria.

Versione installata del client Skype

Skype.getVersion()

Visualizzazione e modifica del proprio profilo

Profile profilo = Skype.getProfile();

System.out.println("ID:" + profilo.getId());
System.out.println("Sesso:" + profilo.getSex());
System.out.println("Città:" + profilo.getCity());
System.out.println("Stato:" + profilo.getStatus());

profilo.setCity("Napoli");

L'oggetto Profile restituito dal metodo getProfile(), contiene le informazioni relative al profilo dell'utente skype attivo sul client, compreso lo stato attuale dell'utente (In linea, Non al computer, Occupato). Le informazioni sono richiamabili mediante i classici metodi getter. È possibile anche modificare tali proprietà utilizzando i metodi setter.

Gli stati possibili di ciascun contatto sono i seguenti:

User.Status.AWAY User.Status.OFFLINE User.Status.ONLINE
User.Status.UNKNOWN User.Status.NA User.Status.DND

Visualizzazione dei contatti

Friend[] contatti = Skype.getContactList().getAllFriends();

for (int i = 0; i < contatti.length; i++) 
{
  Friend contatto = contatti[i];
  System.out.println(contatto.getId() + " " + contatto.getFullName());
}

Il metodo getContactList(), restituisce diverse informazioni sui contatti. Il metodo getAllFriends(), restituisce un array di oggetti Friend che contiene l'elenco completo di tutti i contatti. L'oggetto Friend, contiene tutte le informazioni sul profilo del contatto: id, nome, città, lingua, stato, email.

Creare un nuovo gruppo

Skype.getContactList().addGroup("amici");

Il metodo addGroup() ci permette di aggiungere un nuovo gruppo.

Inserire i contatti in un gruppo

Group amici = Skype.getContactList().getGroup("amici");
			
Friend contatto1 = Skype.getContactList().getFriend("nick1");
Friend contatto2 = Skype.getContactList().getFriend("nick2");
			
amici.addFriend(contatto1);
amici.addFriend(contatto2);

Per inserire i contatti all'interno di un gruppo occorre prima di tutto recuperare l'istanza del gruppo mediante il metodo getGroup(). Successivamente occorre recuperare l'istanza di ciascun contatto da inserire nel gruppo, mediante il metodo getFriend(), ed infine, richiamare il metodo addFriend() della classe Group.

Inviare un messaggio ad un contatto

Friend contatto = Skype.getContactList().getFriend("pippo");

if (null != contatto && contatto.getOnlineStatus().equals(User.Status.ONLINE))
  contatto.send("Ciao Pippo");
else
  System.out.println("Il contatto non è al PC. Il suo stato è '" + contatto.getOnlineStatus() + "'");

Ottenuta l'instanza dell'oggetto Friend, mediante il metodo getFriend(String) della classe ContactList, corrispondente al contatto che ci interessa, e verificato il suo stato, possiamo inviargli un messaggio via chat utilizzando il metodo send(String). Naturalmente, qualora il contatto richiesto non sia presente nella lista dei contatti, il metodo restituirà un riferimento null e quindi non sarà possibile inviargli un messaggio.

Effettuare una chiamata

Friend contatto = Skype.getContactList().getFriend("pippo");

if (null != contatto && contatto.getOnlineStatus().equals(User.Status.ONLINE))
  contatto.call();
else
  System.out.println("Il contatto non è al PC. Il suo stato è '" + contatto.getOnlineStatus() + "'");

Con la stessa logica dell'esempio precedente, è possibile avviare una chiamata. L'unica differenza è il metodo della classe Friend da richiamare. Per inviare un messaggio di chat è necessario utilizzare il metodo send(String), mentre per inoltrare una chiamata, occorre utilizzare il metodo call().

Inviare un SMS

Skype.sendSMS("134567890", "prova sms");

Mediante il metodo sendSMS() è possibile inviare un SMS direttamente ad un numero specifico.

Oltre alla classe Skype, la libreria Skype4Java, mette a disposizione anche la classe SkypeClient, mediante la quale è possibile interagire direttamente con il client. Ad esempio, è possibile aprire la finestra delle impostazioni, la finestra dei contatti, etc.

  • SkypeClient.showSkypeWindow()
  • SkypeClient.showProfileWindow()
  • SkypeClient.showSearchWindow()

Per eseguire gli esempi proposti, è necessario includere nel proprio progetto la libreria specifica del sistema operativo. Nel pacchetto zip scaricabile dal sito ufficiale, infatti, sono inclusi i seguenti file jar:

  • skype_linux.jar per i sistemi linux
  • skype_osx.jar per MAC
  • skype_win32.jar per Windows

Queste sono solo alcune delle funzionalità messe a disposizione dalla libreria Skype4Java, per iniziare a acquisire familiarità con la libreria.

Ti consigliamo anche