2014-11-26 2 views
0

시계에서 전화로 전화로 문자 전송을 시도하고 있습니다. 두 기기의 데이터를 서로 전송할 수 있으며 내 시계도 데이터를 수신 할 수 있습니다.
Receive_Data_Phone 클래스에 문제가있는 것 같습니다. 그것은 시계를 통해 보내는 어떤 데이터도 감지하지 못합니다.
코드 및 Logcat 출력을 공유했습니다.

Recieve_Data.java
Android 시계에서 데이터를 휴대 전화로 받기

public class Recieve_Data extends WearableListenerService { 
private static final String TAG = "@@##"; 
private GoogleApiClient mGoogleApiClient; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    mGoogleApiClient = new GoogleApiClient.Builder(this).addApi(
      Wearable.API).build(); 
    mGoogleApiClient.connect(); 
    System.out.println("Inside RecieveData onCreate()"); 


} 

@Override 
public void onDataChanged(DataEventBuffer dataEvents) { 
    final List<DataEvent> events = FreezableUtils 
      .freezeIterable(dataEvents); 
    dataEvents.close(); 
    System.out.println("Inside OnDataChanged()"); 

    if (!mGoogleApiClient.isConnected()) { 
     ConnectionResult connectionResult = mGoogleApiClient 
       .blockingConnect(30, TimeUnit.SECONDS); 
     if (!connectionResult.isSuccess()) { 
      Log.e(TAG,"WEAR :: Service failed to connect to GoogleApiClient."); 
      return; 
     } 
    } else { 
     Log.e(TAG,"WEAR :: Service connected to GoogleApiClient."); 
    } 

    for (DataEvent event : events) { 
     if (event.getType() == DataEvent.TYPE_CHANGED) { 
      String path = event.getDataItem().getUri().getPath(); 
      Log.d(TAG, "DataEvent.TYPE_CHANGED, path = " + path); 

       /*   if (Constants.PATH_SERVER_RESPONSE.equals(path)) { 
       // Get the data out of the event 
       DataMapItem dataMapItem = DataMapItem.fromDataItem(event 
         .getDataItem()); 
       final String responseString = dataMapItem.getDataMap() 
         .getString(Constants.KEY_TITLE); 
       Log.d(TAG, "DataEvent notif responseString: " 
         + responseString); 

       Intent intent = new Intent("my-event"); 
       intent.putExtra("message", responseString); 
       LocalBroadcastManager.getInstance(this).sendBroadcast(
         intent); 
      } 

      */   

      if (Constant_Vars.PATH_OBJECTIVE.equals(path)) { 
       DataMapItem dataMapItem = DataMapItem.fromDataItem(event 
         .getDataItem()); 
       String msg = dataMapItem.getDataMap().getString(
         Constant_Vars.KEY_OBJECTIVE); 
       int message = Integer.parseInt(msg); 
       Log.d(TAG, "WEAR:: String " + message); 


      } else { 
       Log.d(TAG, "Unrecognized path: " + path); 
      } 
     } 
    } 
} 

@Override 
public void onMessageReceived(MessageEvent messageEvent) { 
    Log.d(TAG, "MOBILE:: onMessageReceived messageEvent path: " 
      + messageEvent.getPath()); 

    if (messageEvent.getPath().equals(Constant_Vars.PATH_OBJECTIVE)) { 
     Toast.makeText(getBaseContext(), "Service Working", 
       Toast.LENGTH_SHORT).show(); 

    } else { 
     Toast.makeText(getBaseContext(), "Unknown request", 
       Toast.LENGTH_SHORT).show(); 
    } 
} 
} 

Receive_Data_Phone.java

public class Recieve_Data_Phone extends WearableListenerService { 


private static final String TAG = "@@##"; 

private GoogleApiClient mGoogleApiClient; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    mGoogleApiClient = new GoogleApiClient.Builder(this).addApi(
      Wearable.API).build(); 
    mGoogleApiClient.connect(); 
    System.out.println("Inside RecieveData onCreate()"); 


} 

@Override 
public void onDataChanged(DataEventBuffer dataEvents) { 
    final List<DataEvent> events = FreezableUtils 
      .freezeIterable(dataEvents); 
    dataEvents.close(); 
    System.out.println("Inside OnDataChanged()"); 

    if (!mGoogleApiClient.isConnected()) { 
     ConnectionResult connectionResult = mGoogleApiClient 
       .blockingConnect(30, TimeUnit.SECONDS); 
     if (!connectionResult.isSuccess()) { 
      Log.e(TAG,"PHONE :: Service failed to connect to GoogleApiClient."); 
      return; 
     } 
    } else { 
     Log.e(TAG,"PHONE :: Service connected to GoogleApiClient."); 
    } 

    for (DataEvent event : events) { 
     if (event.getType() == DataEvent.TYPE_CHANGED) { 
      String path = event.getDataItem().getUri().getPath(); 
      Log.d(TAG, "DataEvent.TYPE_CHANGED, path = " + path); 

       /*   if (Constants.PATH_SERVER_RESPONSE.equals(path)) { 
       // Get the data out of the event 
       DataMapItem dataMapItem = DataMapItem.fromDataItem(event 
         .getDataItem()); 
       final String responseString = dataMapItem.getDataMap() 
         .getString(Constants.KEY_TITLE); 
       Log.d(TAG, "DataEvent notif responseString: " 
         + responseString); 

       Intent intent = new Intent("my-event"); 
       intent.putExtra("message", responseString); 
       LocalBroadcastManager.getInstance(this).sendBroadcast(
         intent); 
      } 

      */   

      if (Constant_Vars.PATH_FLAG.equals(path)) { 
       DataMapItem dataMapItem = DataMapItem.fromDataItem(event 
         .getDataItem()); 
       String msg = dataMapItem.getDataMap().getString(
         Constant_Vars.KEY_FLAG); 
       //int message = Integer.parseInt(msg); 
       Log.d(TAG, "PHONE:: String " + msg); 


      } else { 
       Log.d(TAG, "Unrecognized path: " + path); 
      } 
     } 
    } 
} 

@Override 
public void onMessageReceived(MessageEvent messageEvent) { 
    Log.d(TAG, "MOBILE:: onMessageReceived messageEvent path: " 
      + messageEvent.getPath()); 

    if (messageEvent.getPath().equals(Constant_Vars.PATH_FLAG)) { 
     Toast.makeText(getBaseContext(), "Service Working", 
       Toast.LENGTH_SHORT).show(); 

    } else { 
     Toast.makeText(getBaseContext(), "Unknown request", 
       Toast.LENGTH_SHORT).show(); 
    } 
} 
} 

답변

2

내가 생각, 당신은 데이터 맵과 같은 키 - 값을 추가하려고, 동일한 데이터 항목을 보낼 수 있습니다. putLong ("timestamp", System.currentMillion()) 210 이유는 다음과 같습니다. 동일한 데이터 항목을 보내면 google 서비스가 데이터 항목을 감지하지 못해 onDataChanged() 메서드를 알리지 않습니다.

+0

감사합니다. –

관련 문제