Control the vibrating wristband device Furueru from the Android app. You can buy Furueru for a thousand and several hundred yen each. Project Linking is a project that sells these terminals at a low price and provides a control library free of charge, and other unique terminals are prepared. I will.
Click here for the source code developed this time (GitHub)
Development environment: Windows10 64bit IDE: Android studio version 3.4 Language: Java Android device: Lenovo TB-X304F tablet Android version 7.1.1 Bluetooth 4.0
Follow the instruction manual of the Linking device to set the Bluetooth settings. Install NTT DOCOMO Linking App from Google Play on your Android device. Launch the Linking app, search for your Linking device and pair it.
The following articles will be helpful. I got a Linking device, so I tried the demo app
It is provided as a library for controlling Linking devices from Android apps Linking SDK is provided free of charge. This time, we will develop the content that Furueru vibrates when you press the button of the application. Launch Android studio and select Empty Activity to create a new project. Select Java as the language and set the API version to 4.1 JellyBean (API level 16), which can cover 99.6% of devices. Set the project view on the left side of the screen to Project, and paste sdaiflib.jar (Linking SDK library) under app / libs / of the application. According to the Linking API specification, add the following sentence to the dependencies of app / build.gradle.
build.gradle
compile files('libs/sdaiflib.jar')
Once added, click Sync Now at the top right of the window to sync. I was angry that compile is an old word and is not recommended. The build will pass as it is, but if you want to do it properly, rewrite it as follows.
build.gradle
implementation fileTree(dir: 'libs/sdaiflib.jar')
We will install a button on the screen, refer to the sample source attached to the SDK, and develop it so that specific vibration information can be sent to Furueru when tapped. Below is the full text of the java source and layout xml.
MainActivity.java
package com.furueru.systems.tood.furueruapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
import com.nttdocomo.android.sdaiflib.DeviceInfo;
import com.nttdocomo.android.sdaiflib.GetDeviceInformation;
import com.nttdocomo.android.sdaiflib.SendOther;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Draw the screen.
setView();
}
private void setView() {
//Draw a linear layout.
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
setContentView(linearLayout);
//Draw a button.
Button sendButton = new Button(this);
sendButton.setText("Send");
linearLayout.addView(sendButton, new LinearLayout.LayoutParams(100, 100));
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Send a signal.
sendMessage();
}
});
}
static final byte LINKING_IF_VIB_PATTERN_ID = 0x10;
static final byte LINKING_IF_DURATION_ID = 0x10;
private void sendMessage() {
//Linking Get device information.
GetDeviceInformation deviceInformation = new GetDeviceInformation(this);
List<DeviceInfo> deviceInfos = deviceInformation.getInformation();
if (deviceInfos.size() == 0) {
Toast.makeText(this, "No paired device", Toast.LENGTH_SHORT).show();
}
for (DeviceInfo deviceInfo : deviceInfos) {
//Set the transmission information.
SendOther sendOther = new SendOther(this);
//Set the destination device ID.
sendOther.setDeviceID(deviceInfo.getModelId());
//Set the vibration pattern. (Vibration PATTERN2 = 35)
sendOther.setVibration(new byte[]{LINKING_IF_VIB_PATTERN_ID, 35});
//Set the operating time. (Vibration time 5 seconds = 33)
sendOther.setDuration(new byte[]{LINKING_IF_DURATION_ID, 33});
sendOther.send();
}
}
}
For vibration PATTERN and operating time, try using the demo app that comes with the SDK and select the one that suits your purpose.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.constraint.ConstraintLayout>
Turn on the power of Furueru. Start the Linking app and turn on the usage settings of the device (Furueru0098598 in this case). In the device settings, turn on the linked application (FurueruApplication in this case). Let's start the developed app. A vibration command is sent by tapping the button on the screen. Furueru begins to vibrate within 3 seconds of tapping.
It vibrates more violently than expected and the battery lasts longer. The developed app communicates with Furueru via Bluethooth via the Linking app. Therefore, if the Android device (Bluetooth master unit) and Furueru (slave unit) are separated from each other, Bluetooth will be disconnected and you will need to set the connection again on the Linking app. At a straight line distance, it will not be cut even if it is about 10 m away, but it will be cut if the wall is sandwiched. However, even if you inadvertently move away from the Android device, the user will be able to notice it because vibration will occur when disconnecting. I'm grateful that it seems unlikely that I will not notice it while it is disconnected. It is a fun device that you can imagine various operations.
Recommended Posts