You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
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:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.epicgames.ue4.network;
|
||||
|
||||
import android.net.Network;
|
||||
|
||||
public interface NetworkChangedListener {
|
||||
|
||||
void onNetworkAvailable(Network network);
|
||||
|
||||
void onNetworkLost(Network network);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user