我从磨损手表发送数据,字节。我希望在手机上的后台服务中接收数据,但永远不会调用onMesageReceived。我知道我做错了什么?我的第一次尝试是通过手机上的应用程序工作但不实用。
移动服务:
public class LampControlService extends Service implements MessageApi.MessageListener, GoogleApiClient.ConnectionCallbacks {
private static final String TAG = "test";
private static final String WEAR_MESSAGE_PATH = "/message";
private GoogleApiClient mGoogleApiClient;
private ArrayAdapter<String> mAdapter;
@Override
public void onCreate(){
HandlerThread thread = new HandlerThread("test");
thread.start();
//---Build a new Google API client--
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Wearable.API)
.addConnectionCallbacks(this)
.build();
if (mGoogleApiClient != null && !(mGoogleApiClient.isConnected() ||
mGoogleApiClient.isConnecting()))
mGoogleApiClient.connect();
}
public int onStartCommand(Intent intent, int flags, int startId){
return START_STICKY;
}
@Override
public void onDestroy() {
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onConnected(Bundle bundle) {
Wearable.MessageApi.addListener( mGoogleApiClient, this );
Log.d(TAG, "onConnected()");
}
@Override
public void onMessageReceived( final MessageEvent messageEvent ) {
Log.d(TAG, "onMessageReceived()");
if (messageEvent.getPath().equalsIgnoreCase(WEAR_MESSAGE_PATH)) {
String lamp = new String(messageEvent.getData());
sendLampCommand(lamp);
}
else {
// super.onMessageReceived(messageEvent);
}
}
// @Override
public void onConnectionSuspended(int i) {
}
private static void sendLampCommand(String lamp){
// Send lamp command to web server
}
}
在AndroidManifest中添加的行:
<service
android:name=".LampControlService">
<service android:name=".DataLayerListenerService">
<intent-filter>
<action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
</intent-filter>
</service>
</service>
答案 0 :(得分:1)
我遇到了同样的问题。 首先,请查看Google服务库。使用支持您设备的最旧版本。
和/或检查您的设备是否休眠。某些设备的行为不正确。 我的意思是,打开这个目录:
.\Sdk\extras\google\m2repository\com\google\android\gms\play-services-wearable\
并检查您的版本。
不要使用上一个版本。使用8.4.0\
或类似内容。
答案 1 :(得分:1)
我建议您延长WearableListenerService
而不是尝试自己做所有事情。它已经为像您这样的用例做好了准备,并确保涵盖所有基础知识,而无需担心细节。
完整说明在此处:https://developer.android.com/training/wearables/data-layer/events.html#Listen(在 With WearableListenerService 部分中)