A react native android module for serial IO over bluetooth device.
The source code is largely from BluetoothSerial cordova plugin. However only part of the source code is ported due to time constraint.
There are sereral steps in the setup process
- install module
- update
android/settings.gradle
- update
android/app/build.gradle
- Register module in MainActivity.java
- Rebuild and restart package manager
- install module
npm i --save react-native-android-btserial
android/settings.gradle
...
include ':react-native-android-btserial'
project(':react-native-android-btserial').projectDir = new File(settingsDir, '../node_modules/react-native-android-btserial')
android/app/build.gradle
...
dependencies {
...
compile project(':react-native-android-btserial')
}
- register module (in MainActivity.java)
import com.derektu.btserial.BTSerialPackage; // <--- import
public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler {
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new BTSerialPackage() // <----- add package
);
}
......
}
- Run
react-native run-android
from your project root directory
Please refer to the sample react-native project under Example folder:
$ cd Example
$ npm install
$ react-native run-android
var BTSerial = require('react-native-android-btserial');
- BTSerial.isEnabled
- BTSerial.enableBT
- BTSerial.showBTSettings
- BTSerial.listDevices
- BTSerial.connect
- BTSerial.disconnect
- BTSerial.write
- BTSerial.available
- BTSerial.read
- BTSerial.setConnectionStatusCallback
- BTSerial.setDataAvailableCallback
Check if Bluetooth is enabled.
BTSerial.isEnabled(function(err, enabled) {
// enabled is true/false
});
Enable Bluetooth. If Bluetooth is not enabled, will request user to enable BT
BTSerial.enableBT(function(err, enabled) {
// enabled is true/false
));
Display System Bluebooth settings screen.
BTSerial.showBTSettings();
List paired devices. devices is an array of {id:.., address:.., name:..}
BTSerial.listDevices(function(err, devices) {
})
Connect to a paired device. If device is connected, status is true, and deviceName is the name of remote device. Otherwise status is false.
BTSerial.connect(address, function(err, status, deviceName){
});
Disconnect from connected device.
BTSerial.disconnect();
Write data to connected devices. If encoding is null or empty, default to utf-8.
BTSerial.write(string, encoding, function(err) {
});
Check if there is any data received from connected device.
BTSerial.available(function(err, count) {
});
Read data from connected device. If encoding is null or empty, default to utf-8. If there is no data, empty string('') will be returned.
BTSerial.read(encoding, function(err, string) {
})
Register a callback that will be invoked when remote connection is aborted. When callback 'e' is {devicename: 'this device'}
BTSerial.setConnectionStatusCallback(function(e) {
})
Register a callback that will be invoked when receive data from connected device. When callback 'e' is {available: count}
BTSerial.setDataAvailableCallback(function(e) {
})