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

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

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

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

Android

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

Android Wear

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

Q&A

1回答

1979閲覧

MessageAPIでデータを送信しているはずなのに反応がない

takasama

総合スコア12

Java

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

Android

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

Android Wear

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

0グッド

0クリップ

投稿2016/07/11 07:36

編集2022/01/12 10:55

###前提・実現したいこと
mobile\SubActivity内のsumKidoの値を1秒毎にwearに送って、その値をwearの画面上に表示するプログラムを作ろうと思っています。

sumKidoをMessageAPIで送れるbyte配列にするために、一旦KidoOkuriというString型の配列に代入してから1秒ごとにsendMessageToWearでbyte配列にしてwearに送る処理をするプログラム(mobile),
送られてきた値を画面上にTextView, setTextで表示するプログラム(wear)

を書いたつもりなんですが実行してもwearの画面に値が表示されないままになってしまいます。

なぜだ!(笑)現在試行錯誤していますが現状手詰まりです…

###mobile\SubActivity.java

package com.example.taka.wtf; import android.app.Activity; import android.os.Bundle; import java.io.IOException; import java.util.Collection; import java.util.HashSet; import java.util.Timer; import java.util.TimerTask; import android.content.Context; import android.hardware.Camera; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.PorterDuff.Mode; import android.graphics.SurfaceTexture; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.wearable.MessageApi; import com.google.android.gms.wearable.Node; import com.google.android.gms.wearable.NodeApi; import com.google.android.gms.wearable.Wearable; public class SubActivity extends Activity { private final static String OKURUATAI = "/itti"; private GoogleApiClient mGoogleApiClient; private float sumKido = 0.0f; private static String KidoOkuri = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); CameraView view = new CameraView(this); setContentView(view); mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(Wearable.API) .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() { @Override public void onConnected(Bundle bundle) { } @Override public void onConnectionSuspended(int cause) { } }).build(); mGoogleApiClient.connect(); Timer timer = new Timer(""); timer.scheduleAtFixedRate(new TestTimerTask(), 1 * 1000, 1 * 1000); } class TestTimerTask extends TimerTask { public void run() { KidoOkuri = String.valueOf(sumKido); sendMessageToWear(); KidoOkuri = ""; } } public class CameraView extends SurfaceView implements SurfaceHolder.Callback, Camera.PreviewCallback { private Camera mCamera = null; private SurfaceTexture mSurfaceTexture = null; private static final int Width = 640; private static final int Height = 480; private int Buffer; private float[] Kido; private int str; private static final int Width2 = 50; private static final int Scope = 200; private int strstr; private int Start; private Paint ShindenzuLine = new Paint(); private SurfaceHolder Holder = null; public CameraView(Context context) { super(context); ShindenzuLine.setColor(Color.rgb(0, 255, 0)); ShindenzuLine.setStrokeWidth(3); ShindenzuLine.setStyle(Style.STROKE); Holder = getHolder(); Holder.addCallback(this); } public void surfaceCreated(SurfaceHolder holder) { Buffer = getWidth(); Kido = new float[Buffer]; str = (Buffer - Width2 * 2) / Scope; mCamera = Camera.open(); try { mSurfaceTexture = new SurfaceTexture(0); mCamera.setPreviewTexture(mSurfaceTexture); } catch (IOException e) { e.printStackTrace(); } } public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { stopPreview(); Camera.Parameters params = mCamera.getParameters(); params.setPreviewSize(Width, Height); params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); mCamera.setParameters(params); Start = 0; strstr = 0; startPreview(); } public void surfaceDestroyed(SurfaceHolder holder) { stopPreview(); mCamera.release(); mCamera = null; } @Override public void onPreviewFrame(byte[] data, Camera camera) { Kido[strstr % Buffer] = KidoKeisan(data); strstr++; Shindenzu(); } private void startPreview() { mCamera.setPreviewCallback(this); mCamera.startPreview(); } private void stopPreview() { mCamera.setPreviewCallback(null); mCamera.stopPreview(); } private float KidoKeisan(byte[] data) { int frame = 0; for (int y = Height / 4; y < Height * 3 / 4; y++) { for (int x = Width / 4; x < Width * 3 / 4; x++) { sumKido += (float) (data[y * Width + x] & 0xff); frame++; } } sumKido /= frame; return sumKido; } private void Shindenzu() { int idx, idx_1; Canvas canvas = Holder.lockCanvas(); if (canvas != null) { canvas.drawColor(0, Mode.CLEAR); if (strstr >= Scope) { Start++; } for (int i = Start, x = 0; i < strstr - 1; i++, x++) { idx = i % Buffer; idx_1 = (i + 1) % Buffer; canvas.drawLine(x * str + Width2, (Kido[idx] - 80) * 20, (x + 1) * str + Width2, (Kido[idx_1] - 80) * 20, ShindenzuLine); } Holder.unlockCanvasAndPost(canvas); } } } private Collection<String> getNodes() { HashSet<String> results = new HashSet<String>(); NodeApi.GetConnectedNodesResult nodes = Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await(); for (Node node : nodes.getNodes()) { results.add(node.getId()); } return results; } private void sendMessageToWear() { Collection<String> nodes = getNodes(); for (String node : nodes) { MessageApi.SendMessageResult result = Wearable.MessageApi.sendMessage(mGoogleApiClient, node, OKURUATAI, KidoOkuri.getBytes() ).await(); } } }

###wear\MainActivity.java

package com.example.taka.wtf; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.widget.TextView; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.wearable.MessageEvent; import com.google.android.gms.wearable.Wearable; import com.google.android.gms.wearable.WearableListenerService; public class MainActivity extends Activity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener{ int gamenID = R.layout.rect_activity_main; private GoogleApiClient mGoogleApiClient; int Shin; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.rect_activity_main); mGoogleApiClient = new GoogleApiClient .Builder(this) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(Wearable.API) .build(); } @Override protected void onResume() { super.onResume(); mGoogleApiClient.connect(); } @Override protected void onPause() { super.onPause(); if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) { mGoogleApiClient.disconnect(); } } @Override public void onConnected(Bundle bundle) { Log.d("TAG", "onConnected"); } @Override public void onConnectionSuspended(int i) { Log.d("TAG", "onConnectionSuspended"); } @Override public void onConnectionFailed(ConnectionResult connectionResult) { Log.e("TAG", "onConnectionFailed: " + connectionResult); } public class DataLayerListenerService extends WearableListenerService { private final static String OKURUATAI = "/itti"; @Override public void onMessageReceived(MessageEvent messageEvent) { if (OKURUATAI.equals(messageEvent.getPath())) { final String message = new String(messageEvent.getData()); Shin = Integer.parseInt(message); TextView text = (TextView)findViewById(R.id.textView2); text.setText(Shin); } } } }

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

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

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

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

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

guest

回答1

0

書いたつもりなんですが実行してもwearの画面に値が表示されないままになってしまいます

単体テストをやって確認してから色々な機能を追加したほうがいいですね
そもそもGoogleApiClientが双方コネクトしているか確認できているのでしょうか
メッセージを送っているというログは取れているのでしょうか

投稿2016/07/11 08:04

aja

総合スコア3733

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問