Language - Java
Get Started
With the Phidget22 library, it's easy to create Java applications that work with Phidget devices.
Java Libraries
During development, we recommend downloading the appropriate installer or package for your operating system. This will place the required Phidget library files in standard locations where Java will look for them. When deploying applications, you can instead include these files manually as part of your application.
macOS Considerations
Legacy Phidgets running a HID USB stack require a driver extension (macOS 10.15 and newer) or a kernel extension (macOS 10.14 and earlier). During development, we recommend downloading the appropriate package which will install the extension. When deploying applications, review the README in the macOS Development Files for information about bundling the extension with your application.
Determining USB Stack
To determine which USB stack your device is running, navigate to the product page and then to the specification tab, and look for the USB Stack specification. If you are using a VINT device, navigate to the product page for the VINT Hub you are using.
Linux Considerations
Linux restricts access to USB devices to the root user. To run your Python application as a regular user, you'll need to set up udev rules on your system.
Development Environment Configuration
Before choosing a development environment, make sure you have the Java Development Kit installed.
Visual Studio Code
| To start developing with Java in VSCode, open it up and install the Extension Pack for Java. | |
| Next, press Ctrl+Shift+P to open the command palette, type "java" and select Java: Create Java Project. | |
| Select "No Build Tools" and select a directory for the new project. You'll be asked for a project name, and VSCode will create the directory structure. | |
| You'll need to get a copy of phidget22.jar to put inside the "lib" folder. You can download phidget22.jar here. | |
| You can now begin writing code in the newly created "App.java" file, or you can download a sample program for your device and place it in the "src" folder. | |
| Compile and run by pressing F5 or by clicking the play button in the top right. | |
| Once you're ready to compile your project into a .jar executable, click on the Java Projects section in the explorer. | |
| Click on the export icon, and then select your main class and click OK. | |
Now you can run your new .jar file with the following command:
java -jar Example.jar | |
Javac
| The easiest way to allow Java to access the Phidgets Java library is to place a copy of phidget22.jar in the same folder as your .java program. | ||
| You can download phidget22.jar here. | ||
To run your program, enter the following command in the command prompt or terminal:
javac -classpath .;phidget22.jar example.javaThen, enter the following command to run the program: java -classpath .;phidget22.jar example |
||
Once you're ready to compile your project into a .jar executable, create a manifest.mf file with the following contents:
Manifest-Version: 1.0
Main-Class: example
Class-Path: phidget22.jar
Make sure there's an empty newline at the bottom of the three lines and a space after each colon. | ||
Next, create the .jar file with this command:
jar cfm example.jar manifest.mf *.classOnce the .jar is created, you can execute it with java -jar example.jar | ||
Netbeans
| The easiest way to allow Java to access the Phidgets Java library is to place a copy of phidget22.jar in the same folder as your .java program. | |
| You can download phidget22.jar here. | |
| To start, open NetBeans and create a new project. Select Java Application and follow the steps as directed by Netbeans. | |
| Next, add a reference to phidget22.jar by right-clicking on the libraries folder. | |
| Navigate to the folder where you downloaded phidget22.jar, and select it. | |
| The project now has access to Phidgets. By default, Netbeans should create an executable .jar file in the dist folder of the project directory when it's built. If it didn't, go to Build -> Packaging in the project properties and make sure "Build JAR after compiling" is checked. | |
You can now run the .jar file from the command prompt with:
java -jar phidgetTest.jar | |
Eclipse
| To start, open Eclipse and create a new Java project. Name the project and uncheck the create module-info.java file box. | |
| On the Libraries tab, click Add External JARs and add phidget22.jar. to your project as an external jar. Be sure it's being added to the Classpath and not the module path. | |
| Create a new Class in your project. | |
| Name the class, and be sure to check the public static void main box. Eclipse may require that you add a package name. | |
| Your project now has access to Phidgets! | |
| Once you're ready to compile your project into a .jar executable, right click on the project in the package explorer and choose Export. Select Runnable JAR file. | |
| Choose the main class and a destination for the .jar file and click finish. | |
You can now run the .jar file from the command prompt with:
java -jar phidgetTest.jar | |
Android Studio
| To start, create a new project in Android Studio. | |
| Once you have a new project, be sure to switch the side bar to Project view. | |
| Next, download the Android Java libraries, extract the contents, and open the resulting folder. | |
| Copy the .jar files into the app/libs/ folder of your project. If you are only going to use network Phidgets in your app, then you don't need to copy Phidget22usb.jar into your project.
Right click the jar files you just copied and select Add As Library. |
![]() |
| Create a directory called jnilibs under app/src/main | |
| Copy the remaining folders from the Phidget22 library (containing versions of libphidget22java.so) into the directory you just created. | ![]() |
To allow the use of the network and/or USB connections, the following lines must be added to your AndroidManifest.xml file:
<!-- Required for network access -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- Required for USB access -->
<uses-feature android:name="android.hardware.usb.host" />Finally, to import the Phidget22 library into your code, add the following line to the rest of your imports: import com.phidget22.*;The project now has access to Phidgets. Next, we'll walk through the steps for writing your own code. || | |
|
By following the instructions for your operating system and compiler above, you now have working examples and a project that is configured. This teaching section will help you understand how the examples were written so you can start writing your own code. Your main reference for writing Android Java code will be:
Step One: Initialize and Open You will need to declare your Phidget object in your code. For example, we can declare a digital input object like this: DigitalInput device;
Next, we need to initialize the method(s) that the Android device can communicate with the Phidget. This is done either by enabling Network Server Discovery, and/or allowing direct USB connections as follows: //Enable server discovery to list remote Phidgets
this.getSystemService(Context.NSD_SERVICE);
Net.enableServerDiscovery(ServerType.DEVICE_REMOTE);
//Allow direct USB connection of Phidgets
com.phidget22.usb.Manager.Initialize(this);
To support remote (network) Phidgets on Android API versions earlier than API version 16, or to connect to Phidget Network Servers with passwords, you will need to add the specific server to your program: //Add a specific network server to communicate with Phidgets remotely
Net.addServer("ServerName", "192.168.1.105", 5661, "password", 0);
After the connection methods are established, the Phidget object needs to be initialized and opened: device = new DigitalInput();
device.open();
Although we are not including it on this page, you should include error handling for all Phidget functions. Here is an example of the previous code with error handling: try{
device = new DigitalInput();
device.open();
}catch (PhidgetException e) {
e.printStackTrace();
}
For more information on error handling with Phidgets, see this page. Step Two: Wait for Attachment (plugging in) of the Phidget Simply calling open does not guarantee you can use the Phidget immediately. To use a Phidget, it must be plugged in (attached). We can handle this by using event driven programming and tracking the attach events. Alternatively, we can modify our code so we wait for an attachment: ch = new DigitalInput();
ch.open(5000); //wait for attach for 5 seconds, if not time out
Waiting for attachment will block indefinitely until a connection is made, or until the timeout value is exceeded. To use events, we have to modify our code: ch = new DigitalInput();
device.addAttachListener(new AttachListener() {
public void onAttach(final AttachEvent attachEvent) {
AttachEventHandler handler = new AttachEventHandler(device);
synchronized(handler)
{
runOnUiThread(handler);
try {
handler.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
ch.open();
Next, we have to declare the function that will be called when an attach event is fired - in this case the function AttachEventHandler will be called. class AttachEventHandler implements Runnable {
Phidget device;
public AttachEventHandler(Phidget device) {
this.device = device;
}
public void run() {
TextView attachedTxt = (TextView) findViewById(R.id.attachedTxt);
attachedTxt.setText("Attached");
//notify that we're done
synchronized(this)
{
this.notify();
}
}
}
Step Three: Do Things with the Phidget We recommend the use of event driven programming when working with Phidgets. In a similar way to handling an attach event as described above, we can also add an event handler for a state change event: ch = new DigitalInput();
device.addStateChangeListener(new DigitalInputStateChangeListener() {
public void onStateChange(DigitalInputStateChangeEvent stateChangeEvent) {
DigitalInputStateChangeEventHandler handler =
new DigitalInputStateChangeEventHandler(device, stateChangeEvent);
runOnUiThread(handler);
}
});
ch.open();
This code will connect a function and an event. In this case, the DigitalInputStateChangeEventHandler function will be called when there has been a change to the devices input. Next, we need to create the DigitalInputStateChangeEventHandler function itself: class DigitalInputStateChangeEventHandler implements Runnable {
Phidget device;
DigitalInputStateChangeEvent stateChangeEvent;
public DigitalInputStateChangeEventHandler(Phidget device,
DigitalInputStateChangeEvent stateChangeEvent)
{
this.device = device;
this.stateChangeEvent = stateChangeEvent;
}
public void run() {
CheckBox stateBox = (CheckBox) findViewById(R.id.stateBox);
stateBox.setChecked(stateChangeEvent.getState());
}
}
If events do not suit your needs, you can also poll the device directly for data using code like this: boolean state = ch.getState();
Step Four: Close and Delete At the end of your program, be sure to close your device. ch.close();
Once the device is closed, to completely clean up after using Phidgets, you must uninitialize the USB connection as follows: //Disable USB connection to Phidgets
com.phidget22.usb.Manager.Uninitialize();
Now that you've set up Phidgets in your programming environment, you should read our guide on Phidget Programming Basics to learn the fundamentals of programming with Phidgets. | |
PhidgetSBC Web Interface
Note: Debian Linux may not have support for the newest JDK by default, so if you're developing your code on another machine, you may have to target an older version of Java in order to run it on the PhidgetSBC. |
Example Code
Navigate to our Code Sample Generator to view and download code samples that are tailored to your specific device.
Phidget Programming Basics
To learn more about the structure of the example code, visit our Phidget Programming Basics guide.
Deploying Applications
The following files are required for your Java application:
- phidget22.jar
- phidget22.dll
- phidget22java.dll
The files can be found in the Development Files. The .jar file is in lib/java, and the dll files are in lib/c/x64.
Java will look for these files in several locations, including the classpath and the working folder of the project.



