Skip to content
Advertisement

what is the correct com.skype.* usage with Linux?

On Linux (Ubuntu 14.04), this code hangs after “got contact list” is printed:

package skype;

import com.skype.ContactList;
import com.skype.Friend;
import com.skype.Skype;
import com.skype.SkypeException;

public class ContactLister {

    public void getAllFriend() throws SkypeException, InterruptedException {
        System.out.println("starting...");
        ContactList contactList = Skype.getContactList();
        System.out.println("got contact list " + contactList.toString());
        Friend friends[] = contactList.getAllFriends();
        System.out.println("got friends");
        System.out.println(friends.length);
        for (Friend friend : friends) {
            System.out.println("Friend ID :" + friend.getId());
            Thread.sleep(100);
        }
    }

    public static void main(String[] args) throws SkypeException, InterruptedException, SkypeException {
        new ContactLister().getAllFriend();
    }
}

Examining the library, com.skype.connector would seem to use JNI to connect with Skype. At least for me, the connection never seems to occur.

Is it even possible to use this to connect to skype? How do I know why why it’s not (apparently) connecting?

thufir@dur:~$ 
thufir@dur:~$ java -jar NetBeansProjects/Skype/dist/Skype.jar 
starting...
got contact list com.skype.ContactList@1d7ad1c
^Cthufir@dur:~$ 
thufir@dur:~$ skype --version
Skype 4.2.0.11
Copyright (c) 2004-2013, Skype
thufir@dur:~$ 

Advertisement

Answer

While this works:

package net.bounceme.dur.skype;

import java.io.*;

public class SkypeEchoTest {

    public static void main(String args[]) throws IOException {
        String s = null;
        Process p = Runtime.getRuntime().exec("skype --callto echo123");
        BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
        System.out.println("Here is the standard output of the command:n");
        while ((s = stdInput.readLine()) != null) {
            System.out.println(s);
        }
        System.exit(0);
    }
}

It doesn’t quite have the “wow” factor. Also, it just works on Linux, not sure how it would work in Windows. (You have to have Skype running first, then execute the bytecode.)

User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement