commit 03b2ac79cff8f2460e7dd1b8609660131a9dbd4a Author: Kirito Date: Fri Dec 26 18:51:27 2025 +0800 init proj diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2cf9b31 --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties +/app/release diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..eaf91e2 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..b529e8d --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +Waje Bet \ No newline at end of file diff --git a/.idea/AndroidProjectSystem.xml b/.idea/AndroidProjectSystem.xml new file mode 100644 index 0000000..d58d49b --- /dev/null +++ b/.idea/AndroidProjectSystem.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..8b3f102 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml new file mode 100644 index 0000000..ca760ef --- /dev/null +++ b/.idea/deploymentTargetSelector.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/deviceManager.xml b/.idea/deviceManager.xml new file mode 100644 index 0000000..81c3e56 --- /dev/null +++ b/.idea/deviceManager.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..22d9498 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml new file mode 100644 index 0000000..48052b2 --- /dev/null +++ b/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..ae3bf2d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..5bd6771 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..d843f34 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..d3b7236 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,43 @@ +plugins { + alias(libs.plugins.android.application) +} + +android { + namespace 'com.hfhy.wajecasino.palmgameweb' + compileSdk 36 + + defaultConfig { + applicationId "com.hfhy.wajecasino.palmgameweb" + minSdk 21 + targetSdk 36 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } +} + +dependencies { + + implementation libs.appcompat + implementation libs.material + implementation libs.activity + implementation libs.constraintlayout + testImplementation libs.junit + androidTestImplementation libs.ext.junit + androidTestImplementation libs.espresso.core + + // 热力引擎 ( SolarEngine ) + implementation libs.solar.engine.core +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..2c68904 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/hfhy/wajecasino/palmgameweb/Constant.java b/app/src/main/java/com/hfhy/wajecasino/palmgameweb/Constant.java new file mode 100644 index 0000000..23688ff --- /dev/null +++ b/app/src/main/java/com/hfhy/wajecasino/palmgameweb/Constant.java @@ -0,0 +1,5 @@ +package com.hfhy.wajecasino.palmgameweb; + +public class Constant { + public static final String SE_APP_KEY = "9723484a319d3cc6"; +} diff --git a/app/src/main/java/com/hfhy/wajecasino/palmgameweb/MainActivity.java b/app/src/main/java/com/hfhy/wajecasino/palmgameweb/MainActivity.java new file mode 100644 index 0000000..df613fc --- /dev/null +++ b/app/src/main/java/com/hfhy/wajecasino/palmgameweb/MainActivity.java @@ -0,0 +1,82 @@ +package com.hfhy.wajecasino.palmgameweb; + + +import android.os.Bundle; +import android.app.Activity; +import android.webkit.WebSettings; +import android.webkit.WebView; +import android.webkit.WebViewClient; + + +public class MainActivity extends Activity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // 可选:处理返回键返回上一网页 + // 你可以根据需要添加onBackPressed逻辑 + // 设置沉浸式全屏,隐藏导航栏和状态栏 + getWindow().getDecorView().setSystemUiVisibility( + android.view.View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY + | android.view.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION + | android.view.View.SYSTEM_UI_FLAG_FULLSCREEN + | android.view.View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + | android.view.View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | android.view.View.SYSTEM_UI_FLAG_LAYOUT_STABLE + ); + + setContentView(R.layout.activity_main); + + SolarEngineMgr.init(this); + } + + private void configureWebViewSettings(WebView webView) { + WebSettings settings = webView.getSettings(); + // 基础缓存配置(所有版本适用) + settings.setCacheMode(WebSettings.LOAD_DEFAULT); + settings.setDomStorageEnabled(true); + settings.setJavaScriptEnabled(true); + + // API 21+ 推荐配置 + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { + settings.setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE); + } + } + + public void onSolarEngineInitSuccess() { + WebView webView = findViewById(R.id.webview); + configureWebViewSettings(webView); + + String packageName = getPackageName(); + String encodedPackage = android.net.Uri.encode(packageName); + String encodedSolarId = android.net.Uri.encode(SolarEngineMgr.getDistinctId()); + String urlDev = "https://test-h5.waje-special.com/?solarDeviceID="; + String urlRelease = "https://waje.bet/?solarDeviceID="; + String url = (SolarEngineMgr.isApkInDebug(this)? urlDev : urlRelease) + + encodedSolarId + "&package=" + encodedPackage; + webView.setWebViewClient(new WebViewClient()); + webView.loadUrl(url); + } + + public void onSolarEngineInitFailed() { + runOnUiThread(new Runnable() { + @Override + public void run() { + new android.app.AlertDialog.Builder(MainActivity.this) + .setTitle("Error") + .setMessage("Game failed to launch. Click Exit to quit.") + .setCancelable(false) + .setNegativeButton("Exit", new android.content.DialogInterface.OnClickListener() { + @Override + public void onClick(android.content.DialogInterface dialog, int which) { + dialog.dismiss(); + // Close the activity/app + finish(); + } + }) + .show(); + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hfhy/wajecasino/palmgameweb/SolarEngineMgr.java b/app/src/main/java/com/hfhy/wajecasino/palmgameweb/SolarEngineMgr.java new file mode 100644 index 0000000..3f2f138 --- /dev/null +++ b/app/src/main/java/com/hfhy/wajecasino/palmgameweb/SolarEngineMgr.java @@ -0,0 +1,119 @@ +package com.hfhy.wajecasino.palmgameweb; + +import android.content.Context; +import android.content.pm.ApplicationInfo; +import android.util.Log; + +import com.reyun.solar.engine.OnAttributionListener; +import com.reyun.solar.engine.SolarEngineConfig; +import com.reyun.solar.engine.SolarEngineManager; +import com.reyun.solar.engine.autotrack.AutoTrackEventType; + +import org.json.JSONObject; + +import java.util.ArrayList; +import java.util.List; + +public class SolarEngineMgr { + private static final String SE_USER_CODE = "dc69164d42c5c9c2"; + + private static final String LogTag = "==SolarEngineManage=="; + + public static void init(MainActivity activity) { + + SolarEngineManager.getInstance().preInit(activity, Constant.SE_APP_KEY); + + List autoTrackEventTypeList = new ArrayList<>(); + + autoTrackEventTypeList.add(AutoTrackEventType.AutoTrackAppViewScreen); + autoTrackEventTypeList.add(AutoTrackEventType.AutotrackAppClick); + + SolarEngineConfig config = new SolarEngineConfig.Builder() + .logEnabled() //开启本地调试日志 + .isGDPRArea(false) //是否属于GDPR地区,默认为false + .enableAutoTrackEvent(autoTrackEventTypeList) //自动采集方法入口 +// .withRemoteConfig(remoteConfig) //参数下发SDK参数配置,具体配置方法请参考参数下发文档 + .isDebugModel(isApkInDebug(activity)) //开启事件上报调试模式,需要提前在后台调试设备列表中添加调试设备;验证归因服务时需要关闭此模式 + .build(); + + config.setOnAttributionListener(new OnAttributionListener() { + @Override + public void onAttributionSuccess(JSONObject attribution) { + // 获取归因结果成功 + Log.i(LogTag, "onAttributionSuccess attribution ==> " + attribution.toString()); + // 回到主线程执行 Activity 回调,避免在后台线程直接操作 UI 或 WebView + try { + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + activity.onSolarEngineInitSuccess(); + } + }); + } catch (Exception e) { + Log.w(LogTag, "Failed to post onSolarEngineInitSuccess to UI thread", e); + // fallback call (best-effort) + activity.onSolarEngineInitSuccess(); + } + } + + @Override + public void onAttributionFail(int errorCode) { + // 获取归因结果失败 + Log.i(LogTag, "onAttributionFail errorCode ==> " + errorCode); + try { + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + activity.onSolarEngineInitFailed(); + } + }); + } catch (Exception e) { + Log.w(LogTag, "Failed to post onSolarEngineInitFailed to UI thread", e); + activity.onSolarEngineInitFailed(); + } + } + }); + + SolarEngineManager.getInstance().initialize(activity.getApplicationContext(), Constant.SE_APP_KEY, SE_USER_CODE, config); + + Log.i(LogTag, "initialize"); + } + + public static void setGaid(String gaid) { + SolarEngineManager.getInstance().setGaid(gaid); + } + + public static void setChannel(String channel) { + SolarEngineManager.getInstance().setChannel(channel); + } + + public static String getDistinctId() { + return SolarEngineManager.getInstance().getDistinctId(); + } + + public static String getAttribution() { + JSONObject jsonObject = SolarEngineManager.getInstance().getAttribution(); + if (jsonObject == null) return null; + return jsonObject.toString(); + } + + public static String getVisitorID() { + return SolarEngineManager.getInstance().getVisitorID(); + } + + public static String getAccountID() { + return SolarEngineManager.getInstance().getAccountID(); + } + + + public static boolean isApkInDebug(Context context) { + try { + ApplicationInfo info = context.getApplicationInfo(); + Log.i(LogTag, "isApkInDebug => " + ((info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0)); + return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0; + } catch (Exception e) { + Log.i(LogTag, "isApkInDebug false"); + return false; + } + } +} diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..1ddc264 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxxhdpi/whotgame_launcher.png b/app/src/main/res/mipmap-xxxhdpi/whotgame_launcher.png new file mode 100644 index 0000000..d23db2a Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/whotgame_launcher.png differ diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..cf5748e --- /dev/null +++ b/app/src/main/res/values-night/themes.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..c8524cd --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..06790e3 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Waje Game + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..b5e8e31 --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + +