質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Wear

Android Wearとは、Googleが発表した腕時計型ウェアラブルデバイス(スマートウォッチ)向けのプラットフォームです。GoogleのAndroid OSをベースにしており、情報の入手・管理などを行うことができます。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

0回答

2728閲覧

Android Wear(Wear OS by google)で心拍数を計測する方法

fdaskjlfda

総合スコア40

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Wear

Android Wearとは、Googleが発表した腕時計型ウェアラブルデバイス(スマートウォッチ)向けのプラットフォームです。GoogleのAndroid OSをベースにしており、情報の入手・管理などを行うことができます。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2018/08/14 01:32

環境

Windows 10 Pro
Android Studio最新版
スマートフォン : Zenfone 2 laser
スマートウォッチ : TicWatch Pro(APIレベル 26)

やりたいこと

スマートウォッチで、心拍数を”リアルタイム”で計測したい
よろしくお願いします

問題

ネット上の記事を参考に作ってみたが、動作しない
原因も思い当たるものがない
(エラー等はなし)

ソースコード

java

1package com.websarva.wings.android.lifesaver; 2 3import android.hardware.Sensor; 4import android.hardware.SensorEvent; 5import android.hardware.SensorEventListener; 6import android.hardware.SensorManager; 7import android.os.Bundle; 8import android.os.Handler; 9import android.os.Message; 10import android.support.wearable.activity.WearableActivity; 11import android.support.wearable.input.WearableButtons; 12import android.view.View; 13import android.widget.Button; 14import android.widget.EditText; 15import android.widget.TextView; 16 17import com.google.android.gms.tasks.Task; 18import com.google.android.gms.tasks.Tasks; 19import com.google.android.gms.wearable.DataClient; 20import com.google.android.gms.wearable.DataEvent; 21import com.google.android.gms.wearable.DataEventBuffer; 22import com.google.android.gms.wearable.DataItem; 23import com.google.android.gms.wearable.DataMap; 24import com.google.android.gms.wearable.DataMapItem; 25import com.google.android.gms.wearable.PutDataMapRequest; 26import com.google.android.gms.wearable.PutDataRequest; 27import com.google.android.gms.wearable.Wearable; 28 29import java.text.DateFormat; 30import java.text.SimpleDateFormat; 31 32public class MainActivity extends WearableActivity implements DataClient.OnDataChangedListener, 33 SensorEventListener{ 34 35 private static final String HEART_RATE_KEY = "heart_late"; 36 private static final String HEART_RATE_PATH = "/lifesaver/wear/heart"; 37 38 private static final String GENERAL_MESSAGE_KEY_WEAR = "message_from_wear"; 39 private static final String GENERAL_MESSAGE_PATH_WEAR = "/lifesaver/wear/message"; 40 41 private static final String GENERAL_MESSAGE_KEY_ANDROID = "message_from_android"; 42 private static final String GENERAL_MESSAGE_PATH_ANDROID = "/lifesaver/android/message"; 43 44 SensorManager heartRateManager; 45 Sensor heartRateSensor; 46 47 TextView tvStatus, tvHeartRate; 48 EditText etMessage; 49 Button btSend, btSync, btClear; 50 51 52 @Override 53 protected void onCreate(Bundle savedInstanceState) { 54 super.onCreate(savedInstanceState); 55 setContentView(R.layout.activity_main); 56 // Enables Always-on 57 setAmbientEnabled(); 58 59 tvStatus = findViewById(R.id.tvStatus); 60 tvHeartRate = findViewById(R.id.tvHeartRate); 61 etMessage = findViewById(R.id.etMessage); 62 btSend = findViewById(R.id.btSendMessage); 63 btSync = findViewById(R.id.btSync); 64 btClear = findViewById(R.id.btClear); 65 66 67 heartRateManager = (SensorManager)getSystemService(SENSOR_SERVICE); 68 heartRateSensor = heartRateManager.getDefaultSensor(Sensor.TYPE_HEART_RATE); 69 } 70 71 72 @Override 73 public void onSensorChanged(SensorEvent event) { 74 if (event.sensor.getType() == Sensor.TYPE_HEART_RATE) { 75 tvHeartRate.setText(String.valueOf(event.values[0])); 76 } 77 } 78 79 80 @Override 81 public void onAccuracyChanged(Sensor sensor, int accuracy) { 82 83 } 84 85 @Override 86 protected void onResume() { 87 super.onResume(); 88 Wearable.getDataClient(this).addListener(this); 89 90 91 heartRateManager.registerListener(this, heartRateSensor, SensorManager.SENSOR_DELAY_NORMAL); 92 Sensor heart = heartRateManager.getDefaultSensor(Sensor.TYPE_HEART_RATE); 93 } 94 95 @Override 96 protected void onPause() { 97 super.onPause(); 98 Wearable.getDataClient(this).removeListener(this); 99 100 heartRateManager.unregisterListener(this); 101// heartRateManager.unregisterListener(mHeartListener); 102 } 103 104 @Override 105 public void onEnterAmbient(Bundle ambientDetails) { 106 super.onEnterAmbient(ambientDetails); 107 updateDisplay(); 108 } 109 110 @Override 111 public void onUpdateAmbient() { 112 super.onUpdateAmbient(); 113 updateDisplay(); 114 } 115 116 @Override 117 public void onExitAmbient() { 118 updateDisplay(); 119 super.onExitAmbient(); 120 } 121 122 private void updateDisplay() { 123 124 } 125 126 @Override 127 public void onDataChanged(DataEventBuffer dataEvents) { 128 for(DataEvent event : dataEvents) { 129 if(event.getType() == DataEvent.TYPE_CHANGED) { 130 //DataItem Changed 131 DataItem item = event.getDataItem(); 132 if (item.getUri().getPath().compareTo(GENERAL_MESSAGE_PATH_ANDROID) == 0) { 133 DataMap dataMap = DataMapItem.fromDataItem(item).getDataMap(); 134 tvStatus.setText(dataMap.getString(GENERAL_MESSAGE_KEY_ANDROID)); 135 } 136 } 137 else if(event.getType() == DataEvent.TYPE_DELETED) { 138 tvStatus.setText("deleted"); 139 } 140 } 141 } 142 143 public void SendMessageToAndroid(String message, String key, String path) { 144 PutDataMapRequest dataMap = PutDataMapRequest.create(path); 145 dataMap.getDataMap().putString(key, message); 146 147 PutDataRequest putDataReq = dataMap.asPutDataRequest(); 148 putDataReq.setUrgent(); 149 Wearable.getDataClient(getApplicationContext()).putDataItem(putDataReq); 150 } 151 152 public void onClickButton(View view) { 153 switch (view.getId()) { 154 case R.id.btSendMessage: 155 String message = etMessage.getText().toString(); 156 SendMessageToAndroid(message, GENERAL_MESSAGE_KEY_WEAR, GENERAL_MESSAGE_PATH_WEAR); 157 break; 158 case R.id.btSync: 159 break; 160 case R.id.btClear: 161 etMessage.setText(""); 162 break; 163 default: 164 break; 165 } 166 } 167}

備考

ソースコードには、別の機能も入っている

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問