Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions sdk/src/main/java/com/eegeo/mapapi/EegeoMap.java
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,8 @@
import com.eegeo.mapapi.services.routing.RoutingQueryResponse;
import com.eegeo.mapapi.services.routing.RoutingApi;
import com.eegeo.mapapi.services.routing.RoutingService;
import com.eegeo.mapapi.streaming.OnStreamingCompleteListener;
import com.eegeo.mapapi.streaming.StreamingApi;
import com.eegeo.mapapi.util.Callbacks;
import com.eegeo.mapapi.util.Promise;
import com.eegeo.mapapi.util.Ready;
Expand Down Expand Up @@ -144,6 +146,7 @@ public final class EegeoMap {
private IndoorMapEntityInformationApi m_indoorMapEntityInformationApi;
private IndoorMapFloorOutlineInformationApi m_indoorMapFloorOutlineInformationApi;
private LabelApi m_labelApi;
private StreamingApi m_streamingApi;


private static final AllowApiAccess m_allowApiAccess = new AllowApiAccess();
Expand Down Expand Up @@ -182,6 +185,7 @@ public final class EegeoMap {
this.m_indoorMapEntityInformationApi = new IndoorMapEntityInformationApi(m_nativeRunner, m_uiRunner, m_eegeoMapApiPtr);
this.m_indoorMapFloorOutlineInformationApi = new IndoorMapFloorOutlineInformationApi(m_nativeRunner, m_uiRunner, m_eegeoMapApiPtr);
this.m_labelApi = new LabelApi(m_nativeRunner, m_uiRunner, m_eegeoMapApiPtr);
this.m_streamingApi = new StreamingApi(m_nativeRunner, m_uiRunner, m_eegeoMapApiPtr);
}

@WorkerThread
Expand Down Expand Up @@ -1230,6 +1234,27 @@ public void removeOnIndoorEntityPickedListener(@NonNull OnIndoorEntityPickedList
m_indoorEntityApi.removeOnIndoorEntityPickedListener(listener);
}

/**
* Registers a listener of a streaming complete event
*
* @param listener The listener to be removed.
*/
@UiThread
public void addOnStreamingCompleteListener(@NonNull OnStreamingCompleteListener listener) {
m_streamingApi.addStreamingCompleteListener(listener);
}

/**
* Unregisters a listener of a streaming complete event
*
* @param listener The listener to be removed.
*/
@UiThread
public void removeOnStreamingCompleteListener(@NonNull OnStreamingCompleteListener listener) {
m_streamingApi.removeStreamingCompleteListener(listener);
}


/**
* Begin an operation to precache a spherical area of the map. This allows that area to load
* faster in future.
Expand Down Expand Up @@ -1397,6 +1422,17 @@ public void run() {
});
}

@WorkerThread
private void jniNotifyStreamingComplete() {
m_uiRunner.runOnUiThread(new Runnable() {
@UiThread
@Override
public void run() {
m_streamingApi.notifyStreamingCompleteReceived();
}
});
}

/**
* Interface for objects which receive notifications of changes to the camera.
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.eegeo.mapapi.streaming;

import androidx.annotation.UiThread;

import com.eegeo.mapapi.buildings.BuildingHighlight;

/**
* An interface that may be implemented and supplied to BuildingHighlightOptions in order to
* receive notification that BuildingInformation has been received.
*/
public interface OnStreamingCompleteListener {
/**
* Called when the streaming has been completed after a camera movement
*/
@UiThread
void onStreamingComplete();

}
72 changes: 72 additions & 0 deletions sdk/src/main/java/com/eegeo/mapapi/streaming/StreamingApi.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package com.eegeo.mapapi.streaming;

import android.graphics.Point;
import android.util.SparseArray;

import androidx.annotation.NonNull;
import androidx.annotation.UiThread;
import androidx.annotation.WorkerThread;

import com.eegeo.mapapi.INativeMessageRunner;
import com.eegeo.mapapi.IUiMessageRunner;

import java.util.ArrayList;
import java.util.List;

/**
* @eegeo.internal
*/
public class StreamingApi {
private INativeMessageRunner m_nativeRunner;
private IUiMessageRunner m_uiRunner;
private long m_jniEegeoMapApiPtr;

private List<OnStreamingCompleteListener> m_onStreamingCompleteListeners = new ArrayList<>();

public StreamingApi(INativeMessageRunner nativeRunner,
IUiMessageRunner uiRunner,
long jniEegeoMapApiPtr) {
this.m_nativeRunner = nativeRunner;
this.m_uiRunner = uiRunner;
this.m_jniEegeoMapApiPtr = jniEegeoMapApiPtr;
}

@UiThread
INativeMessageRunner getNativeRunner() {
return m_nativeRunner;
}

@UiThread
IUiMessageRunner getUiRunner() {
return m_uiRunner;
}

/**
* Registers a listener of a streaming complete event
*
* @param listener The listener to be removed.
*/
@UiThread
public void addStreamingCompleteListener(@NonNull OnStreamingCompleteListener listener) {
m_onStreamingCompleteListeners.add(listener);
}

/**
* Unregisters a listener of a streaming complete event
*
* @param listener The listener to be removed.
*/
@UiThread
public void removeStreamingCompleteListener(@NonNull OnStreamingCompleteListener listener) {
m_onStreamingCompleteListeners.remove(listener);
}

@UiThread
public void notifyStreamingCompleteReceived() {
for (OnStreamingCompleteListener listener: m_onStreamingCompleteListeners){
listener.onStreamingComplete();
}
}
}