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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Android Wear

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

Android Studio

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

Q&A

0回答

499閲覧

android wear スマートウォッチのアプリが落ちてしまう件

mkt84

総合スコア6

Android Wear

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

Android Studio

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

0グッド

1クリップ

投稿2018/01/18 02:54

編集2022/01/12 10:55

こんにちは。プログラミング初心者です。
今回、私はAndroid Studioにおいて、スマートウォッチの加速度センサーとジャイロセンサーからそれぞれのデータを取得するアプリケーションを開発しました。
そこで、アプリ自体は完成し、データもしっかりと取得することができるのですが、スマートウォッチを傾けたり、画面が少し暗くなってしまうとアプリが終了してしまい、データの取得も止まってしまいます。
これでは継続的にデータを取得することができません。一体どのようにすれば、アプリが終了しないようにできますでしょうか。スマートウォッチ自体の設定をあれこれ変えてみても出来ませんでした、、、
ちなみに以下が今回のコードです。今回用いているウォッチはPOLAR M600(android 7.1.1)です。

Java

1package com.example.sensor_test; 2 3import java.io.BufferedWriter; 4import java.io.File; 5import java.io.FileOutputStream; 6import java.io.OutputStreamWriter; 7import java.text.DateFormat; 8import java.text.SimpleDateFormat; 9import java.util.ArrayList; 10import java.util.Date; 11import java.util.List; 12 13import android.app.Activity; 14import android.hardware.Sensor; 15import android.hardware.SensorEvent; 16import android.hardware.SensorEventListener; 17import android.hardware.SensorManager; 18import android.os.Bundle; 19import android.os.Environment; 20import android.util.Log; 21import android.widget.TextView; 22 23import com.google.android.gms.common.ConnectionResult; 24import com.google.android.gms.common.api.GoogleApiClient; 25import com.google.android.gms.common.api.ResultCallback; 26import com.google.android.gms.wearable.MessageApi; 27import com.google.android.gms.wearable.NodeApi; 28import com.google.android.gms.wearable.Wearable; 29 30import static android.content.ContentValues.TAG; 31 32public class MainActivity extends Activity implements SensorEventListener, Runnable{ 33 34 35 private boolean mRegisteredSensor; 36 private SensorManager mSensorManager; 37 38 private GoogleApiClient mGoogleApiClient; 39 private String mNode; 40 int count =0; 41 42 // 加速度センサーの値 43 private float[] accelerometerValues = new float[3]; 44 private float[] magneticValues = new float[3]; 45 private Date date; 46 //private String time = getDateString(); 47 public static TextView text; 48 49 50 51 @Override 52 public void onCreate(Bundle savedInstanceState) { 53 super.onCreate(savedInstanceState); 54 setContentView(R.layout.activity_main); 55 56 text = (TextView)findViewById(R.id.text); 57 58 mRegisteredSensor = false; 59 mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 60 ArrayList<List<Sensor>> sensors = new ArrayList<List<Sensor>>(); 61 sensors.add( mSensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER)); 62 sensors.add( mSensorManager.getSensorList(Sensor.TYPE_GYROSCOPE)); 63 64 for(List<Sensor> sensor : sensors){ 65 if(sensor.size()>0){ 66 mRegisteredSensor = mSensorManager.registerListener(this, 67 sensor.get(0), 68 SensorManager.SENSOR_DELAY_FASTEST); 69 } 70 } 71 mGoogleApiClient = new GoogleApiClient.Builder(this) 72 .addApi(Wearable.API) 73 .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() { 74 @Override 75 public void onConnected(Bundle bundle) { 76 Log.d(TAG, "onConnected"); 77 78// NodeApi.GetConnectedNodesResult nodes = Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await(); 79 Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).setResultCallback(new ResultCallback<NodeApi.GetConnectedNodesResult>() { 80 @Override 81 public void onResult(NodeApi.GetConnectedNodesResult nodes) { 82 //Nodeは1個に限定 83 if (nodes.getNodes().size() > 0) { 84 mNode = nodes.getNodes().get(0).getId(); 85 } 86 } 87 }); 88 } 89 90 @Override 91 public void onConnectionSuspended(int i) { 92 Log.d(TAG, "onConnectionSuspended"); 93 94 } 95 }) 96 .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() { 97 @Override 98 public void onConnectionFailed(ConnectionResult connectionResult) { 99 Log.d(TAG, "onConnectionFailed : " + connectionResult.toString()); 100 } 101 }) 102 .build(); 103 } 104 105 @Override 106 protected void onResume() { 107 super.onResume(); 108 109 // 1.5 110 { 111 ArrayList<List<Sensor>> sensors = new ArrayList<List<Sensor>>(); 112 sensors.add( mSensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER)); 113 sensors.add( mSensorManager.getSensorList(Sensor.TYPE_GYROSCOPE)); 114 115 mGoogleApiClient.connect(); 116 117 for(List<Sensor> sensor : sensors){ 118 if(sensor.size()>0){ 119 mRegisteredSensor = mSensorManager.registerListener(this, 120 sensor.get(0), 121 SensorManager.SENSOR_DELAY_NORMAL); 122 } 123 } 124 } 125 126 127 } 128 129 @Override 130 protected void onPause() { 131 if (mRegisteredSensor) { 132 mSensorManager.unregisterListener(this); 133 mRegisteredSensor = false; 134 } 135 136 super.onPause(); 137 mGoogleApiClient.disconnect(); 138 } 139 140 @Override 141 public void onSensorChanged(SensorEvent event) { // 1.5 142 143 144 145 if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { 146 accelerometerValues = event.values.clone(); 147 } 148 else if (event.sensor.getType() == Sensor.TYPE_GYROSCOPE) { 149 magneticValues = event.values.clone(); 150 } 151 if(count>=19) { 152 count = 0; 153 //転送セット 154 String SEND_DATA = accelerometerValues[0] + "," + accelerometerValues[1] + "," + accelerometerValues[2] + "," + magneticValues[0] + "," + magneticValues[1] + "," + magneticValues[2]; 155 if (mNode != null) { 156 Wearable.MessageApi.sendMessage(mGoogleApiClient, mNode, SEND_DATA, null).setResultCallback(new ResultCallback<MessageApi.SendMessageResult>() { 157 @Override 158 public void onResult(MessageApi.SendMessageResult result) { 159 if (!result.getStatus().isSuccess()) { 160 Log.d(TAG, "ERROR : failed to send Message" + result.getStatus()); 161 } 162 } 163 }); 164 } 165 166 //writeCSVFile(accelerometerValues[0], accelerometerValues[1], accelerometerValues[2], magneticValues[0], magneticValues[1], magneticValues[2]); 167 168 text.setText( 169 "x " + accelerometerValues[0] + ", \n" + 170 "y " + accelerometerValues[1] + ", \n" + 171 "z " + accelerometerValues[2] + ", \n" + 172 "gx " + magneticValues[0] + ", \n" + 173 "gy " + magneticValues[1] + ", \n" + 174 "gz " + magneticValues[2] 175 ); 176 }else count++; 177 178 179 } 180 181 @Override 182 public void onAccuracyChanged(Sensor sensor, int accuracy) { // 1.5 183 } 184 185 @Override 186 public void run() { 187 // TODO Auto-generated method stub 188 189 } 190}

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

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

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

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

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

aja

2018/01/18 04:57

wearではありますがActivityなのでそのライフサイクルからforegroundからbackgroundに移行することを考えてみればいいのではないでしょうか
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問