###前提・実現したいこと
MessageAPIを利用して送信する方法が分からなくて詰まっています。
mobile\SubActivity.java内のIntsumKidoの値をwearに送るにはどうすればいいでしょうか。
先日SmartWatchを購入したばかりで勉強中です。
データの送受信について触れてみようと思っているのですが難しい…
Webでも調べたんですがpathやnodeの理解が浅いせいか、試行錯誤しても上手くいきませんでした。
###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 android.content.Context; import android.hardware.Camera; import android.util.Log; 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.ConnectionResult; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks; import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener; import com.google.android.gms.wearable.DataApi; import com.google.android.gms.wearable.DataMap; 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.PutDataMapRequest; import com.google.android.gms.wearable.PutDataRequest; import com.google.android.gms.wearable.Wearable; public class SubActivity extends Activity { private GoogleApiClient client; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); CameraView view = new CameraView(this); setContentView(view); this.client = new GoogleApiClient.Builder(this) .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() { @Override public void onConnected(Bundle bundle) { Log.d("MyFragment", "onConnected"); } @Override public void onConnectionSuspended(int i) { Log.d("MyFragment", "onConnectionSuspended"); } }) .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() { @Override public void onConnectionFailed(ConnectionResult connectionResult) { Log.d("MyFragment", "onConnectionFailed"); } }) .addApi(Wearable.API) .build(); this.client.connect(); } 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; private float sumKido = 0.0f; private int frame = 0; private int IntsumKido; 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) { 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; IntsumKido = (int)sumKido; 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); } } } }
###wear\MainActivity.java
package com.example.taka.wtf; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.wearable.DataApi; import com.google.android.gms.wearable.DataMap; import com.google.android.gms.wearable.PutDataMapRequest; import com.google.android.gms.wearable.PutDataRequest; import com.google.android.gms.wearable.Wearable; public class MainActivity extends Activity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener{ int gamenID = R.layout.rect_activity_main; private GoogleApiClient mGoogleApiClient; @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); } @Override public boolean onTouchEvent(MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_MOVE){ if(gamenID == R.layout.rect_activity_main){ setContentView(R.layout.lill); gamenID = R.layout.lill; } else if(gamenID == R.layout.lill){ setContentView(R.layout.resonance); gamenID = R.layout.resonance; } else if(gamenID == R.layout.resonance){ setContentView(R.layout.stress); gamenID = R.layout.stress; } else if(gamenID == R.layout.stress){ setContentView(R.layout.hi_stress); gamenID = R.layout.hi_stress; } } return super.onTouchEvent(event); } }

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/11 06:55