@Override protected List<SmartDevice> doInBackground(final Void... params) { mLogger.entering(getClass().getName(), "doInBackground", params); List<SmartDevice> devices = new ArrayList<SmartDevice>(); DConnectMessage message = null; try { URIBuilder builder = new URIBuilder(); builder.setProfile(ServiceDiscoveryProfileConstants.PROFILE_NAME); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); if (prefs.getBoolean(getString(R.string.key_settings_dconn_ssl), false)) { builder.setScheme("https"); } else { builder.setScheme("http"); } builder.setHost( prefs.getString( getString(R.string.key_settings_dconn_host), getString(R.string.default_host))); builder.setPort( Integer.parseInt( prefs.getString( getString(R.string.key_settings_dconn_port), getString(R.string.default_port)))); builder.addParameter(DConnectMessage.EXTRA_ACCESS_TOKEN, getAccessToken()); HttpUriRequest request = new HttpGet(builder.build()); request.addHeader(DConnectMessage.HEADER_GOTAPI_ORIGIN, getPackageName()); mLogger.info(request.getMethod() + " " + request.getURI()); HttpResponse response = mDConnectClient.execute(request); message = (new HttpMessageFactory()).newDConnectMessage(response); } catch (URISyntaxException e) { e.printStackTrace(); mLogger.exiting(getClass().getName(), "doInBackground", devices); return devices; } catch (IOException e) { e.printStackTrace(); mLogger.exiting(getClass().getName(), "doInBackground", devices); return devices; } if (message == null) { mLogger.exiting(getClass().getName(), "doInBackground", devices); return devices; } int result = message.getInt(DConnectMessage.EXTRA_RESULT); if (result == DConnectMessage.RESULT_ERROR) { mLogger.exiting(getClass().getName(), "doInBackground", devices); return devices; } List<Object> services = message.getList(ServiceDiscoveryProfileConstants.PARAM_SERVICES); if (services != null) { for (Object object : services) { @SuppressWarnings("unchecked") Map<String, Object> service = (Map<String, Object>) object; SmartDevice device = new SmartDevice( service.get(ServiceDiscoveryProfileConstants.PARAM_ID).toString(), service.get(ServiceDiscoveryProfileConstants.PARAM_NAME).toString()); devices.add(device); mLogger.info("Found smart device: " + device.getId()); } } mLogger.exiting(getClass().getName(), "doInBackground", devices); return devices; }