2015-05-11 4 views
1

Я создал простой телефон < -> Wear App.WearableListenerService - onPeerConnected никогда не назывался

Wear приложение имеет одну активность с кодом:

public class MainActivity extends Activity implements GoogleApiClient.ConnectionCallbacks { 

private TextView mTextView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub); 
    stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() { 
     @Override 
     public void onLayoutInflated(WatchViewStub stub) { 
      mTextView = (TextView) stub.findViewById(R.id.text); 
     } 
    }); 

    getGoogleApiClient(this).connect(); 
} 


private GoogleApiClient getGoogleApiClient(Context context) { 
    return new GoogleApiClient.Builder(context) 
      .addApi(Wearable.API) 
      .addConnectionCallbacks(this) 
      .build(); 
} 

@Override 
public void onConnected(Bundle bundle) { 

    Toast.makeText(this, "onConnected", Toast.LENGTH_SHORT).show(); 
} 

@Override 
public void onConnectionSuspended(int i) { 

    Toast.makeText(this, "onConnectionSuspended", Toast.LENGTH_SHORT).show(); 
}} 

И приложение Телефон имеет один WearableListenerService

public class ListenerOfConnection extends WearableListenerService { 

private static final String TAG = "DataLayerListenerServic"; 


protected GoogleApiClient googleApiClient; 
@Override 
public void onCreate() { 
    super.onCreate(); 
    Toast.makeText(ListenerOfConnection.this, "onCreate", Toast.LENGTH_SHORT).show(); 
    googleApiClient = new GoogleApiClient.Builder(this) 
      .addApi(Wearable.API) 
      .build(); 

    googleApiClient.connect(); 
} 


@Override 
public void onPeerConnected(Node peer) { 
    super.onPeerConnected(peer); 
    Toast.makeText(ListenerOfConnection.this, "onPeerConnected", Toast.LENGTH_SHORT).show(); 
    LOGD(TAG, "onPeerConnected: " + peer); 
} 

@Override 
public void onPeerDisconnected(Node peer) { 
    super.onPeerDisconnected(peer); 
    Toast.makeText(ListenerOfConnection.this, "onPeerDisconnected", Toast.LENGTH_SHORT).show(); 
    LOGD(TAG, "onPeerDisconnected: " + peer); 
} 

public static void LOGD(final String tag, String message) { 
    if (Log.isLoggable(tag, Log.DEBUG)) { 
     Log.d(tag, message); 
    } 
}} 

Проблема заключается в том, что onPeerConnected и onPeerDisconnected являются никогда не называли, также onCreate не называется если я не отправлю никакого сообщения.

И если я отправить несколько сообщений onCreate называется, но onPeerConnected и onPeerDisconnectedникогда ...

Перед вопросы ко мне: 1. ApplicationID тот же 2. onConnected вызываются носимой деятельность

+0

Вашего TAG отсутствует одно письмо, будьте осторожны, если вы отфильтровывать журналы по его полному имени –

ответ

3

Насколько я могу судить, события onPeerConnected и onPeerDisconnected вызывается только в том случае, когда ваше приложение запущено, а bluetooth соединение между часами и телефоном - m ade или сломанной. Другими словами, вы будете очень редко видеть эти события, и практически никогда, когда вы отлаживаете два устройства, сидящих на вашем столе.

Если вы пытаетесь выполнить какую-либо работу, когда ваше приложение запускается первым, и соединение уровня API между устройствами инициализируется, вам нужно будет использовать метод Wearable.NodeApi.getConnectedNodes.

документации для этого материала меньше, чем ясно ...

Смежные вопросы