블루투스로 Android 응용 프로그램에서 손목밴드 단말기를 진동시키다
손목밴드형 장치를 제어하는 안드로이드 응용 프로그램 개발
Android 응용 프로그램에서 진동을 제어하는 밴드형 장치Furueru.
Furueru는 한 개에 천 몇 백 엔이면 살 수 있다.Project Linking는 이런 단말기를 저가로 판매하고 컨트롤 라이브러리를 무료로 제공하는 프로젝트이며 독특한 단말기도 준비했다.
이번에 개발한 소스 코드는 여기 있습니다(GitHub).
개발 환경
개발 환경: Windows1064bit
IDE: Androidstudio 버전 3.4
사용 언어: Java
Android 터미널: Lenovo TB-X304F 태블릿 Android 버전 7.1.1 Bluetooth 4.0
개발 프로그램
Linking 장치와 Android 터미널의 협력
Linking 장치의 사용 설명서에 따라 블루투스 설정을 합니다.
Android 터미널에 GooglePlayNTT DOCOMO에서 만든 Linking 어플리케이션를 설치합니다.
Linking 응용 프로그램을 시작하고 Linking 장치를 검색하여 페어링합니다.
아래의 보도는 참고로 할 수 있다.
나는 링크 단말기를 받았기 때문에 프레젠테이션 소프트웨어를 시험해 보았다
Android 응용 프로그램 개발
Android 응용 프로그램에서 Linking 장치를 제어하는 데 사용되는 라이브러리Linking SDK 무료 제공입니다.
이번 개발은 응용 프로그램 단추를 누르면 Furueru가 진동하는 내용을 개발합니다.
Androidstudio를 시작하고 Empty Activity를 선택하여 새 프로젝트를 만듭니다.
언어 선택 Java, API 버전 4.1 JellyBean(API 레벨 16), 터미널 99.6% 덮어쓰기.
화면 왼쪽의 프로젝트 보기를 프로젝트로 설정하고 응용 프로그램의 app/libs/아래에서 sdaiflib를 진행합니다.jar(Linking SDK 라이브러리)를 붙여넣습니다.
Linking API 규격서에 따라 app/build.gradle의 dependencies에 다음 문장을 추가합니다.
build.gradlecompile files('libs/sdaiflib.jar')
추가한 후 동기화 창의 오른쪽 위 모서리에 있는 동기화 Now 를 클릭합니다.
compile은 옛말이라서 추천하지 않아요. 욕먹었어요.그래도 빌딩을 통과할 수 있지만 잘하고 싶은 사람은 다음과 같이 고쳐주세요.
build.gradleimplementation fileTree(dir: 'libs/sdaiflib.jar')
화면에 버튼을 설정하고 SDK에 첨부된 샘플 원본을 참고하여 클릭하면 Furueru에 특정한 진동 정보를 보낼 수 있도록 개발한다.다음은 자바 소스 코드와 레이아웃 xml의 전문입니다.
MainActivity.javapackage 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);
// 画面を描画する。
setView();
}
private void setView() {
// リニアレイアウトを描画する。
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
setContentView(linearLayout);
// ボタンを描画する。
Button sendButton = new Button(this);
sendButton.setText("送信");
linearLayout.addView(sendButton, new LinearLayout.LayoutParams(100, 100));
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 信号を送信する。
sendMessage();
}
});
}
static final byte LINKING_IF_VIB_PATTERN_ID = 0x10;
static final byte LINKING_IF_DURATION_ID = 0x10;
private void sendMessage() {
// Linkingデバイス情報を取得する。
GetDeviceInformation deviceInformation = new GetDeviceInformation(this);
List<DeviceInfo> deviceInfos = deviceInformation.getInformation();
if (deviceInfos.size() == 0) {
Toast.makeText(this, "ペアリングされたデバイスがありません", Toast.LENGTH_SHORT).show();
}
for (DeviceInfo deviceInfo : deviceInfos) {
// 送信情報を設定する。
SendOther sendOther = new SendOther(this);
// 送信先デバイスIDを設定する。
sendOther.setDeviceID(deviceInfo.getModelId());
// 振動パターンを設定する。(振動PATTERN2=35)
sendOther.setVibration(new byte[]{LINKING_IF_VIB_PATTERN_ID, 35});
// 動作時間を設定する。(振動時間5秒=33)
sendOther.setDuration(new byte[]{LINKING_IF_DURATION_ID, 33});
sendOther.send();
}
}
}
PATTERN과 동작 시간을 진동시키고 SDK 부속 프레젠테이션 프로그램으로 이동하여 목적에 맞는 것을 선택하는 것이 좋습니다.
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>
동작 확인
Furueru 전원을 켭니다.
Linking 응용 프로그램을 시작하여 장치(이 때 Furueru0098598)의 사용 설정을 ON으로 설정합니다.
장치 설정에서 공동 작업 응용 프로그램(이 경우 FurueruApplication)을 ON으로 설정합니다.
개발한 프로그램을 시작해 보세요.
화면의 단추를 누르면 진동 명령이 발송됩니다.머리를 뽑기 시작한 지 3초 정도 지나자 Furueru가 진동하기 시작했다.
느끼다
진동이 예상보다 격렬하여 배터리도 오래 쓸 수 있다.
개발된 응용 프로그램은 Linking 응용 프로그램을 통해 Furueru와 블루투스를 통해 통신한다.따라서 Android 단말기(블루투스 모뎀)와Furueru(자기기)의 거리가 떨어지면 블루투스가 차단되고 링크 응용 프로그램에서 다시 연결 설정을 해야 한다.
직선거리는 10미터 정도 떨어져도 끊어지지 않지만 벽을 끼고 끊어진다.하지만 실수로 안드로이드 단말기를 벗어나도 절단할 때 진동이 발생하기 때문에 사용자는 주의할 수 있다.잘려서 눈치채지 못한 것 같아 고마워요.
각양각색의 운용이 즐거운 설비라고 상상할 수 있다.
Reference
이 문제에 관하여(블루투스로 Android 응용 프로그램에서 손목밴드 단말기를 진동시키다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/miltood/items/4d05970dc93b9c770e97
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
compile files('libs/sdaiflib.jar')
implementation fileTree(dir: 'libs/sdaiflib.jar')
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);
// 画面を描画する。
setView();
}
private void setView() {
// リニアレイアウトを描画する。
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
setContentView(linearLayout);
// ボタンを描画する。
Button sendButton = new Button(this);
sendButton.setText("送信");
linearLayout.addView(sendButton, new LinearLayout.LayoutParams(100, 100));
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 信号を送信する。
sendMessage();
}
});
}
static final byte LINKING_IF_VIB_PATTERN_ID = 0x10;
static final byte LINKING_IF_DURATION_ID = 0x10;
private void sendMessage() {
// Linkingデバイス情報を取得する。
GetDeviceInformation deviceInformation = new GetDeviceInformation(this);
List<DeviceInfo> deviceInfos = deviceInformation.getInformation();
if (deviceInfos.size() == 0) {
Toast.makeText(this, "ペアリングされたデバイスがありません", Toast.LENGTH_SHORT).show();
}
for (DeviceInfo deviceInfo : deviceInfos) {
// 送信情報を設定する。
SendOther sendOther = new SendOther(this);
// 送信先デバイスIDを設定する。
sendOther.setDeviceID(deviceInfo.getModelId());
// 振動パターンを設定する。(振動PATTERN2=35)
sendOther.setVibration(new byte[]{LINKING_IF_VIB_PATTERN_ID, 35});
// 動作時間を設定する。(振動時間5秒=33)
sendOther.setDuration(new byte[]{LINKING_IF_DURATION_ID, 33});
sendOther.send();
}
}
}
<?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>
Reference
이 문제에 관하여(블루투스로 Android 응용 프로그램에서 손목밴드 단말기를 진동시키다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/miltood/items/4d05970dc93b9c770e97텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)