代码之家  ›  专栏  ›  技术社区  ›  Simon

两个WearableListenerService侦听来自单个可穿戴应用程序的消息

  •  1
  • Simon  · 技术社区  · 9 年前

    我有一个问题,我想让两个不同的WearableListenerServices监听来自可穿戴应用程序的消息。扩展了WearableListenerService并进行了如下配置:

    <service android:name="no.xx.xx.wear.WearService">
        <intent-filter>
            <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
        </intent-filter>
    </service>
    

    可穿戴应用程序使用 Wearable.MessageApi.sendMessage(...) 并听取了使用 WearableListenerService's onMessageReceived(MessageEvent messageEvent) 方法

    但当我从一个监听服务转到两个监听服务时,似乎不再接收消息了?

    所以我的问题是:在一个单独的可穿戴应用组合中,有多少服务可以通过gms监听消息?

    4 回复  |  直到 9 年前
        1
  •  1
  •   gruszczy    9 年前

    你只能有一个 WearableListenerService .Android Wear不支持拥有多个。

        2
  •  0
  •   Benjamin    9 年前

    您可以无限制地在任何常规服务或活动中收听可穿戴信息。我相信你一次只能有一个WearableListenerService。因此,您可能应该做的是处理需要在后台使用WearableListenerService处理的任何消息。当您正在运行需要监听可穿戴消息的活动或普通旧服务时,请实现MessageApi.MessageListener。 这里有一个例子

    public class MainActivity extends Activity  implements
            GoogleApiClient.ConnectionCallbacks,
            GoogleApiClient.OnConnectionFailedListener, MessageApi.MessageListener {
    
        private GoogleApiClient googleClient; // A google client for Wear interaction
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            // Build a new GoogleApiClient that includes the Wearable API
            googleClient = new GoogleApiClient.Builder(this)
                    .addApi(Wearable.API)
                    .addConnectionCallbacks(this)
                    .addOnConnectionFailedListener(this)
                    .build();
        }
    
        @Override
        public void onConnected(Bundle connectionHint) {
            Wearable.MessageApi.addListener(googleClient, this);
        }
    
        @Override
        public void onMessageReceived(MessageEvent messageEvent) {
            //Same onMessageReceived as in WearableListenerService
        }
    
        @Override
        public void onConnectionFailed(ConnectionResult connectionResult) { }
        @Override
        public void onConnectionSuspended(int i) { }
    }
    

    注意:您也可以在服务中使用相同的基本原则。

        3
  •  0
  •   Michał Tajchert    9 年前

    无法通过扩展 WearableListenerService 但我已经创建了一个使用 WearableListener服务 和一个 BroadcastReceiver 将这些事件无延迟地传递给您希望的任何数量的听众。

    https://github.com/tajchert/ServiceWear

        4
  •  0
  •   Amir Alagic    9 年前

    只有一个听众就足够了。借助于不同的“路径”,您可以检查向您发送消息的侦听器服务,然后决定如何处理该消息。