2016-10-10 16 views
1

Android搭載ウェアからいくつかの情報をスマートフォンに送信しようとしていますが、まず2つの問題があります。まずはPutDataRequestを使用していますが、 :加速度計のデータをAndroidスマートフォンからスマートフォンに送信

public class MainActivity extends WearableActivity implements SensorEventListener, DataApi.DataListener, MessageApi.MessageListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    setAmbientEnabled(); 

    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
    mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 

    apiClient = new GoogleApiClient.Builder(this) 
      .addApi(Wearable.API) 
      .addConnectionCallbacks(this)//nos notifica cuando estamos conectados 
      .addOnConnectionFailedListener(this)// ofrece el resultado del error 
      .build(); 
    if(!apiClient.isConnected()) 
     apiClient.connect(); 

    x = (TextView) findViewById(R.id.x); 
    y = (TextView) findViewById(R.id.y); 
    z = (TextView) findViewById(R.id.z); 



} 

私は携帯電話にこの方法を値を送信しています、私は、これは間違っている知っているので、どのように私の代わりに3つのメッセージを送信する一つのメッセージで3つの値を送信する必要がありますか?ここ

public class MainActivity extends AppCompatActivity implements DataApi.DataListener, MessageApi.MessageListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener{ 


//On create 

apiClient = new GoogleApiClient.Builder(this) 
      .addApi(Wearable.API) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .build(); 

    if(!apiClient.isConnected()) 
     apiClient.connect(); 

受信メッセージ:

@Override 
public void onDataChanged(DataEventBuffer eventos) { 

     for (DataEvent event : eventos) { 
      if (event.getType() == DataEvent.TYPE_CHANGED){ 
       DataItem item =event.getDataItem(); 
       if (item.getUri().getPath().equals(ITEM_0)) { 
        DataMapItem dataMapItem = DataMapItem.fromDataItem(item); 

        acel_x = dataMapItem.getDataMap().getFloat(KEY); 

        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          ((TextView) findViewById(R.id.x)).setText(Float.toString(acel_x)); 

         } 
        }); 
       } 

は、だから私は君たちをお願いしたいと思いますどのように私がすべき私はmessesagesをこのように受け付けております携帯電話上の他の方法で

public void onSensorChanged(SensorEvent event) { 

    accelerometer[0]=event.values[0]; 
    accelerometer[1]=event.values[1]; 
    accelerometer[2]=event.values[2]; 

    x.setText(Float.toString(event.values[0])); 
    y.setText(Float.toString(event.values[1])); 
    z.setText(Float.toString(event.values[2])); 

    //Send X acceleration 
    putDataMapReq = PutDataMapRequest.create(ITEM_0); 
    putDataMapReq.getDataMap().putFloat(KEY, accelerometer[0]); 
    putDataReq = putDataMapReq.asPutDataRequest(); 
    resultado = Wearable.DataApi.putDataItem(apiClient, putDataReq); 
    Wearable.DataApi.putDataItem(apiClient,putDataReq); 

メッセージの送受信を行い、メモリオーバーフローを避けるためにメッセージをどのように送信する必要がありますか?

+0

なぜあなたは時計にデータを格納することはできませんし、後でそれを取得しますか?電話でリアルタイムデータを利用できるようにするには、メッセージapiを使用してデータを送信します。 – NewOne

+0

はい、リアルタイムデータが利用可能です。しかし、私はそれをどのように使うべきですか?値が変更されるたびにメッセージを送信しますか?それはメモリオーバーフローを引き起こすでしょう、それはありませんか? – user5034027

答えて

0

DataMapにはputFloatArray/getFloatArrayがあります。

摩耗:

putDataMapReq.getDataMap().putFloatArray(KEY, accelerometer); 

電話:

acel_xyz = dataMapItem.getDataMap().getFloatArray(KEY); 
+0

はい、どれくらいの頻度でデータを送信する必要がありますか? – user5034027

関連する問題