summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java21
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java4
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.java13
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java2
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/StartupHandler.java14
5 files changed, 35 insertions, 19 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java
index 174d2d1ff2..dc3c48c338 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java
@@ -349,10 +349,29 @@ public final class NativeLibrary
public static native int DefaultCPUCore();
+ public static native void ReloadConfig();
+
+ /**
+ * Initializes the native parts of the app.
+ *
+ * Should be called at app start before running any other native code
+ * (other than the native methods in DirectoryInitialization).
+ */
+ public static native void Initialize();
+
+ /**
+ * Tells analytics that Dolphin has been started.
+ *
+ * Since users typically don't explicitly close Android apps, it's appropriate to
+ * call this not only when the app starts but also when the user returns to the app
+ * after not using it for a significant amount of time.
+ */
+ public static native void ReportStartToAnalytics();
+
/**
* Begins emulation.
*/
- public static native void Run(String[] path, boolean firstOpen);
+ public static native void Run(String[] path);
/**
* Begins emulation from the specified savestate.
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java
index ca34fc575b..d3cb2b6c66 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java
@@ -2,6 +2,7 @@ package org.dolphinemu.dolphinemu.features.settings.model;
import android.text.TextUtils;
+import org.dolphinemu.dolphinemu.NativeLibrary;
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivityView;
import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
@@ -175,6 +176,9 @@ public class Settings
SettingsFile.saveFile(fileName, iniSections, view);
}
+
+ // Notify the native code of the changes
+ NativeLibrary.ReloadConfig();
}
else
{
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.java
index f817414add..1ff9ba8ea0 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.java
@@ -82,12 +82,7 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C
mPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
String[] gamePaths = getArguments().getStringArray(KEY_GAMEPATHS);
- SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
- boolean firstOpen = preferences.getBoolean(StartupHandler.NEW_SESSION, true);
- SharedPreferences.Editor sPrefsEditor = preferences.edit();
- sPrefsEditor.putBoolean(StartupHandler.NEW_SESSION, false);
- sPrefsEditor.apply();
- mEmulationState = new EmulationState(gamePaths, getTemporaryStateFilePath(), firstOpen);
+ mEmulationState = new EmulationState(gamePaths, getTemporaryStateFilePath());
}
/**
@@ -271,12 +266,10 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C
private Surface mSurface;
private boolean mRunWhenSurfaceIsValid;
private boolean loadPreviousTemporaryState;
- private boolean firstOpen;
private final String temporaryStatePath;
- EmulationState(String[] gamePaths, String temporaryStatePath, boolean firstOpen)
+ EmulationState(String[] gamePaths, String temporaryStatePath)
{
- this.firstOpen = firstOpen;
mGamePaths = gamePaths;
this.temporaryStatePath = temporaryStatePath;
// Starting state is stopped.
@@ -420,7 +413,7 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C
else
{
Log.debug("[EmulationFragment] Starting emulation thread.");
- NativeLibrary.Run(mGamePaths, firstOpen);
+ NativeLibrary.Run(mGamePaths);
}
}, "NativeEmulation");
mEmulationThread.start();
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java
index 47925df998..727240b478 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java
@@ -67,6 +67,8 @@ public final class DirectoryInitialization
{
initializeInternalStorage(context);
initializeExternalStorage(context);
+ NativeLibrary.Initialize();
+ NativeLibrary.ReportStartToAnalytics();
directoryState = DirectoryInitializationState.DOLPHIN_DIRECTORIES_INITIALIZED;
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/StartupHandler.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/StartupHandler.java
index 8631e5ed8d..cdddd4cd37 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/StartupHandler.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/StartupHandler.java
@@ -8,15 +8,15 @@ import android.preference.PreferenceManager;
import android.support.v4.app.FragmentActivity;
import android.text.TextUtils;
+import org.dolphinemu.dolphinemu.NativeLibrary;
import org.dolphinemu.dolphinemu.activities.EmulationActivity;
import java.util.Date;
public final class StartupHandler
{
- public static final String NEW_SESSION = "NEW_SESSION";
public static final String LAST_CLOSED = "LAST_CLOSED";
- public static final Long SESSION_TIMEOUT = 21600000L; // 6 hours in milliseconds
+ public static final long SESSION_TIMEOUT = 21600000L; // 6 hours in milliseconds
public static void HandleInit(FragmentActivity parent)
{
@@ -66,15 +66,13 @@ public final class StartupHandler
*/
public static void checkSessionReset(Context context)
{
- Long currentTime = new Date(System.currentTimeMillis()).getTime();
+ long currentTime = new Date(System.currentTimeMillis()).getTime();
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
- Long lastOpen = preferences.getLong(LAST_CLOSED, 0);
+ long lastOpen = preferences.getLong(LAST_CLOSED, 0);
if (currentTime > (lastOpen + SESSION_TIMEOUT))
{
- // Passed at emulation start to trigger first open event.
- SharedPreferences.Editor sPrefsEditor = preferences.edit();
- sPrefsEditor.putBoolean(NEW_SESSION, true);
- sPrefsEditor.apply();
+ new AfterDirectoryInitializationRunner().run(context,
+ () -> NativeLibrary.ReportStartToAnalytics());
}
}
}