Интеграция с использованием подписки на broadcast (для Andriod)

  1. Создать свой broadcast receiver
private PersonsReceiver receiver = new PersonsReceiver();
private class PersonsReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        parse(context, intent);
    }
}
  1. Подписать его на события net.seemetrix.agent.PERSONS которые приходят каждые 0.5с
IntentFilter filter = new IntentFilter();
filter.addAction("net.seemetrix.agent.PERSONS");
try {
    registerReceiver(receiver, filter);
} catch (IllegalArgumentException e){
    Log.e("REGISTER EXCEPTION", "Receiver already registered" + e);
}
  1. Обрабатывать полученные данные в формате json
{
    "persons": [
        {
            "id": int,
            "duration": int,
            "gender": String,
            "age": String
        }
    ]
}

Получение массива с объектами с информацией о людях перед камерой:

Bundle bundle = intent.getExtras();
String jsonstring = bundle.getString("persons");
JSONObject obj = new JSONObject(jsonstring);
jsonarray = obj.getJSONArray("persons");

Каждый объект содержит:

int id = current_person.getInt("id");

id – идентификатор лица (как только человек появляется перед камерой, он получает идентификатор – число, которое ему будет соответствовать все то время, пока он перед ней находится);

String gender = current_person.getString("gender");

gender – пол (строка, может принимать значения male, female, undefined);

int duration = current_person.getInt("duration");

duration - время, в течение которого человек находится перед камерой (в мс);

String age = current_person.getString("age");

age – возраст (строка, может принимать значения kid, young, adult и senior).

Пример приложения, которое выводит на экран информацию о людях, стоящих перед камерой

package com.example.parseltestapplication;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class MainActivity extends Activity {
    private PersonsReceiver receiver = new PersonsReceiver();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    @Override
    protected void onResume() {
        super.onResume();
        IntentFilter filter = new IntentFilter();
        filter.addAction("net.seemetrix.agent.PERSONS");
        try {
            registerReceiver(receiver, filter);
        } catch (IllegalArgumentException e){
            Log.e("REGISTER EXCEPTION", "Receiver already registered" + e);
        }
    }
    @Override
    protected void onPause() {
        super.onPause();
        try {
            unregisterReceiver(receiver);
        } catch (IllegalArgumentException e){
            Log.e("UNREGISTER EXCEPTION", "Receiver not registered" + e);
        }
    }
    private class PersonsReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            doMyWork(context, intent);
        }
        private void doMyWork(Context context, Intent intent) {
            Bundle bundle = intent.getExtras();
            String parse_result = "";
            if (bundle != null) {
                JSONArray jsonarray;
                String jsonstring = bundle.getString("persons");
                try {
                    JSONObject obj = new JSONObject(jsonstring);
                    jsonarray = obj.getJSONArray("persons");
                    if (jsonarray != null) {
                        Log.d("PARSE", "persons count " + jsonarray.length());
                        for (int i = 0; i < jsonarray.length(); ++i) {
                            JSONObject current_person = jsonarray.getJSONObject(i);
                            int id = current_person.getInt("id");
                            String gender = current_person.getString("gender");
                            int duration = current_person.getInt("duration");
                            String age = current_person.getString("age");
                            parse_result +=
                                i + " , id " + id + ",
                                gender " + gender + ",
                                age " + age + ",
                                duration " + duration + "\n";
                        }
                        Log.d("PARSE", parse_result);
                    } else {
                        Log.d("PARSE", "Null array");
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
            ((TextView)findViewById(R.id.info)).setText(parse_result);
        }
    }
}