Repository files navigation

LSL java bindings

The Java interface for the lab streaming layer should run on Window/Linux/MacOS, 32/64 bit. The main class is edu.ucsd.sccn.LSL, which provides all necessary functions and sub-classes.

Getting Started - Traditional Build

Users intending to use the liblsl Java interface for Android should skip ahead to the Android-specific section near the bottom.

Generally, to use the labstreaminglayer java interface in your program, you must:

  • import the class edu.ucsd.sccn.LSL
  • include the jna-{version}.jar package in your classpath
    • Tested with version 5.6.0
  • have the native liblsl library for your platform in a findable path
    • e.g., put liblsl64.dll into your application's root directory, or a system folder.
    • The section of code that looks for the shared library is here. This may simplify in the future and the expected filename might change on Windows to lsl.dll to match standard naming conventions.

See the contents of javadoc/ for API documentation.

Examples

See src/examples/ for quick examples of using edu.ucsd.sccn.LSL.

The instructions for the provided examples assume you have configured your system as follows:

  • You have installed the JDK and its executables (javac, java) are on the path.
    • Android Studio users can add its jre/bin folder to the PATH
      • e.g. Windows: set PATH=%PATH%;C:\Program Files\Android\Android Studio\jre\bin
  • Download the jna jar to the root liblsl-Java folder.
    • Click on your version, then find the download link in Files: jar
    • Tested with version 5.6.0
  • Copy the LSL library for your system (e.g., liblsl64.dll) to the root liblsl-Java folder.

Compile the example (JDK binaries javac and java must be on path):

  • ./liblsl-Java$ javac -cp jna-5.6.0.jar src/edu/ucsd/sccn/LSL.java src/examples/SendData.java
    • Swap out SendData.java for another example that you are interested in.

Launch the example:

  • Linux: ./liblsl-Java$ java -Djna.nosys=true -cp "jna-5.6.0.jar:src" examples.SendData
  • Windows: ./liblsl-Java> java -cp "jna-5.6.0.jar;src" examples.SendData
    • (Note the : changes to a ;)

Descriptions of the provided example programs can be found in the online documentation.

Getting Started - Android

The build.gradle is used to build a binary for Android devices and can be used as part of the liblsl-Android project. The build script assumes that the liblsl repository contents can be found in a sister folder: ../liblsl, and that you have a version of CMake >= 3.12 (path to CMake can be configured in local.properties file).

See the liblsl-Android documentation for Android Studio for more information.

Troubleshooting

If you get an error about some class def not found:

  • On some systems you may have to unzip the jna-{version}.jar file to make sure that the libraries contained in it are found by Java.

If you encounter an error like: java.lang.UnsatisfiedLinkError: Unable to load library 'liblsl64.dll': Native library (win32-x86-64/liblsl64.dll) not found in resource path:

  • make sure that your liblsl library is on a path found by the java runtime, e.g., in the path where you execute the java command. One location where it will always be found is a system library path, e.g., Windows/system32 (not SysWOW64) on Windows. It is not recommended to keep the lsl lib here permanently but temporarily this can help during debugging.

About

Java bindings for liblsl

Resources

Stars

7 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

LSL java bindings

The Java interface for the lab streaming layer should run on Window/Linux/MacOS, 32/64 bit. The main class is edu.ucsd.sccn.LSL, which provides all necessary functions and sub-classes.

Getting Started - Traditional Build

Users intending to use the liblsl Java interface for Android should skip ahead to the Android-specific section near the bottom.

Generally, to use the labstreaminglayer java interface in your program, you must:

  • import the class edu.ucsd.sccn.LSL
  • include the jna-{version}.jar package in your classpath
    • Tested with version 5.6.0
  • have the native liblsl library for your platform in a findable path
    • e.g., put liblsl64.dll into your application's root directory, or a system folder.
    • The section of code that looks for the shared library is here. This may simplify in the future and the expected filename might change on Windows to lsl.dll to match standard naming conventions.

See the contents of javadoc/ for API documentation.

Examples

See src/examples/ for quick examples of using edu.ucsd.sccn.LSL.

The instructions for the provided examples assume you have configured your system as follows:

  • You have installed the JDK and its executables (javac, java) are on the path.
    • Android Studio users can add its jre/bin folder to the PATH
      • e.g. Windows: set PATH=%PATH%;C:\Program Files\Android\Android Studio\jre\bin
  • Download the jna jar to the root liblsl-Java folder.
    • Click on your version, then find the download link in Files: jar
    • Tested with version 5.6.0
  • Copy the LSL library for your system (e.g., liblsl64.dll) to the root liblsl-Java folder.

Compile the example (JDK binaries javac and java must be on path):

  • ./liblsl-Java$ javac -cp jna-5.6.0.jar src/edu/ucsd/sccn/LSL.java src/examples/SendData.java
    • Swap out SendData.java for another example that you are interested in.

Launch the example:

  • Linux: ./liblsl-Java$ java -Djna.nosys=true -cp "jna-5.6.0.jar:src" examples.SendData
  • Windows: ./liblsl-Java> java -cp "jna-5.6.0.jar;src" examples.SendData
    • (Note the : changes to a ;)

Descriptions of the provided example programs can be found in the online documentation.

Getting Started - Android

The build.gradle is used to build a binary for Android devices and can be used as part of the liblsl-Android project. The build script assumes that the liblsl repository contents can be found in a sister folder: ../liblsl, and that you have a version of CMake >= 3.12 (path to CMake can be configured in local.properties file).

See the liblsl-Android documentation for Android Studio for more information.

Troubleshooting

If you get an error about some class def not found:

  • On some systems you may have to unzip the jna-{version}.jar file to make sure that the libraries contained in it are found by Java.

If you encounter an error like: java.lang.UnsatisfiedLinkError: Unable to load library 'liblsl64.dll': Native library (win32-x86-64/liblsl64.dll) not found in resource path:

  • make sure that your liblsl library is on a path found by the java runtime, e.g., in the path where you execute the java command. One location where it will always be found is a system library path, e.g., Windows/system32 (not SysWOW64) on Windows. It is not recommended to keep the lsl lib here permanently but temporarily this can help during debugging.

About

Java bindings for liblsl

Resources

Stars

7 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

LSL java bindings

The Java interface for the lab streaming layer should run on Window/Linux/MacOS, 32/64 bit. The main class is edu.ucsd.sccn.LSL, which provides all necessary functions and sub-classes.

Getting Started - Traditional Build

Users intending to use the liblsl Java interface for Android should skip ahead to the Android-specific section near the bottom.

Generally, to use the labstreaminglayer java interface in your program, you must:

  • import the class edu.ucsd.sccn.LSL
  • include the jna-{version}.jar package in your classpath
    • Tested with version 5.6.0
  • have the native liblsl library for your platform in a findable path
    • e.g., put liblsl64.dll into your application's root directory, or a system folder.
    • The section of code that looks for the shared library is here. This may simplify in the future and the expected filename might change on Windows to lsl.dll to match standard naming conventions.

See the contents of javadoc/ for API documentation.

Examples

See src/examples/ for quick examples of using edu.ucsd.sccn.LSL.

The instructions for the provided examples assume you have configured your system as follows:

  • You have installed the JDK and its executables (javac, java) are on the path.
    • Android Studio users can add its jre/bin folder to the PATH
      • e.g. Windows: set PATH=%PATH%;C:\Program Files\Android\Android Studio\jre\bin
  • Download the jna jar to the root liblsl-Java folder.
    • Click on your version, then find the download link in Files: jar
    • Tested with version 5.6.0
  • Copy the LSL library for your system (e.g., liblsl64.dll) to the root liblsl-Java folder.

Compile the example (JDK binaries javac and java must be on path):

  • ./liblsl-Java$ javac -cp jna-5.6.0.jar src/edu/ucsd/sccn/LSL.java src/examples/SendData.java
    • Swap out SendData.java for another example that you are interested in.

Launch the example:

  • Linux: ./liblsl-Java$ java -Djna.nosys=true -cp "jna-5.6.0.jar:src" examples.SendData
  • Windows: ./liblsl-Java> java -cp "jna-5.6.0.jar;src" examples.SendData
    • (Note the : changes to a ;)

Descriptions of the provided example programs can be found in the online documentation.

Getting Started - Android

The build.gradle is used to build a binary for Android devices and can be used as part of the liblsl-Android project. The build script assumes that the liblsl repository contents can be found in a sister folder: ../liblsl, and that you have a version of CMake >= 3.12 (path to CMake can be configured in local.properties file).

See the liblsl-Android documentation for Android Studio for more information.

Troubleshooting

If you get an error about some class def not found:

  • On some systems you may have to unzip the jna-{version}.jar file to make sure that the libraries contained in it are found by Java.

If you encounter an error like: java.lang.UnsatisfiedLinkError: Unable to load library 'liblsl64.dll': Native library (win32-x86-64/liblsl64.dll) not found in resource path:

  • make sure that your liblsl library is on a path found by the java runtime, e.g., in the path where you execute the java command. One location where it will always be found is a system library path, e.g., Windows/system32 (not SysWOW64) on Windows. It is not recommended to keep the lsl lib here permanently but temporarily this can help during debugging.

About

Java bindings for liblsl

Resources

Stars

7 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

LSL java bindings

The Java interface for the lab streaming layer should run on Window/Linux/MacOS, 32/64 bit. The main class is edu.ucsd.sccn.LSL, which provides all necessary functions and sub-classes.

Getting Started - Traditional Build

Users intending to use the liblsl Java interface for Android should skip ahead to the Android-specific section near the bottom.

Generally, to use the labstreaminglayer java interface in your program, you must:

  • import the class edu.ucsd.sccn.LSL
  • include the jna-{version}.jar package in your classpath
    • Tested with version 5.6.0
  • have the native liblsl library for your platform in a findable path
    • e.g., put liblsl64.dll into your application's root directory, or a system folder.
    • The section of code that looks for the shared library is here. This may simplify in the future and the expected filename might change on Windows to lsl.dll to match standard naming conventions.

See the contents of javadoc/ for API documentation.

Examples

See src/examples/ for quick examples of using edu.ucsd.sccn.LSL.

The instructions for the provided examples assume you have configured your system as follows:

  • You have installed the JDK and its executables (javac, java) are on the path.
    • Android Studio users can add its jre/bin folder to the PATH
      • e.g. Windows: set PATH=%PATH%;C:\Program Files\Android\Android Studio\jre\bin
  • Download the jna jar to the root liblsl-Java folder.
    • Click on your version, then find the download link in Files: jar
    • Tested with version 5.6.0
  • Copy the LSL library for your system (e.g., liblsl64.dll) to the root liblsl-Java folder.

Compile the example (JDK binaries javac and java must be on path):

  • ./liblsl-Java$ javac -cp jna-5.6.0.jar src/edu/ucsd/sccn/LSL.java src/examples/SendData.java
    • Swap out SendData.java for another example that you are interested in.

Launch the example:

  • Linux: ./liblsl-Java$ java -Djna.nosys=true -cp "jna-5.6.0.jar:src" examples.SendData
  • Windows: ./liblsl-Java> java -cp "jna-5.6.0.jar;src" examples.SendData
    • (Note the : changes to a ;)

Descriptions of the provided example programs can be found in the online documentation.

Getting Started - Android

The build.gradle is used to build a binary for Android devices and can be used as part of the liblsl-Android project. The build script assumes that the liblsl repository contents can be found in a sister folder: ../liblsl, and that you have a version of CMake >= 3.12 (path to CMake can be configured in local.properties file).

See the liblsl-Android documentation for Android Studio for more information.

Troubleshooting

If you get an error about some class def not found:

  • On some systems you may have to unzip the jna-{version}.jar file to make sure that the libraries contained in it are found by Java.

If you encounter an error like: java.lang.UnsatisfiedLinkError: Unable to load library 'liblsl64.dll': Native library (win32-x86-64/liblsl64.dll) not found in resource path:

  • make sure that your liblsl library is on a path found by the java runtime, e.g., in the path where you execute the java command. One location where it will always be found is a system library path, e.g., Windows/system32 (not SysWOW64) on Windows. It is not recommended to keep the lsl lib here permanently but temporarily this can help during debugging.

About

Java bindings for liblsl

Resources

Stars

7 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

LSL java bindings

The Java interface for the lab streaming layer should run on Window/Linux/MacOS, 32/64 bit. The main class is edu.ucsd.sccn.LSL, which provides all necessary functions and sub-classes.

Getting Started - Traditional Build

Users intending to use the liblsl Java interface for Android should skip ahead to the Android-specific section near the bottom.

Generally, to use the labstreaminglayer java interface in your program, you must:

  • import the class edu.ucsd.sccn.LSL
  • include the jna-{version}.jar package in your classpath
    • Tested with version 5.6.0
  • have the native liblsl library for your platform in a findable path
    • e.g., put liblsl64.dll into your application's root directory, or a system folder.
    • The section of code that looks for the shared library is here. This may simplify in the future and the expected filename might change on Windows to lsl.dll to match standard naming conventions.

See the contents of javadoc/ for API documentation.

Examples

See src/examples/ for quick examples of using edu.ucsd.sccn.LSL.

The instructions for the provided examples assume you have configured your system as follows:

  • You have installed the JDK and its executables (javac, java) are on the path.
    • Android Studio users can add its jre/bin folder to the PATH
      • e.g. Windows: set PATH=%PATH%;C:\Program Files\Android\Android Studio\jre\bin
  • Download the jna jar to the root liblsl-Java folder.
    • Click on your version, then find the download link in Files: jar
    • Tested with version 5.6.0
  • Copy the LSL library for your system (e.g., liblsl64.dll) to the root liblsl-Java folder.

Compile the example (JDK binaries javac and java must be on path):

  • ./liblsl-Java$ javac -cp jna-5.6.0.jar src/edu/ucsd/sccn/LSL.java src/examples/SendData.java
    • Swap out SendData.java for another example that you are interested in.

Launch the example:

  • Linux: ./liblsl-Java$ java -Djna.nosys=true -cp "jna-5.6.0.jar:src" examples.SendData
  • Windows: ./liblsl-Java> java -cp "jna-5.6.0.jar;src" examples.SendData
    • (Note the : changes to a ;)

Descriptions of the provided example programs can be found in the online documentation.

Getting Started - Android

The build.gradle is used to build a binary for Android devices and can be used as part of the liblsl-Android project. The build script assumes that the liblsl repository contents can be found in a sister folder: ../liblsl, and that you have a version of CMake >= 3.12 (path to CMake can be configured in local.properties file).

See the liblsl-Android documentation for Android Studio for more information.

Troubleshooting

If you get an error about some class def not found:

  • On some systems you may have to unzip the jna-{version}.jar file to make sure that the libraries contained in it are found by Java.

If you encounter an error like: java.lang.UnsatisfiedLinkError: Unable to load library 'liblsl64.dll': Native library (win32-x86-64/liblsl64.dll) not found in resource path:

  • make sure that your liblsl library is on a path found by the java runtime, e.g., in the path where you execute the java command. One location where it will always be found is a system library path, e.g., Windows/system32 (not SysWOW64) on Windows. It is not recommended to keep the lsl lib here permanently but temporarily this can help during debugging.

About

Java bindings for liblsl

Resources

Stars

7 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

LSL java bindings

The Java interface for the lab streaming layer should run on Window/Linux/MacOS, 32/64 bit. The main class is edu.ucsd.sccn.LSL, which provides all necessary functions and sub-classes.

Getting Started - Traditional Build

Users intending to use the liblsl Java interface for Android should skip ahead to the Android-specific section near the bottom.

Generally, to use the labstreaminglayer java interface in your program, you must:

  • import the class edu.ucsd.sccn.LSL
  • include the jna-{version}.jar package in your classpath
    • Tested with version 5.6.0
  • have the native liblsl library for your platform in a findable path
    • e.g., put liblsl64.dll into your application's root directory, or a system folder.
    • The section of code that looks for the shared library is here. This may simplify in the future and the expected filename might change on Windows to lsl.dll to match standard naming conventions.

See the contents of javadoc/ for API documentation.

Examples

See src/examples/ for quick examples of using edu.ucsd.sccn.LSL.

The instructions for the provided examples assume you have configured your system as follows:

  • You have installed the JDK and its executables (javac, java) are on the path.
    • Android Studio users can add its jre/bin folder to the PATH
      • e.g. Windows: set PATH=%PATH%;C:\Program Files\Android\Android Studio\jre\bin
  • Download the jna jar to the root liblsl-Java folder.
    • Click on your version, then find the download link in Files: jar
    • Tested with version 5.6.0
  • Copy the LSL library for your system (e.g., liblsl64.dll) to the root liblsl-Java folder.

Compile the example (JDK binaries javac and java must be on path):

  • ./liblsl-Java$ javac -cp jna-5.6.0.jar src/edu/ucsd/sccn/LSL.java src/examples/SendData.java
    • Swap out SendData.java for another example that you are interested in.

Launch the example:

  • Linux: ./liblsl-Java$ java -Djna.nosys=true -cp "jna-5.6.0.jar:src" examples.SendData
  • Windows: ./liblsl-Java> java -cp "jna-5.6.0.jar;src" examples.SendData
    • (Note the : changes to a ;)

Descriptions of the provided example programs can be found in the online documentation.

Getting Started - Android

The build.gradle is used to build a binary for Android devices and can be used as part of the liblsl-Android project. The build script assumes that the liblsl repository contents can be found in a sister folder: ../liblsl, and that you have a version of CMake >= 3.12 (path to CMake can be configured in local.properties file).

See the liblsl-Android documentation for Android Studio for more information.

Troubleshooting

If you get an error about some class def not found:

  • On some systems you may have to unzip the jna-{version}.jar file to make sure that the libraries contained in it are found by Java.

If you encounter an error like: java.lang.UnsatisfiedLinkError: Unable to load library 'liblsl64.dll': Native library (win32-x86-64/liblsl64.dll) not found in resource path:

  • make sure that your liblsl library is on a path found by the java runtime, e.g., in the path where you execute the java command. One location where it will always be found is a system library path, e.g., Windows/system32 (not SysWOW64) on Windows. It is not recommended to keep the lsl lib here permanently but temporarily this can help during debugging.

About

Java bindings for liblsl

Resources

Stars

7 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

LSL java bindings

The Java interface for the lab streaming layer should run on Window/Linux/MacOS, 32/64 bit. The main class is edu.ucsd.sccn.LSL, which provides all necessary functions and sub-classes.

Getting Started - Traditional Build

Users intending to use the liblsl Java interface for Android should skip ahead to the Android-specific section near the bottom.

Generally, to use the labstreaminglayer java interface in your program, you must:

  • import the class edu.ucsd.sccn.LSL
  • include the jna-{version}.jar package in your classpath
    • Tested with version 5.6.0
  • have the native liblsl library for your platform in a findable path
    • e.g., put liblsl64.dll into your application's root directory, or a system folder.
    • The section of code that looks for the shared library is here. This may simplify in the future and the expected filename might change on Windows to lsl.dll to match standard naming conventions.

See the contents of javadoc/ for API documentation.

Examples

See src/examples/ for quick examples of using edu.ucsd.sccn.LSL.

The instructions for the provided examples assume you have configured your system as follows:

  • You have installed the JDK and its executables (javac, java) are on the path.
    • Android Studio users can add its jre/bin folder to the PATH
      • e.g. Windows: set PATH=%PATH%;C:\Program Files\Android\Android Studio\jre\bin
  • Download the jna jar to the root liblsl-Java folder.
    • Click on your version, then find the download link in Files: jar
    • Tested with version 5.6.0
  • Copy the LSL library for your system (e.g., liblsl64.dll) to the root liblsl-Java folder.

Compile the example (JDK binaries javac and java must be on path):

  • ./liblsl-Java$ javac -cp jna-5.6.0.jar src/edu/ucsd/sccn/LSL.java src/examples/SendData.java
    • Swap out SendData.java for another example that you are interested in.

Launch the example:

  • Linux: ./liblsl-Java$ java -Djna.nosys=true -cp "jna-5.6.0.jar:src" examples.SendData
  • Windows: ./liblsl-Java> java -cp "jna-5.6.0.jar;src" examples.SendData
    • (Note the : changes to a ;)

Descriptions of the provided example programs can be found in the online documentation.

Getting Started - Android

The build.gradle is used to build a binary for Android devices and can be used as part of the liblsl-Android project. The build script assumes that the liblsl repository contents can be found in a sister folder: ../liblsl, and that you have a version of CMake >= 3.12 (path to CMake can be configured in local.properties file).

See the liblsl-Android documentation for Android Studio for more information.

Troubleshooting

If you get an error about some class def not found:

  • On some systems you may have to unzip the jna-{version}.jar file to make sure that the libraries contained in it are found by Java.

If you encounter an error like: java.lang.UnsatisfiedLinkError: Unable to load library 'liblsl64.dll': Native library (win32-x86-64/liblsl64.dll) not found in resource path:

  • make sure that your liblsl library is on a path found by the java runtime, e.g., in the path where you execute the java command. One location where it will always be found is a system library path, e.g., Windows/system32 (not SysWOW64) on Windows. It is not recommended to keep the lsl lib here permanently but temporarily this can help during debugging.

About

Java bindings for liblsl

Resources

Stars

7 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

LSL java bindings

The Java interface for the lab streaming layer should run on Window/Linux/MacOS, 32/64 bit. The main class is edu.ucsd.sccn.LSL, which provides all necessary functions and sub-classes.

Getting Started - Traditional Build

Users intending to use the liblsl Java interface for Android should skip ahead to the Android-specific section near the bottom.

Generally, to use the labstreaminglayer java interface in your program, you must:

  • import the class edu.ucsd.sccn.LSL
  • include the jna-{version}.jar package in your classpath
    • Tested with version 5.6.0
  • have the native liblsl library for your platform in a findable path
    • e.g., put liblsl64.dll into your application's root directory, or a system folder.
    • The section of code that looks for the shared library is here. This may simplify in the future and the expected filename might change on Windows to lsl.dll to match standard naming conventions.

See the contents of javadoc/ for API documentation.

Examples

See src/examples/ for quick examples of using edu.ucsd.sccn.LSL.

The instructions for the provided examples assume you have configured your system as follows:

  • You have installed the JDK and its executables (javac, java) are on the path.
    • Android Studio users can add its jre/bin folder to the PATH
      • e.g. Windows: set PATH=%PATH%;C:\Program Files\Android\Android Studio\jre\bin
  • Download the jna jar to the root liblsl-Java folder.
    • Click on your version, then find the download link in Files: jar
    • Tested with version 5.6.0
  • Copy the LSL library for your system (e.g., liblsl64.dll) to the root liblsl-Java folder.

Compile the example (JDK binaries javac and java must be on path):

  • ./liblsl-Java$ javac -cp jna-5.6.0.jar src/edu/ucsd/sccn/LSL.java src/examples/SendData.java
    • Swap out SendData.java for another example that you are interested in.

Launch the example:

  • Linux: ./liblsl-Java$ java -Djna.nosys=true -cp "jna-5.6.0.jar:src" examples.SendData
  • Windows: ./liblsl-Java> java -cp "jna-5.6.0.jar;src" examples.SendData
    • (Note the : changes to a ;)

Descriptions of the provided example programs can be found in the online documentation.

Getting Started - Android

The build.gradle is used to build a binary for Android devices and can be used as part of the liblsl-Android project. The build script assumes that the liblsl repository contents can be found in a sister folder: ../liblsl, and that you have a version of CMake >= 3.12 (path to CMake can be configured in local.properties file).

See the liblsl-Android documentation for Android Studio for more information.

Troubleshooting

If you get an error about some class def not found:

  • On some systems you may have to unzip the jna-{version}.jar file to make sure that the libraries contained in it are found by Java.

If you encounter an error like: java.lang.UnsatisfiedLinkError: Unable to load library 'liblsl64.dll': Native library (win32-x86-64/liblsl64.dll) not found in resource path:

  • make sure that your liblsl library is on a path found by the java runtime, e.g., in the path where you execute the java command. One location where it will always be found is a system library path, e.g., Windows/system32 (not SysWOW64) on Windows. It is not recommended to keep the lsl lib here permanently but temporarily this can help during debugging.

About

Java bindings for liblsl

Resources

Stars

7 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages