More fallout of merge in GameActivity

- added GameApplication, network change notifications, Firebase, and lifecycle

#android
#rb Pete.Procopio


#ROBOMERGE-OWNER: ryan.gerleve
#ROBOMERGE-AUTHOR: chris.babcock
#ROBOMERGE-SOURCE: CL 5232162 via CL 5238945 via CL 5239022
#ROBOMERGE-BOT: ENGINE (Main -> Dev-Networking)

[CL 5255241 by chris babcock in Dev-Networking branch]
This commit is contained in:
chris babcock
2019-02-28 18:19:47 -05:00
parent 051effbb5e
commit 1d756185f4
10 changed files with 653 additions and 65 deletions

View File

@@ -174,8 +174,6 @@ import com.epicgames.ue4.GooglePlayLicensing;
// Console commands listener, only for debug builds
import com.epicgames.ue4.ConsoleCmdReceiver;
import com.epicgames.ue4.MultiChannelMediaEncoder;
import android.os.Build;
// TODO: use the resources from the UE4 lib project once we've got the packager up and running

View File

@@ -0,0 +1,48 @@
package com.epicgames.ue4;
import android.app.Application;
import android.arch.lifecycle.Lifecycle;
import android.arch.lifecycle.LifecycleObserver;
import android.arch.lifecycle.OnLifecycleEvent;
import android.arch.lifecycle.ProcessLifecycleOwner;
import com.epicgames.ue4.network.NetworkChangedManager;
//$${gameApplicationImportAdditions}$$
public class GameApplication extends Application implements LifecycleObserver {
private static final Logger Log = new Logger("UE4-" + GameApplication.class.getSimpleName());
public static final String MESSAGING_CONFIG = "messaging";
private static boolean isForeground = false;
@Override
public void onCreate() {
super.onCreate();
//$${gameApplicationOnCreateAdditions}$$
ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
NetworkChangedManager.getInstance().initNetworkCallback(this);
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
void onEnterForeground() {
Log.verbose("App in foreground");
isForeground = true;
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
void onEnterBackground() {
Log.verbose("App in background");
isForeground = false;
}
@SuppressWarnings("unused")
public static boolean isAppInForeground() {
return isForeground;
}
public static boolean isAppInBackground() {
return !isForeground;
}
}

View File

@@ -0,0 +1,10 @@
package com.epicgames.ue4.network;
import android.net.Network;
public interface NetworkChangedListener {
void onNetworkAvailable(Network network);
void onNetworkLost(Network network);
}

View File

@@ -0,0 +1,86 @@
package com.epicgames.ue4.network;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkRequest;
import android.support.annotation.NonNull;
import com.epicgames.ue4.Logger;
import java.lang.ref.WeakReference;
import java.util.HashSet;
import java.util.Set;
public final class NetworkChangedManager {
private static final Logger Log = new Logger("UE4-NetworkChangedManager");
private static final String SYSTEM = "NetworkManager";
private static final String COMPONENT = "ConnectivityManager";
private static final String ACTION_ERROR = "InstanceNotAvailable";
private static NetworkChangedManager instance;
@NonNull
private Set<WeakReference<NetworkChangedListener>> networkChangedListeners = new HashSet<>();
@NonNull
public static synchronized NetworkChangedManager getInstance() {
if (instance == null) {
instance = new NetworkChangedManager();
}
return instance;
}
private NetworkChangedManager() {
}
public void initNetworkCallback(@NonNull Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager != null) {
NetworkRequest.Builder builder = new NetworkRequest.Builder();
connectivityManager.registerNetworkCallback(
builder.build(),
new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
Log.verbose("Network Available");
for (WeakReference<NetworkChangedListener> listenerWeakRef : networkChangedListeners) {
NetworkChangedListener listener = listenerWeakRef.get();
if (listener != null) {
listener.onNetworkAvailable(network);
} else {
removeListener(listenerWeakRef);
}
}
}
@Override
public void onLost(Network network) {
Log.verbose("Network Lost");
for (WeakReference<NetworkChangedListener> listenerWeakRef : networkChangedListeners) {
NetworkChangedListener listener = listenerWeakRef.get();
if (listener != null) {
listener.onNetworkLost(network);
} else {
removeListener(listenerWeakRef);
}
}
}
}
);
} else {
Log.error("Unable to start connectivityManager");
}
}
@SuppressWarnings({"unused", "UnusedReturnValue"})
public boolean addListener(WeakReference<NetworkChangedListener> listener) {
return networkChangedListeners.add(listener);
}
@SuppressWarnings({"unused", "UnusedReturnValue"})
public boolean removeListener(WeakReference<NetworkChangedListener> listener) {
return networkChangedListeners.remove(listener);
}
}