88 lines
3.4 KiB
Markdown
88 lines
3.4 KiB
Markdown
# IRext Java Example
|
|
|
|
## Overview
|
|
|
|
This repository contains a Java wrapper SDK for infrared (IR) signal decoding. The SDK provides a convenient way to decode infrared signals for various devices including air conditioners, TVs, set-top boxes, and other consumer electronics. It acts as a bridge between Java applications and native IR decoding libraries.
|
|
|
|
## IR Decode
|
|
|
|
The core component of this SDK is the IRDecode class, which provides the primary interface for interacting with native IR decoding functionality.
|
|
|
|
### Features
|
|
|
|
- **Multi-device Support**: Supports various device categories including Air Conditioners, TVs, Set-top Boxes, Network Boxes, DVD players, Fans, Projectors, Stereos, Lights, Cleaning Robots, Air Cleaners, and more.
|
|
- **Air Conditioner Control**: Comprehensive control over AC parameters including power, temperature, mode, wind speed, and swing settings.
|
|
- **Native Integration**: Uses JNI (Java Native Interface) to connect with native decoding libraries for optimal performance.
|
|
- **Parameter Validation**: Built-in validation for AC status parameters to ensure valid operations.
|
|
- **Temperature Range Detection**: Ability to query supported temperature ranges for different AC modes.
|
|
|
|
### Key Classes
|
|
|
|
#### IRDecode
|
|
The main entry point for the SDK. Provides methods for:
|
|
- Opening binary files or raw binary data
|
|
- Decoding IR signals with given key codes and AC status
|
|
- Getting temperature ranges for AC modes
|
|
- Querying supported features for different AC modes
|
|
- Managing native library lifecycle
|
|
|
|
#### ACStatus
|
|
Represents the status of an air conditioner with parameters such as:
|
|
- Power state (acPower)
|
|
- Temperature (acTemp)
|
|
- Operating mode (acMode)
|
|
- Wind direction (acWindDir)
|
|
- Wind speed (acWindSpeed)
|
|
- Display, sleep, timer, and wind direction change settings
|
|
|
|
#### TemperatureRange
|
|
Defines the minimum and maximum temperature range for air conditioners based on the operating mode.
|
|
|
|
### Usage Example
|
|
|
|
The SDK includes a main method in IRDecode class demonstrating basic usage:
|
|
|
|
```java
|
|
IRDecode irDecoder = IRDecode.getInstance();
|
|
if (Constants.ERROR_CODE_SUCCESS == irDecoder.openFile(Constants.CategoryID.TV.getValue(), 1, "/path/to/file.bin")) {
|
|
int[] decoded = irDecoder.decodeBinary(1, null);
|
|
for (int i = 0; i < decoded.length; i++) {
|
|
System.out.print(decoded[i]);
|
|
if (i != decoded.length - 1) {
|
|
System.out.print(", ");
|
|
}
|
|
}
|
|
System.out.println();
|
|
irDecoder.closeBinary();
|
|
}
|
|
```
|
|
|
|
### Library Loading
|
|
|
|
The SDK loads the native library from `/data/irext/libirdecode_jni.so`. Ensure this path is accessible and contains the appropriate native library for your platform.
|
|
|
|
### Error Handling
|
|
|
|
The SDK defines various error codes in the Constants class:
|
|
- ERROR_CODE_SUCCESS (0): Operation successful
|
|
- ERROR_CODE_NETWORK_ERROR (-1): Network error
|
|
- ERROR_CODE_AUTH_FAILURE (1): Authentication failure
|
|
- ERROR_CODE_INVALID_CATEGORY (2): Invalid category
|
|
- And several other specific error codes
|
|
|
|
### Building and Running
|
|
|
|
To use this SDK:
|
|
1. Ensure the native library `libirdecode_jni.so` is available at `/data/irext/`
|
|
2. Compile the Java classes
|
|
3. Run with appropriate permissions to load the native library
|
|
|
|
## Related Links
|
|
|
|
- [IRext Official Site](https://site.irext.net)
|
|
- [IRext Documentation](https://site.irext.net/doc)
|
|
- [IRext Open Source Project](https://opensource.irext.net)
|
|
|
|
## License
|
|
|
|
Please refer to the [IRext repository](https://opensource.irext.net) for license information. |