Monday, July 9, 2012

Skype API version 1.4 RELEASED!!

Hi There,

Finally, I've released version 1.4. on the maven central. I intended to release earlier last week, but I bought a new computer and had a lot of trouble going from lost data to hardware incompatibility with linux.

But the time has come! I worked quite a bit on this version to fix a lot of bugs and I hope it is more stable under every OS platform. Here are the release notes:

  • Windows :
    • now the native library can be compiled using mingw, both under windows and linux. It is still possible to compile using visual studio, but mingw compilation is preferred.
    • a small bug in getInstaledPath function has been fixed.
    • fixed native library extraction and loading
  • Mac OS :
    • fixed problems with getProfile and other functions that depended on deprecated MESSAGE object have been fixed.
    • framework extraction fixed to work both from jar and eclipse

  • Linux : a major rewrite has been done. There are now two native implementations, the old one using X11 and a new one using DBUS. The X11 version was very unstable and sometimes would even connect to a skype instance running on another user.
The default implementation is now DBUS, which proved much more stable on my tests. It is still possible to use the old implementation setting a JAVA System variable, "skype.api.impl", to x11.

Besides the bug fixes, some new features have been added:

  • Chat.setGuidelines : can be used to change a set guidelines
  • Chat.addListener : allows registering a listener that will be triggered for users entering and leaving a chat
  • Skype.addChatEditListener : allows adding a listener that will be triggered when messages are edited

Besides, the samples have been moved to its own project and a lot of refactorings have been to done to organize the code.

The samples can be found on the following project:

https://github.com/taksan/skype-api-samples

Again, for newcomers, you can use the API adding the following dependency to your maven project:

<dependency>
      <groupId>com.github.taksan</groupId>
      <artifactId>skype-java-api</artifactId>
      <version>1.4</version>
</dependency>

There is also a shaded jar, if you prefer:

https://github.com/downloads/taksan/skype-java-api/skype-java-api-1.4.jar

That's it for now. Please, feel free to drop bug reports, I'll try to be more promptly from now on.

7 comments:

  1. Is there any tutorial or javaDoc to the library?

    ReplyDelete
  2. Unfortunally, there aren't javadocs neither tutorials. But there are some sample projects that are very simple (https://github.com/taksan/skype-api-samples)

    The samples are really easy to understand and I think it is the best way to get started.

    ReplyDelete
  3. I got the point, but that's not exactly what i wanted. I've got my own project in which i use java-com-bridge (jacob).
    But the library itself is slightly unstable and i want to try something else.
    My concen is WHAT your library is capable of. Nevertheless, HOW to use it i will get to know eventually.
    For example, can i change contact request text?

    ReplyDelete
  4. Hi Gabriel,

    I am using CentOs to work with the Skype-Java-API.
    The Skype I am using is: "skype_staticQT-4.0.0.8"

    But it always throws an exception:
    java.lang.IllegalStateException: Library libskype_*_skype_x86.so is not in the resource path! This is a bug!

    I also couldn't find any files that are called libskype*

    Do you have an idea what the cause of this problem is? And how to fix it?

    Thank you,
    arres

    ReplyDelete
  5. HI,
    This is a bug. I've just commited a fix and I'll release 1.5 with this fix.

    The file is inside the jar and is extracted in the temporary path, that's probably the reason you didn't find it.

    Best regards

    ReplyDelete
  6. Hi Gabriel,

    Thanks for this awesome work.

    I did this simple test on Mac and received an error:

    public class ListFriends
    {
    public static void main(String[] args) throws Exception
    {
    ContactList contactList = Skype.getContactList();

    for (Friend friend : contactList.getAllFriends())
    {
    System.out.println(friend.getFullName() + " status: " + getStatus(friend));
    }
    }

    private static String getStatus(Friend friend)
    {
    try
    {
    switch (friend.getStatus())
    {
    case AWAY:
    return "away";
    case DND:
    return "do not disturb";
    case NA:
    return "not available";
    case OFFLINE:
    return "offline";
    case ONLINE:
    return "online";
    case SKYPEME:
    return "SkypeMe";
    case SKYPEOUT:
    return "SkypeOut";
    case UNKNOWN:
    default:
    return "unknown";
    }
    }
    catch (SkypeException e)
    {
    return "error";
    }
    }
    }

    Debugging let me see that "ERROR 9901 Internal error" is received in getAllFriends().

    Any hint?

    Moreover I really REALLY would like to retrieve friends list and status from within my own ANDROID app. Any way to achieve this (with you lib or another mean)?

    KR

    ReplyDelete
  7. Skype is good for video chats. For web video conferencing, I prefer using WebEx, GoMeetNow, gotomeeting etc. web conferencing tools. visit more info:- Skype Technical Support You can Call Toll Free No +1-800-231-4635 For US/CA.

    ReplyDelete