4.1.6 version
Table of Contents
- What’s New
- Setup
- Usage
- Offline mode
- Functions
- Events
- Navigation
- GlobalLocationProvider
- CrowdConnected location provider
- IndoorAtlas location provider
- ExpoFP-GPS location provider
What’s New in ExpoFP Fplan version 4.1.6
Bugs have been fixed.
Setup
Add Maven repository reference to settings.gradle file(in root of your project):
repositories {
maven { url "https://s01.oss.sonatype.org/content/repositories/releases" }
//If you want to use navigation from CrowdConnected, add a link to the repository
//maven { url "https://maven2.crowdconnected.net/" }
//If you want to use navigation from IndoorAtlas, add a link to the repository
//maven { url "https://dl.cloudsmith.io/public/indooratlas/mvn-public/maven/" }
...
}
Add dependency to build.gradle file(in module):
dependencies {
implementation 'com.expofp:common:4.1.6'
implementation 'com.expofp:fplan:4.1.6'
//If you want to use navigation from CrowdConnected, add a link to the package
//implementation 'com.expofp:crowdconnected:4.1.6'
//If you want to use navigation from IndoorAtlas, add a link to the package
//implementation 'com.expofp:indooratlas:4.1.6'
...
}
Add permissions in “AndroidManifest.xml” file:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Usage
Add FplanView to layout:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.expofp.fplan.FplanView
android:id="@+id/fplanView"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Init FplanView:
Settings settings = new Settings("https://demo.expofp.com")
//.withLocationProvider(new CrowdConnectedProvider(getApplication(), new com.expofp.crowdconnected.Settings("APP_KEY","TOKEN","SECRET")))
//.withLocationProvider(new IndoorAtlasProvider(getApplication(), "API_KEY", "API_SECRET_KEY"))
//.withGlobalLocationProvider()
.withEventsListener(new FplanEventsListener() {
@Override
public void onFpConfigured() {
}
@Nullable
@Override
public void onFpConfigureError(int errorCode, String description) {
}
@Override
public void onBoothClick(@Nullable String id, @Nullable String name) {
}
@Override
public void onDirection(@Nullable Route route) {
}
@Override
public void onDetails(@Nullable Details details) {
}
@Override
public void onExhibitorCustomButtonClick(String externalId, int buttonNumber, String buttonUrl) {
}
@Override
public void onMessageReceived(@Nullable String message) {
}
});
_fplanView = findViewById(R.id.fplanView);
_fplanView.init(settings);
Stop FplanView.
After you finish working with FplanView, you need to stop it.
To do this, you need to call the ‘destroy’ function:
_fplanView = findViewById(R.id.fplanView);
_fplanView.destroy();
Offline mode
ExpoFP SDK provides the following offline modes:
-
Default - ExpoFP SDK itself caches all the necessary data during the initial loading of the plan.
-
Opening a zip archive with a plan - you can download the plan archive from the “Integration options” page (windows section), add this archive to your application (assets) and then open this plan using the “openZipFromAssets()” function.
Example:
Settings settings = new Settings("")
.withEventsListener(new FplanEventsListener() {
@Override
public void onFpConfigured() {
}
@Nullable
@Override
public void onFpConfigureError(int errorCode, String description) {
}
@Override
public void onBoothClick(@Nullable String id, @Nullable String name) {
}
@Override
public void onDirection(@Nullable Route route) {
}
@Override
public void onDetails(@Nullable Details details) {
}
@Override
public void onExhibitorCustomButtonClick(String externalId, int buttonNumber, String buttonUrl) {
}
@Override
public void onMessageReceived(@Nullable String message) {
}
});
_fplanView = findViewById(R.id.fplanView);
_fplanView.openZipFromAssets("demo.zip", null, settings, getApplicationContext());
You can also open a zip using the “openZip()” function, this allows you to open an archive stored in the device’s memory.
Example:
Settings settings = new Settings("")
.withEventsListener(new FplanEventsListener() {
@Override
public void onFpConfigured() {
}
@Nullable
@Override
public void onFpConfigureError(int errorCode, String description) {
}
@Override
public void onBoothClick(@Nullable String id, @Nullable String name) {
}
@Override
public void onDirection(@Nullable Route route) {
}
@Override
public void onDetails(@Nullable Details details) {
}
@Override
public void onExhibitorCustomButtonClick(String externalId, int buttonNumber, String buttonUrl) {
}
@Override
public void onMessageReceived(@Nullable String message) {
}
});
_fplanView = findViewById(R.id.fplanView);
_fplanView.openZip("/mnt/sdcard/demo.zip", null, settings, getApplicationContext());
Functions
Select booth function
_fplanView.selectBooth("720");
Select exhibitor function
_fplanView.selectExhibitor("ExpoPlatform");
Build route function
_fplanView.selectRoute("720", "751");
Set current position(Blue-dot) function
_fplanView.selectCurrentPosition(2875, 1734);
Clear floor plan function
_fplanView.clear();
Events
Floor plan ready event
This event is called when the plan initialization process has successfully completed.
@Override
public void onFpConfigured() {
}
Floor plan init error event
This event is called when an error occurs while initializing the plan.
@Nullable
@Override
public void onFpConfigureError(int errorCode, String description) {
}
Select booth event
This event is called when a booth is clicked.
@Override
public void onBoothClick(@Nullable String id, @Nullable String name) {
}
Route create event
This event is called when the route is successfully built.
@Override
public void onDirection(@Nullable Route route) {
}
Receive message event
Currently not in use.
@Override
public void onMessageReceived(@Nullable String message) {
}
Details open event
This event is called when opening a panel with information, it can be a panel with information about an open booth, a route, etc.
@Override
public void onDetails(@Nullable Details details) {
}
Exhibitor custom button click event
This event is called after clicking a custom button in the panel with information about the exhibitor.
@Override
public void onExhibitorCustomButtonClick(String externalId, int buttonNumber, String buttonUrl) {
}
Navigation
There are 2 ways to use navigation in FplanView. The first way is to explicitly specify the provider in the FplanView settings. In this case, FplanView will start and stop the LocationProvider on its own.
LocationProvider locationProvider = ...;
Settings settings = new Settings("https://demo.expofp.com")
.withLocationProvider(locationProvider);
_fplanView = findViewById(R.id.fplanView);
_fplanView.init(settings);
The second way is to run in the background using GlobalLocationProvider.
GlobalLocationProvider
Very often needed to run a location provider in the background, ExpoFP SDK has a GlobalLocationProvider for this. The GlobalLocationProvider runs once at program startup and work in the background.
LocationProvider locationProvider = ...;
GlobalLocationProvider.init(locationProvider);
GlobalLocationProvider.start();
When using the GlobalLocationProvider in the FplanView settings, you need to call the ‘withGlobalLocationProvider’ function:
Settings settings = new Settings("https://demo.expofp.com")
.withGlobalLocationProvider();
_fplanView = findViewById(R.id.fplanView);
_fplanView.init(settings);
When the program terminates, the GlobalLocationProvider must also be stopped:
GlobalLocationProvider.stop();
CrowdConnected location provider
Setup
Add Maven repository reference to settings.gradle file(in root of your project):
repositories {
maven { url "https://maven2.crowdconnected.net/" }
...
}
Add dependency to build.gradle file(in module):
dependencies {
implementation 'com.expofp:crowdconnected:4.1.6'
implementation 'net.crowdconnected.android.core:android-core:1.3.4'
implementation 'net.crowdconnected.android.ips:android-ips:1.3.4'
implementation 'net.crowdconnected.android.geo:android-geo:1.3.4'
...
}
Add permissions in “AndroidManifest.xml” file:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
LocationProvider initialization
com.expofp.crowdconnected.Settings lpSettings = new com.expofp.crowdconnected.Settings("APP_KEY", "TOKEN", "SECRET", Mode.IPS_ONLY);
LocationProvider locationProvider = new com.expofp.crowdconnected.CrowdConnectedProvider(getApplication(), lpSettings);
Recommended use
When using CrowdConnectedProvider, it is recommended to run it in the background (when the program starts) using the GlobalLocationProvider.
com.expofp.crowdconnected.Settings lpSettings = new com.expofp.crowdconnected.Settings("APP_KEY", "TOKEN", "SECRET", Mode.IPS_ONLY);
LocationProvider locationProvider = new com.expofp.crowdconnected.CrowdConnectedProvider(getApplication(), lpSettings);
GlobalLocationProvider.init(locationProvider);
GlobalLocationProvider.start();
On initial startup, the CrowdConnectedProvider checks for permissions, if the permissions are delegated by the user then the CrowdConnectedProvider starts running, if there are no permissions, the CrowdConnectedProvider waits for any plan to open and requests the necessary permissions after the plan is opened. When opening a plan, you must specify “withGlobalLocationProvider” in the settings:
Settings settings = new Settings("https://demo.expofp.com")
.withGlobalLocationProvider();
_fplanView = findViewById(R.id.fplanView);
_fplanView.init(settings);
When the program terminates, the GlobalLocationProvider must also be stopped:
GlobalLocationProvider.stop();
Aliases
com.expofp.crowdconnected.Settings lpSettings = new com.expofp.crowdconnected.Settings("APP_KEY", "TOKEN", "SECRET", Mode.IPS_ONLY);
lpSettings.setAlias("KEY_1", "VALUE_1");
lpSettings.setAlias("KEY_2", "VALUE_2");
LocationProvider locationProvider = new com.expofp.crowdconnected.CrowdConnectedProvider(getApplication(), lpSettings);
Notification settings
com.expofp.crowdconnected.Settings lpSettings = new com.expofp.crowdconnected.Settings("APP_KEY", "TOKEN", "SECRET", Mode.IPS_ONLY);
lpSettings.setServiceNotificationInfo("NOTIFICATION_TEXT", SERVICE_ICON);
LocationProvider locationProvider = new com.expofp.crowdconnected.CrowdConnectedProvider(getApplication(), lpSettings);
IndoorAtlas location provider
Setup
Add Maven repository reference to settings.gradle file(in root of your project):
repositories {
maven { url "https://dl.cloudsmith.io/public/indooratlas/mvn-public/maven/" }
...
}
Add dependency to build.gradle file(in module):
dependencies {
implementation 'com.expofp:indooratlas:4.1.6'
implementation "com.indooratlas.android:indooratlas-android-sdk:3.5.5@aar"
...
}
Add permissions in “AndroidManifest.xml” file:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
LocationProvider initialization:
LocationProvider locationProvider = new com.expofp.indooratlas.IndoorAtlasProvider(getApplication(), "API_KEY", "API_SECRET_KEY");
ExpoFP-GPS location provider
Setup
Add Maven repository reference to settings.gradle file(in root of your project):
repositories {
maven { url "https://s01.oss.sonatype.org/content/repositories/releases" }
...
}
Add dependency to build.gradle file(in module):
dependencies {
implementation 'com.expofp:gpsprovider:4.1.6'
...
}
Add permissions in “AndroidManifest.xml” file:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
LocationProvider initialization
LocationProvider locationProvider = new com.expofp.gpsprovider.GpsProvider(getApplication());