2013-01-19 1 views
0

우분투 11.10 이후 버전에서는 JNA가 시스템 유휴 시간을 가질 수 없습니다.JNA는 우분투 11.10 이후 버전에서 시스템 유휴 시간을 얻을 수 없습니다

public static long getIdleTimeMillis() { 
      X11.Window win = null; 
      Xss.XScreenSaverInfo info = null; 
      X11.Display dpy = null; 

      final X11 x11 = X11.INSTANCE; 
      final Xss xss = Xss.INSTANCE; 

      long idlemillis = 0L; 
      try { 
        dpy = x11.XOpenDisplay(null); 
        win = x11.XDefaultRootWindow(dpy); 
        info = xss.XScreenSaverAllocInfo(); 
        xss.XScreenSaverQueryInfo(dpy, win, info); 

        idlemillis = info.idle.longValue(); 

      } finally { 
        if (info != null) 
          x11.XFree(info.getPointer()); 
        info = null; 

        if (dpy != null) 
          x11.XCloseDisplay(dpy); 
        dpy = null; 
      } 
      return idlemillis; 

이 코드를 사용하여 유휴 시간을 캡처하고 있습니다. 그것은 우분투의 낮은 버전에서 잘 작동합니다. 하지만 최신 버전에서는 작동하지 않습니다. 그것은 라인으로부터 움직이지

최종 XSS XSS = Xss.INSTANCE;

나에게 적절한 해결책을 제안하십시오.

+0

가 성공적으로 네이티브 코드에서이 함수를 호출 할 수 있습니다 필요한? 우분투 업그레이드가 해당 라이브러리를 파손했거나 제대로 업데이트하지 못했을 가능성이 큽니다. – technomage

+0

네이티브 코드에서 이러한 함수를 호출 할 수 있습니다. – Martin

+0

라이브러리를로드 할 때 예외가 발생하지 않았습니까? – technomage

답변

0

실제로이 코드는 "libxss1"패키지가 시스템에 설치된 경우에만 작동합니다. 우분투 11.10부터 libXss.so는 기본적으로 설치되지 않습니다.

는 sudo apt-get을이 문제를 해결 libxss1 설치하지만, 추가 시스템 패키지 설치