Step 1. Add the JitPack repository to your build file
Add it in your root settings.gradle at the end of repositories:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
}
Add it in your settings.gradle.kts at the end of repositories:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}
Add to pom.xml
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
Add it in your build.sbt at the end of resolvers:
resolvers += "jitpack" at "https://jitpack.io"
Add it in your project.clj at the end of repositories:
:repositories [["jitpack" "https://jitpack.io"]]
Step 2. Add the dependency
dependencies {
implementation 'com.github.beiliubei:BlueCon:v1.0'
}
dependencies {
implementation("com.github.beiliubei:BlueCon:v1.0")
}
<dependency>
<groupId>com.github.beiliubei</groupId>
<artifactId>BlueCon</artifactId>
<version>v1.0</version>
</dependency>
libraryDependencies += "com.github.beiliubei" % "BlueCon" % "v1.0"
:dependencies [[com.github.beiliubei/BlueCon "v1.0"]]
BlueCon is SPP Server & Client Library for Android.
this Service is support Android 4.4 and grater environment.
if you use jcenter repository, just add dependency your app.
dependencies {
...
compile 'me.kudryavka:bluecon:0.2.1'
...
}
just simple.
Add permission in your manifest file for using BLUETOOTH like this.
<uses-permission android:name="android.permission.BLUETOOTH" />
for using client service, Using SPPClientService. Define Binder and Service connect condition.
private SPPClientService.SPPBinder svBinder;
private boolean isSVConned;
Bind service to Application's context.
@Override
protected void onCreate(Bundle savedInstanceState) {
...
bindService(new Intent(this, SPPClientService.class), serviceConnection, BIND_AUTO_CREATE);
...
}
Unbind service when app is dead
@Override
protected void onDestroy() {
...
unbindService(serviceConnection);
...
}
Make ServiceConnection and add SPPLietner to the Service.
public ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
Log.e("SERVICE", "CONNNECTED");
svBinder = (SPPClientService.SPPBinder)service;
isSVConned = true;
svBinder.addSPPListener(new SPPListener() {
@Override
public void onPacketReceived(String address, byte[] packet) {
// Received packets
}
@Override
public void onPacketSended(String address, byte[] packet) {
// Sended packets
}
@Override
public void onBluetoothDeviceConnected(String name, String address) {
// on bluetooth device connected
}
@Override
public void onBluetoothDeviceConnecting(@Nullable String name) {
// on connecting to device
}
@Override
public void onBluetoothDeviceDisconnected(@Nullable String name) {
// on disconnected from device
}
@Override
public void onBluetoothDisabled() {
// if bluetooth is off
}
@Override
public void onBluetoothNotSupported() {
// Android device has not bluetooth module
}
});
}
@Override
public void onServiceDisconnected(ComponentName name) {
Log.e("SERVICE", "DISCONNNECTED");
isSVConned = false;
}
};
You can get Paird device list.
ArrayList<BluetoothDevice> devices = svBinder.getPairedDevices();
You can connect to device using BluetoothDevice or Device's MAC address
svBinder.connect(BluetoothDevice device);
svBinder.connect(String address);
Sending a packet
svBinder.sendPacket(byte[] data)
Get Controller's Instance
SPPClientController sppClientController = SPPClientController.getInstance(getApplicationContext());
Add SPPListener to Instance
sppClientController.addSPPListener(new SPPListener() {
@Override
public void onPacketReceived(String address, byte[] packet) {
// Received packets
}
@Override
public void onPacketSended(String address, byte[] packet) {
// Sended packets
}
@Override
public void onBluetoothDeviceConnected(String name, String address) {
// on bluetooth device connected
}
@Override
public void onBluetoothDeviceConnecting(@Nullable String name) {
// on connecting to device
}
@Override
public void onBluetoothDeviceDisconnected(@Nullable String name) {
// on disconnected from device
}
@Override
public void onBluetoothDisabled() {
// if bluetooth is off
}
@Override
public void onBluetoothNotSupported() {
// Android device has not bluetooth module
}
});
You can get Paird device list.
ArrayList<BluetoothDevice> devices = sppClientController.getPairedDevices();
You can connect to device using BluetoothDevice or Device's MAC address
sppClientController.connect(BluetoothDevice device);
sppClientController.connect(String address);
Sending a packet
sppClientController.sendPacket(byte[] data)
for using server service, Using SPPServerService. Define Binder and Service connect condition.
private SPPServerService.SPPBinder svBinder;
private boolean isSVConned;
Bind service to Application's context.
@Override
protected void onCreate(Bundle savedInstanceState) {
...
bindService(new Intent(this, SPPServerService.class), serviceConnection, BIND_AUTO_CREATE);
...
}
Unbind service when app is dead
@Override
protected void onDestroy() {
...
unbindService(serviceConnection);
...
}
Make ServiceConnection and add SPPLietner to the Service.
public ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
Log.e("SERVICE", "CONNNECTED");
svBinder = (SPPServerController.SPPBinder)service;
isSVConned = true;
svBinder.addSPPListener(new SPPListener() {
@Override
public void onPacketReceived(String address, byte[] packet) {
// Received packets
}
@Override
public void onPacketSended(String address, byte[] packet) {
// Sended packets
}
@Override
public void onBluetoothDeviceConnected(String name, String address) {
// on bluetooth device connected
}
@Override
public void onBluetoothDeviceConnecting(@Nullable String name) {
// on connecting to device
}
@Override
public void onBluetoothDeviceDisconnected(@Nullable String name) {
// on disconnected from device
}
@Override
public void onBluetoothDisabled() {
// if bluetooth is off
}
@Override
public void onBluetoothNotSupported() {
// Android device has not bluetooth module
}
});
}
@Override
public void onServiceDisconnected(ComponentName name) {
Log.e("SERVICE", "DISCONNNECTED");
isSVConned = false;
}
};
You can get Connecte device list.
ArrayList<BluetoothDevice> devices = svBinder.getConnectedDevice()
You can start server with server's name, inputStream buffersize, server mode.
SERVER_MODE{SINGLE_CONNECTION, MULTIPLE_CONNECTION}
svBinder.startServer(String serverName, int bufferSize, ENUMS.SERVER_MODE serverMode);
Sending a packet
svBinder.sendPacket(String addressbyte[] data);
or broadcast
svBinder.broadcastPacket(byte[] data);
Get Controller's Instance
SPPServerController sppServerController = SPPServerController.getInstance(getApplicationContext());
Add SPPListener to Instance
sppServerController.addSPPListener(new SPPListener() {
@Override
public void onPacketReceived(String address, byte[] packet) {
// Received packets
}
@Override
public void onPacketSended(String address, byte[] packet) {
// Sended packets
}
@Override
public void onBluetoothDeviceConnected(String name, String address) {
// on bluetooth device connected
}
@Override
public void onBluetoothDeviceConnecting(@Nullable String name) {
// on connecting to device
}
@Override
public void onBluetoothDeviceDisconnected(@Nullable String name) {
// on disconnected from device
}
@Override
public void onBluetoothDisabled() {
// if bluetooth is off
}
@Override
public void onBluetoothNotSupported() {
// Android device has not bluetooth module
}
});
You can get Connecte device list.
ArrayList<BluetoothDevice> devices = sppServerController.getConnectedDevice()
You can start server with server's name, inputStream buffersize, server mode.
SERVER_MODE{SINGLE_CONNECTION, MULTIPLE_CONNECTION}
sppServerController.startServer(String serverName, int bufferSize, ENUMS.SERVER_MODE serverMode);
Sending a packet
sppServerController.sendPacket(String addressbyte[] data);
or broadcast
sppServerController.broadcastPacket(byte[] data);