diff --git a/app/build.gradle b/app/build.gradle
index 2451864d..0b13f841 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -9,7 +9,7 @@ android {
applicationId "com.stardust.scriptdroid"
minSdkVersion 19
targetSdkVersion 23
- versionCode 142
+ versionCode 143
versionName "2.0.13 Beta2"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
@@ -118,7 +118,7 @@ dependencies {
compile 'com.yqritc:recyclerview-flexibledivider:1.4.0'
compile 'com.ashokvarma.android:bottom-navigation-bar:2.0.1'
// Tasker Plugin
- compile group: 'com.twofortyfouram', name: 'android-plugin-client-sdk-for-locale', version: '[4.0.2, 5.0['
+ compile 'com.twofortyfouram:android-plugin-client-sdk-for-locale:[4.0.2, 5.0['
compile 'com.android.volley:volley:1.0.0'
compile 'com.flurry.android:analytics:7.0.0@aar'
compile 'com.pushtorefresh.storio:sqlite:1.12.3'
@@ -134,4 +134,5 @@ dependencies {
compile project(':automator')
compile project(':common')
compile project(':autojs')
+ compile files('libs/GDTUnionSDK.4.9.545.min.jar')
}
\ No newline at end of file
diff --git a/app/libs/GDTUnionSDK.4.9.545.min.jar b/app/libs/GDTUnionSDK.4.9.545.min.jar
new file mode 100644
index 00000000..6fd58f48
Binary files /dev/null and b/app/libs/GDTUnionSDK.4.9.545.min.jar differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7fd65ad3..c5eb4e22 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,10 +9,11 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/stardust/scriptdroid/Constants.java b/app/src/main/java/com/stardust/scriptdroid/Constants.java
new file mode 100644
index 00000000..37416f50
--- /dev/null
+++ b/app/src/main/java/com/stardust/scriptdroid/Constants.java
@@ -0,0 +1,10 @@
+package com.stardust.scriptdroid;
+
+/**
+ * Created by Stardust on 2017/7/7.
+ */
+
+public final class Constants {
+ public static final String APP_ID = "1105513627";
+ public static final String SPLASH_POS_ID = "3050728349211259";
+}
diff --git a/app/src/main/java/com/stardust/scriptdroid/Pref.java b/app/src/main/java/com/stardust/scriptdroid/Pref.java
index 7ac1de80..ec102dff 100644
--- a/app/src/main/java/com/stardust/scriptdroid/Pref.java
+++ b/app/src/main/java/com/stardust/scriptdroid/Pref.java
@@ -11,6 +11,8 @@ import com.stardust.scriptdroid.autojs.AutoJs;
import org.mozilla.javascript.tools.debugger.Dim;
import org.mozilla.javascript.tools.debugger.GuiCallback;
+import java.util.concurrent.TimeUnit;
+
/**
* Created by Stardust on 2017/1/31.
*/
@@ -19,6 +21,8 @@ public class Pref {
private static final SharedPreferences DISPOSABLE_BOOLEAN = App.getApp().getSharedPreferences("DISPOSABLE_BOOLEAN", Context.MODE_PRIVATE);
private static final String KEY_SERVER_ADDRESS = "Still love you...17.5.14";
private static final String KEY_SHOULD_SHOW_ANNUNCIATION = "Sing about all the things you forgot, things you are not";
+ private static final String KEY_FIRST_SHOW_AD = "En, Today is 17.7.7, but, I'm still love you so....";
+ private static final String KEY_LAST_SHOW_AD_MILLIS = "But... it seems that...you will not come back any more...";
private static SharedPreferences.OnSharedPreferenceChangeListener onSharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
@@ -129,4 +133,26 @@ public class Pref {
public static boolean shouldShowAnnunciation() {
return getDisposableBoolean(KEY_SHOULD_SHOW_ANNUNCIATION, true);
}
+
+ public static boolean shouldShowAd() {
+ String adShowingMode = def().getString(getString(R.string.key_ad_showing_mode), "Default");
+ switch (adShowingMode) {
+ case "Default":
+ return true;
+ case "OncePerDay":
+ long lastShowMillis = def().getLong(KEY_LAST_SHOW_AD_MILLIS, 0);
+ if (System.currentTimeMillis() - lastShowMillis < TimeUnit.DAYS.toMillis(1)) {
+ return false;
+ }
+ def().edit().putLong(KEY_LAST_SHOW_AD_MILLIS, System.currentTimeMillis()).apply();
+ return true;
+ case "Off":
+ return false;
+ }
+ return true;
+ }
+
+ public static boolean isFirstShowingAd() {
+ return getDisposableBoolean(KEY_FIRST_SHOW_AD, true);
+ }
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/settings/SettingsActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/settings/SettingsActivity.java
index 777668ca..bd86ad45 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/settings/SettingsActivity.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/settings/SettingsActivity.java
@@ -15,6 +15,8 @@ import com.stardust.scriptdroid.tool.UpdateChecker;
import com.stardust.scriptdroid.ui.BaseActivity;
import com.stardust.scriptdroid.ui.error.IssueReporterActivity;
import com.stardust.scriptdroid.ui.main.MainActivity;
+import com.stardust.scriptdroid.ui.splash.SplashActivity;
+import com.stardust.scriptdroid.ui.splash.SplashActivity_;
import com.stardust.scriptdroid.ui.update.UpdateCheckDialog;
import com.stardust.util.IntentUtil;
import com.stardust.util.MapEntries;
@@ -114,6 +116,15 @@ public class SettingsActivity extends BaseActivity {
Toast.makeText(getActivity(), R.string.text_already_reset, Toast.LENGTH_SHORT).show();
}
})
+ .entry(getString(R.string.show_ad), new Runnable() {
+ @Override
+ public void run() {
+ SplashActivity_.intent(getActivity())
+ .extra(SplashActivity.NOT_START_MAIN_ACTIVITY, true)
+ .extra(SplashActivity.FORCE_SHOW_AD, true)
+ .start();
+ }
+ })
.entry(getString(R.string.text_check_update), new Runnable() {
@Override
public void run() {
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/splash/SplashActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/splash/SplashActivity.java
new file mode 100644
index 00000000..68095211
--- /dev/null
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/splash/SplashActivity.java
@@ -0,0 +1,139 @@
+package com.stardust.scriptdroid.ui.splash;
+
+import android.Manifest;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.util.Log;
+import android.view.View;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.qq.e.ads.splash.SplashAD;
+import com.qq.e.ads.splash.SplashADListener;
+import com.stardust.scriptdroid.Constants;
+import com.stardust.scriptdroid.Pref;
+import com.stardust.scriptdroid.R;
+import com.stardust.scriptdroid.ui.BaseActivity;
+import com.stardust.scriptdroid.ui.main.MainActivity_;
+
+import org.androidannotations.annotations.AfterViews;
+import org.androidannotations.annotations.EActivity;
+import org.androidannotations.annotations.ViewById;
+
+import java.util.Locale;
+
+/**
+ * Created by Stardust on 2017/7/7.
+ */
+@EActivity(R.layout.activity_splash)
+public class SplashActivity extends BaseActivity {
+
+ public static final String NOT_START_MAIN_ACTIVITY = "Eating...I...really...love...you...";
+ public static final String FORCE_SHOW_AD = "I will be better but can you take just a glance at me...";
+
+ private static final String LOG_TAG = SplashActivity.class.getSimpleName();
+
+ @ViewById(R.id.logo)
+ ImageView mLogo;
+
+ @ViewById(R.id.skip_view)
+ TextView mSkipView;
+
+ @ViewById(R.id.ad_container)
+ View mAdContainer;
+
+ @ViewById(R.id.ad)
+ FrameLayout mAd;
+
+ private SplashAD mSplashAD;
+ private boolean mCanEnterNextActivity = false;
+ private boolean mNotStartMainActivity;
+ private boolean mForceShowAd = false;
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ mNotStartMainActivity = getIntent().getBooleanExtra(NOT_START_MAIN_ACTIVITY, false);
+ mForceShowAd = getIntent().getBooleanExtra(FORCE_SHOW_AD, false);
+ if (!mForceShowAd && !Pref.shouldShowAd()) {
+ enterNextActivity();
+ return;
+ }
+ if (Pref.isFirstShowingAd()) {
+ Toast.makeText(this, R.string.text_can_close_ad_in_settings, Toast.LENGTH_SHORT).show();
+ }
+ checkPermission(Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
+ }
+
+ @AfterViews
+ void setUpViews() {
+ fetchSplashAD();
+ }
+
+ void enterNextActivity() {
+ if (!mNotStartMainActivity)
+ MainActivity_.intent(this).start();
+ finish();
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ enterNextActivityIfNeeded();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ mCanEnterNextActivity = false;
+ }
+
+ private void enterNextActivityIfNeeded() {
+ if (mCanEnterNextActivity) {
+ enterNextActivity();
+ return;
+ }
+ mCanEnterNextActivity = true;
+ }
+
+ private void fetchSplashAD() {
+ mSplashAD = new SplashAD(this, mAd, mSkipView, Constants.APP_ID, Constants.SPLASH_POS_ID, new SplashADListener() {
+ @Override
+ public void onADDismissed() {
+ Log.v(LOG_TAG, "onADDismissed");
+ enterNextActivityIfNeeded();
+ }
+
+ @Override
+ public void onNoAD(int errno) {
+ Log.e(LOG_TAG, "onNoAD: " + errno);
+ enterNextActivity();
+ }
+
+ @Override
+ public void onADPresent() {
+ Log.v(LOG_TAG, "onADPresent");
+ mSkipView.setVisibility(View.VISIBLE);
+ }
+
+ @Override
+ public void onADClicked() {
+ Log.v(LOG_TAG, "onADClicked");
+ }
+
+ @Override
+ public void onADTick(long l) {
+ mSkipView.setText(String.format(Locale.getDefault(), getString(R.string.format_skip), Math.round(l / 1000f)));
+ }
+ }, 4000);
+ }
+}
diff --git a/app/src/main/res/drawable/skip_circle_bg.xml b/app/src/main/res/drawable/skip_circle_bg.xml
new file mode 100644
index 00000000..c198aa58
--- /dev/null
+++ b/app/src/main/res/drawable/skip_circle_bg.xml
@@ -0,0 +1,43 @@
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml
new file mode 100644
index 00000000..a4eff12d
--- /dev/null
+++ b/app/src/main/res/layout/activity_splash.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 73d3ea7b..ce20eb9a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -190,6 +190,13 @@
在布局范围中查看
更多
分享
+ 跳过 %d
+ 广告可以在设置中关闭
+ key_ad_showing_mode
+ 广告
+ 欣赏广告
+ 广告显示设置
+ Default
- 无
@@ -205,4 +212,16 @@
- KEY_CAMERA
+
+ - 默认
+ - 每天显示一次
+ - 不显示
+
+
+
+ - Default
+ - OncePerDay
+ - Off
+
+
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 1594db63..07486379 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -18,8 +18,7 @@
- true
- false
-
- - @drawable/background_splash
+ - true