Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/danielr18/react-native-ir-manager
A react-native interface for using the Infrared (IR) transmitter in Android smartphones
https://github.com/danielr18/react-native-ir-manager
Last synced: 28 days ago
JSON representation
A react-native interface for using the Infrared (IR) transmitter in Android smartphones
- Host: GitHub
- URL: https://github.com/danielr18/react-native-ir-manager
- Owner: danielr18
- License: mit
- Created: 2017-06-04T23:00:19.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2021-07-03T10:54:51.000Z (over 3 years ago)
- Last Synced: 2024-04-25T20:21:28.576Z (9 months ago)
- Language: Java
- Homepage:
- Size: 7.81 KB
- Stars: 27
- Watchers: 8
- Forks: 6
- Open Issues: 5
-
Metadata Files:
- Readme: README.MD
- License: LICENSE
Awesome Lists containing this project
README
# react-native-ir-manager
A react-native interface for using the Infrared (IR) transmitter in Android smartphones with [ConsumerIRManager](https://developer.android.com/reference/android/hardware/ConsumerIrManager.html).
## Getting started
`$ npm install react-native-ir-manager --save`
### Automatic installation
`$ react-native link react-native-ir-manager`
or
`$ rnpm link react-native-ir-manager`
### Manual installation
#### Android
1. Open up `android/app/src/main/java/[...]/MainApplication.java`
- Add `import com.danielr18.irmanager.IRManagerReactPackage;` to the imports at the top of the file
- Add `new IRManagerReactPackage()` to the list returned by the `getPackages()` method
2. Append the following lines to `android/settings.gradle`:
```
include ':react-native-ir-manager'
project(':react-native-ir-manager').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-ir-manager/android'))
```
3. Insert the following lines inside the dependencies block in `android/app/build.gradle`:
```
compile project(':react-native-ir-manager')
```## Supported Devices List
Most of the devices in this [list](https://en.wikipedia.org/wiki/List_of_devices_with_IR_blaster#Smartphones) should be supported.
## Usage
```jsx
import React, { Component } from 'react';
import {
AppRegistry,
View,
Button,
} from 'react-native';
import IRManager, { hasIrEmitter, transmitProntoCode } from 'react-native-ir-manager';export default class RNIRTest extends Component {
hasIrEmitter() {
IRManager.hasIrEmitter()
.then(hasIrEmitter => console.log(hasIrEmitter ? 'Device has IR emitter' : "Device doesn't have IR emitter"));
}getCarrierFrequencies() {
IRManager.getCarrierFrequencies()
.then(console.log)
.catch(console.log);
}transmitProntoCode(prontoHexCode) {
IRManager.transmitProntoCode(prontoHexCode)
.then(console.log)
.catch(console.log);
}render() {
const SAMSUNG_TURN_ON_PRONTO_CODE = '0000 006d 0022 0003 00a9 00a8 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 003f 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 003f 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 003f 0015 003f 0015 003f 0015 003f 0015 003f 0015 003f 0015 0702 00a9 00a8 0015 0015 0015 0e6e';return (
this.transmitProntoCode(SAMSUNG_TURN_ON_PRONTO_CODE)} title="Turn on Samsung TV" />
);
}
}AppRegistry.registerComponent('RNIRTest', () => RNIRTest);
```### hasIrEmitter()
Check whether the device has an infrared emitter. Promise returns a boolean.### getCarrierFrequencies()
Query the infrared transmitter's supported carrier frequencies. Returns an Array of Objects with the minimun and maximum frequency (inclusive) on which the infrared emitters can transmit### transmit(carrierFrequency : Number, pattern : [Number])
Transmit an infrared pattern. Promise returns a `true` value if it gets transmitted.### transmitProntoCode(prontoHexCode : String)
Converts a Pronto Hex Code commonly found online to an infrared pattern, which is then transmitted. Promise returns a `true` value if it gets transmitted.## Credits
This project used [react-native-module-boilerplate](https://github.com/tipsi/react-native-module-boilerplate) as a base and it was a helpful way to get started.