В Funf зондами являются Сервисы.Это означает, что они не могут быть непосредственно созданы, а должны создаваться системой с использованием намерений.Вот пример того, как запрашивать данные из службы Probe с помощью намерений.(Пример ниже для v0.3.x и выше.)
Зонды используют асинхронные методы для отправки статуса и данных, поэтому вам потребуется Service или BroadcastReceiver для получения информации о пробе.
Сначала создайте ваше намерение обратного вызова, используя либо Сервис:
Intent callbackIntent = new Intent(this, ExampleProbeDataService.class);
callbackIntent.setAction("CUSTOM_DATA_ACTION");
PendingIntent callback = PendingIntent.getService(getContext(), 0, callbackIntent, PendingIntent.FLAG_UPDATE_CURRENT);
, либо используя широковещательную рассылку:
Intent callbackIntent = new Intent("CUSTOM_BROADCAST_ACTION");
// Restrict broadcast to only my package to prevent broadcasting private user data
callbackIntent.setPackage(getContext().getPackageName());
PendingIntent callback = PendingIntent.getBroadcast(getContext(), 0, callbackIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Затем сделайте запрос данных на зонд:
Bundle params = new Bundle();
params.putLong(Parameter.Builtin.PERIOD.name, 10L); // Run every 10 seconds
Intent probeIntent = new Intent(getContext(), probeClass);
probeIntent.setAction(Probe.ACTION_REQUEST);
probeIntent.putExtra(Probe.CALLBACK_KEY, callback);
probeIntent.putExtra(Probe.REQUESTS_KEY, params);
getContext().startService(probeIntent);
Датчик будет периодически отправлять данные и сообщения о состоянии на основе предоставленных вами параметров.
Хотя в некоторых случаях требуется запрос данных непосредственно от датчиков, в большинстве случаев это не рекомендуется.,Для тестирования я рекомендую использовать класс ProbeTestCase .Он заботится о деталях запроса данных и обработки ответов.Для приложения самый простой подход - расширить ConfiguredPipeline и переопределить onDataReceived(Bundle data)
, чтобы настроить обработку полученных данных.