Lifecycle Events

The SDK fires 3 lifecycle events, namely:

  • SDK Started
  • SDK Stopped
  • Geofencing Completed

Bellow is an example on how to listen for start/stop events:

package com.pulseid.app;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import com.pulseid.sdk.PulseSdk;

import static android.Manifest.permission.ACCESS_FINE_LOCATION;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    public static final int REQUEST_PERMISSIONS_REQUEST_CODE = 42;

    private PulseSdk pulseSdk;

    private BroadcastReceiver startupReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String intentAction = intent.getAction();

            if(PulseEvents.SDK_STARTED.equals(intentAction)) {
              Log.i(TAG, "SDK Started!");
            } else {
              Log.i(TAG, "SDK Stopped!");
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        pulseSdk = PulseSdkApplication.getInstance().getPulseSdk();

        IntentFilter startupIntentFilter = new IntentFilter();
        startupIntentFilter.addAction(PulseEvents.SDK_STARTED);
        startupIntentFilter.addAction(PulseEvents.SDK_STOPPED);
        LocalBroadcastManager.getInstance(this).registerReceiver(startupReceiver,
                startupIntentFilter);

        if (ActivityCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            requestPermissions();
        }
    }

    private void requestPermissions() {
        ActivityCompat.requestPermissions(MainActivity.this,
                new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                REQUEST_PERMISSIONS_REQUEST_CODE);
    }


    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                           @NonNull int[] grantResults) {
        if (requestCode == REQUEST_PERMISSIONS_REQUEST_CODE) {
            if (grantResults.length <= 0) {
                Log.i(TAG, "User interaction was cancelled.");
            } else if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Log.i(TAG, "Permission granted.");
                pulseSdk.start();
            } else {
                Log.i(TAG, "Permission denied");
            }
        }
    }
}

Note: The example is based on the MainActivity class from the quick start page.