google play services - Android Wear: CapabilityApi times out, doesn't return capabilities -


i'm trying use new capabilityapi introduced in play services 7.3 learn capabilities of android wear device(asus zenwatch). i've checked out this question , can confirm wearable.nodeapi.getconnectednodes(...) approach work list of connected nodes , see watch in list. code i'm running in app on phone query capabilities of connected wear devices:

googleapiclient mgoogleapiclient = new googleapiclient.builder(context)                 .addapi(wearable.api)                 .build();  pendingresult<capabilityapi.getallcapabilitiesresult> result =      wearable.capabilityapi.getallcapabilities(mgoogleapiclient, capabilityapi.filter_all);  map<string, capabilityinfo> capabilities = result.await().getallcapabilities(); 

context in case activity. call happening on non-ui thread, calling await() safe. inserted breakpoint on last line, when hit , step on it, debugger never returns, if method runs forever , never returns. if replace await() await(10000, timeunit.milliseconds), times out after 10 seconds , capabilities assigned null. behavior same on phone paired android wear, or not paired it, or on emulator.

am missing something? what's correct way use capabilityapi , list of available capabilities , not have time out?

edit 1:

with of @ianhanniballake came code doesn't hang, returns result quickly:

connectionresult connectionresult = mgoogleapiclient.blockingconnect(connection_time_out_ms, timeunit.milliseconds); if (connectionresult.issuccess()) {     pendingresult<capabilityapi.getallcapabilitiesresult> result =                     wearable.capabilityapi.getallcapabilities(mgoogleapiclient, capabilityapi.filter_all);     mgoogleapiclient.disconnect();     map<string, capabilityinfo> capabilities =                     result.await().getallcapabilities();     return capabilities != null && !capabilities.isempty(); } else {     mgoogleapiclient.disconnect();     return false; } 

however, when run code on phone paired android smart watch, capabilities ends being either empty list, or null. expected result? thought supposed list of smart watch's capabilities. or code supposed ran on watch itself?

you have connect googleapiclient. consider using blockingconnect() on background thread, checking resulting connectionresult ensure connection succeeded.


Comments