【问题标题】:WearableListenerService - onPeerConnected never calledWearableListenerService - onPeerConnected 从未调用过
【发布时间】:2015-05-11 20:00:28
【问题描述】:

我创建了简单的电话穿戴应用程序。

Wear 应用有一个带有代码的 Activity:

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();
}}

Phone 应用有一个 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);
    }
}}

问题是onPeerConnectedonPeerDisconnected从未被调用,如果我不发送任何消息,onCreate 也不会被调用。

如果我发送少量消息 onCreate 被调用但 onPeerConnectedonPeerDisconnected 从不...

在向我提问之前: 1.applicationId相同 2.可穿戴Activity调用onConnected

【问题讨论】:

  • 您的 TAG 缺少一个字母,如果您按全名过滤日志,请小心

标签: android wear-os android-wear-data-api


【解决方案1】:

据我所知,onPeerConnectedonPeerDisconnected 事件仅在您的应用程序运行并且手表和手机之间的蓝牙 连接建立或断开时才会调用。换句话说,您很少会看到这些事件,而且在您调试桌上的两台设备时几乎不会看到。

如果您在应用首次启动并且设备之间的 API 级连接已初始化时尝试做一些工作,则需要改用 Wearable.NodeApi.getConnectedNodes 方法。

这些东西的文档不太清楚......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-13
    • 1970-01-01
    相关资源
    最近更新 更多