From 7d62c45726746fd3a4e9360642e81d7da6d76757 Mon Sep 17 00:00:00 2001 From: lwb <q3213421wrwqr> Date: 星期四, 19 十一月 2020 15:06:16 +0800 Subject: [PATCH] 9527 新版本sdk --- SdkProject/library/src/main/java/com/secondworld/sdk/UnityPlayerActivity.java | 132 ++++++ SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeA2U.java | 2 SdkProject/library/build.gradle | 41 + SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdInstallAPK.java | 40 + SdkProject/app/src/androidTest/java/com/secondworld/sdk/ExampleInstrumentedTest.java | 2 SdkProject/app/src/test/java/com/secondworld/sdk/ExampleUnitTest.java | 2 SdkProject/app/src/main/AndroidManifest.xml | 7 SdkProject/library/src/main/java/com/secondworld/sdk/utils/StaticDefine.java | 12 SdkProject/library/src/main/res/layout/activity_main.xml | 12 SdkProject/library/src/main/java/com/secondworld/sdk/GameApp.java | 54 ++ SdkProject/app/build.gradle | 4 SdkProject/library/src/main/AndroidManifest.xml | 14 SdkProject/library/src/main/java/com/secondworld/sdk/utils/LogUtil.java | 4 SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdOpenWebView.java | 17 SdkProject/library/src/main/java/com/secondworld/sdk/utils/Util.java | 33 + SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeU2A.java | 16 SdkProject/library/src/main/res/values/strings.xml | 1 SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdCopyContent.java | 35 + SdkProject/library/src/main/java/com/secondworld/sdk/GameActivity.java | 26 + SdkProject/library/src/main/java/com/secondworld/sdk/utils/FileUtil.java | 136 ++++++ SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdUniqueID.java | 17 SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdBatteryListenStop.java | 18 SdkProject/app/src/main/res/layout/activity_main.xml | 16 SdkProject/library/libs/unity-classes.jar | 0 SdkProject/library/src/main/java/com/secondworld/sdk/UnityMsgHandler.java | 98 ++++ SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestManifestPermissions.java | 17 SdkProject/app/src/main/java/com/secondworld/demo/MainActivity.java | 35 + SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdInit.java | 61 ++ SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRestartApp.java | 18 SdkProject/library/src/main/java/com/secondworld/sdk/utils/SPUtils.java | 23 + /dev/null | 19 SdkProject/library/src/test/java/com/secondworld/sdk/ExampleUnitTest.java | 2 SdkProject/library/src/main/java/com/secondworld/sdk/AsyncTaskOperator.java | 24 + SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdBatteryListenStart.java | 18 SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdCopyAsset.java | 19 SdkProject/library/src/androidTest/java/com/secondworld/sdk/ExampleInstrumentedTest.java | 2 SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermission.java | 18 SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdCopyOneAsset.java | 21 SdkProject/library/src/main/java/com/secondworld/sdk/utils/BatteryUtil.java | 108 ++++ SdkProject/library/src/main/java/com/secondworld/sdk/utils/DeviceUtil.java | 157 +++++++ SdkProject/channel/test/java/com/secondworld/sdk/MyApplication.java | 4 SdkProject/library/src/main/java/com/secondworld/sdk/command/ICommand.java | 14 42 files changed, 1,244 insertions(+), 55 deletions(-) diff --git a/SdkProject/app/build.gradle b/SdkProject/app/build.gradle index 8a32f5c..5f72e7b 100644 --- a/SdkProject/app/build.gradle +++ b/SdkProject/app/build.gradle @@ -7,7 +7,7 @@ buildToolsVersion "30.0.2" defaultConfig { - applicationId "com.secondworld.sdk" + applicationId "com.secondworld.demo" minSdkVersion 21 targetSdkVersion 29 versionCode 1 @@ -32,7 +32,7 @@ implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'com.google.android.material:material:1.2.1' - implementation 'androidx.constraintlayout:constraintlayout:2.0.3' + implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation project(path: ':library') testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.2' diff --git a/SdkProject/app/src/androidTest/java/com/secondworld/universalsdk/ExampleInstrumentedTest.java b/SdkProject/app/src/androidTest/java/com/secondworld/sdk/ExampleInstrumentedTest.java similarity index 94% rename from SdkProject/app/src/androidTest/java/com/secondworld/universalsdk/ExampleInstrumentedTest.java rename to SdkProject/app/src/androidTest/java/com/secondworld/sdk/ExampleInstrumentedTest.java index f293dd9..3e0893f 100644 --- a/SdkProject/app/src/androidTest/java/com/secondworld/universalsdk/ExampleInstrumentedTest.java +++ b/SdkProject/app/src/androidTest/java/com/secondworld/sdk/ExampleInstrumentedTest.java @@ -1,4 +1,4 @@ -package com.secondworld.universalsdk; +package com.secondworld.sdk; import android.content.Context; diff --git a/SdkProject/app/src/main/AndroidManifest.xml b/SdkProject/app/src/main/AndroidManifest.xml index d4fa29f..0946b58 100644 --- a/SdkProject/app/src/main/AndroidManifest.xml +++ b/SdkProject/app/src/main/AndroidManifest.xml @@ -1,6 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.secondworld.universalsdk"> + package="com.secondworld.demo"> + + <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" @@ -8,15 +10,14 @@ android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" - android:name=".BaseApplication" android:theme="@style/Theme.SdkProject"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> + </application> </manifest> \ No newline at end of file diff --git a/SdkProject/app/src/main/java/com/secondworld/demo/MainActivity.java b/SdkProject/app/src/main/java/com/secondworld/demo/MainActivity.java new file mode 100644 index 0000000..4f235b1 --- /dev/null +++ b/SdkProject/app/src/main/java/com/secondworld/demo/MainActivity.java @@ -0,0 +1,35 @@ +package com.secondworld.demo; + +import android.app.Activity; +import android.os.Bundle; + +import com.secondworld.sdk.UnityMsgHandler; +import com.secondworld.sdk.utils.CodeU2A; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.UUID; + +public class MainActivity extends Activity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + findViewById(R.id.btnInit).setOnClickListener((v -> + { + JSONObject json = new JSONObject(); + try { + json.put("code", CodeU2A.CopyContent); + json.put("content", "杩欐槸澶嶅埗鍐呭鍝︼細" + UUID.randomUUID().toString()); + } catch (JSONException e) { + e.printStackTrace(); + } + UnityMsgHandler.onUnityMessage(json.toString()); + })); + + } + +} \ No newline at end of file diff --git a/SdkProject/app/src/main/java/com/secondworld/universalsdk/MainActivity.java b/SdkProject/app/src/main/java/com/secondworld/universalsdk/MainActivity.java deleted file mode 100644 index 80cbb87..0000000 --- a/SdkProject/app/src/main/java/com/secondworld/universalsdk/MainActivity.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.secondworld.universalsdk; - -import androidx.appcompat.app.AppCompatActivity; - -import android.os.Bundle; - -import org.json.JSONException; -import org.json.JSONObject; - -public class MainActivity extends AppCompatActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - JSONObject json = new JSONObject(); - try { - json.put("code", 9); - } catch (JSONException e) { - e.printStackTrace(); - } - H2EngineSDK.HandleUnityMessage(json.toString()); - } -} \ No newline at end of file diff --git a/SdkProject/app/src/main/res/layout/activity_main.xml b/SdkProject/app/src/main/res/layout/activity_main.xml index 0b15a20..4c76793 100644 --- a/SdkProject/app/src/main/res/layout/activity_main.xml +++ b/SdkProject/app/src/main/res/layout/activity_main.xml @@ -1,9 +1,19 @@ <?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".MainActivity"> + android:gravity="center"> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file + <Button + android:id="@+id/btnInit" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="24dp" + android:text="init" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/editTextNumber" /> + +</LinearLayout> \ No newline at end of file diff --git a/SdkProject/app/src/test/java/com/secondworld/universalsdk/ExampleUnitTest.java b/SdkProject/app/src/test/java/com/secondworld/sdk/ExampleUnitTest.java similarity index 90% rename from SdkProject/app/src/test/java/com/secondworld/universalsdk/ExampleUnitTest.java rename to SdkProject/app/src/test/java/com/secondworld/sdk/ExampleUnitTest.java index 604ec98..8f67092 100644 --- a/SdkProject/app/src/test/java/com/secondworld/universalsdk/ExampleUnitTest.java +++ b/SdkProject/app/src/test/java/com/secondworld/sdk/ExampleUnitTest.java @@ -1,4 +1,4 @@ -package com.secondworld.universalsdk; +package com.secondworld.sdk; import org.junit.Test; diff --git a/SdkProject/channel/test/java/com/secondworld/sdk/MyApplication.java b/SdkProject/channel/test/java/com/secondworld/sdk/MyApplication.java new file mode 100644 index 0000000..2fcc132 --- /dev/null +++ b/SdkProject/channel/test/java/com/secondworld/sdk/MyApplication.java @@ -0,0 +1,4 @@ +package com.secondworld.sdk; + +public class MyApplication extends GameApp { +} diff --git a/SdkProject/channel/test/java/com/secondworld/universalsdk/MyApplication.java b/SdkProject/channel/test/java/com/secondworld/universalsdk/MyApplication.java deleted file mode 100644 index 0821d14..0000000 --- a/SdkProject/channel/test/java/com/secondworld/universalsdk/MyApplication.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.secondworld.universalsdk; - -public class MyApplication extends BaseApplication { -} diff --git a/SdkProject/library/build.gradle b/SdkProject/library/build.gradle index 3c23e87..3d152fe 100644 --- a/SdkProject/library/build.gradle +++ b/SdkProject/library/build.gradle @@ -112,32 +112,51 @@ } } -//鎷疯礉娓呭崟鏂囦欢浣滀负unity鐩存帴浣跨敤 +//鎷疯礉娓呭崟鏂囦欢 +task copyDebugManifest(type: Copy) { + from zipTree("build/outputs/aar/library-debug-${CHANNEL_NAME}.aar") + include "AndroidManifest.xml" + into "${outPutPath}\\${CHANNEL_NAME}\\debug" +} + task copyManifest(type: Copy) { - dependsOn 'assembleRelease' + dependsOn 'copyDebugManifest' from zipTree("build/outputs/aar/library-release-${CHANNEL_NAME}.aar") include "AndroidManifest.xml" - into "${outPutPath}\\${CHANNEL_NAME}\\" + into "${outPutPath}\\${CHANNEL_NAME}\\release" +} + +task copyDebugSdk(type: Copy) { + from "build/outputs/aar/" + include "library-debug-${CHANNEL_NAME}.aar" + into "${outPutPath}\\${CHANNEL_NAME}\\debug\\libs\\" } //鎵ц鎵撳寘浠诲姟浠ュ強鎷疯礉鍒板閮� task assembleAndCopySdk(type: Copy) { - dependsOn copyManifest + delete "${outPutPath}\\${CHANNEL_NAME}" + + dependsOn 'assembleMerger' +// dependsOn copyManifest + dependsOn copyDebugSdk + from "build/outputs/aar/" include "library-release-${CHANNEL_NAME}.aar" - into "${outPutPath}\\${CHANNEL_NAME}\\libs\\" + into "${outPutPath}\\${CHANNEL_NAME}\\release\\libs\\" } dependencies { - implementation 'androidx.appcompat:appcompat:1.2.0' - implementation 'com.google.android.material:material:1.2.1' - implementation 'androidx.constraintlayout:constraintlayout:2.0.3' - implementation 'androidx.navigation:navigation-fragment:2.3.1' - implementation 'androidx.navigation:navigation-ui:2.3.1' testImplementation 'junit:junit:4.13.1' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'com.google.android.material:material:1.2.1' + implementation 'androidx.constraintlayout:constraintlayout:2.0.4' + implementation 'androidx.navigation:navigation-fragment:2.3.1' + implementation 'androidx.navigation:navigation-ui:2.3.1' implementation 'com.github.pqpo:Log4a:1.4.2@aar' - implementation files('libs/unity-classes.jar') + + implementation fileTree(dir: 'libs', include: ['*.jar'], exclude: ['unity-classes.jar']) + compileOnly files('libs/unity-classes.jar') } \ No newline at end of file diff --git a/SdkProject/library/libs/unity-classes.jar b/SdkProject/library/libs/unity-classes.jar index 3c32bf7..502ff04 100644 --- a/SdkProject/library/libs/unity-classes.jar +++ b/SdkProject/library/libs/unity-classes.jar Binary files differ diff --git a/SdkProject/library/src/androidTest/java/com/secondworld/universalsdk/ExampleInstrumentedTest.java b/SdkProject/library/src/androidTest/java/com/secondworld/sdk/ExampleInstrumentedTest.java similarity index 94% rename from SdkProject/library/src/androidTest/java/com/secondworld/universalsdk/ExampleInstrumentedTest.java rename to SdkProject/library/src/androidTest/java/com/secondworld/sdk/ExampleInstrumentedTest.java index 3f00010..16fb2ad 100644 --- a/SdkProject/library/src/androidTest/java/com/secondworld/universalsdk/ExampleInstrumentedTest.java +++ b/SdkProject/library/src/androidTest/java/com/secondworld/sdk/ExampleInstrumentedTest.java @@ -1,4 +1,4 @@ -package com.secondworld.universalsdk; +package com.secondworld.sdk; import android.content.Context; diff --git a/SdkProject/library/src/main/AndroidManifest.xml b/SdkProject/library/src/main/AndroidManifest.xml index d5df5a9..857b950 100644 --- a/SdkProject/library/src/main/AndroidManifest.xml +++ b/SdkProject/library/src/main/AndroidManifest.xml @@ -1,7 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.secondworld.universalsdk"> + package="com.secondworld.sdk"> - <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.INTERNET" /> + <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> + + <application + android:name="com.secondworld.sdk.GameApp" + android:allowBackup="true" + android:supportsRtl="true"> + + <activity android:name="com.secondworld.sdk.GameActivity"/> + + </application> </manifest> \ No newline at end of file diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/AsyncTaskOperator.java b/SdkProject/library/src/main/java/com/secondworld/sdk/AsyncTaskOperator.java new file mode 100644 index 0000000..115b8cd --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/AsyncTaskOperator.java @@ -0,0 +1,24 @@ +package com.secondworld.sdk; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +//鑰楁椂浠诲姟鎿嶄綔 +public class AsyncTaskOperator { + + public static AsyncTaskOperator I = new AsyncTaskOperator(); + + private ExecutorService cachedThreadPool; + + private ExecutorService getCachedThreadPool() { + if (cachedThreadPool == null) { + cachedThreadPool = Executors.newCachedThreadPool(); + } + return cachedThreadPool; + } + + public void run(Runnable runnable) { + getCachedThreadPool().execute(runnable); + } + +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/GameActivity.java b/SdkProject/library/src/main/java/com/secondworld/sdk/GameActivity.java new file mode 100644 index 0000000..669f692 --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/GameActivity.java @@ -0,0 +1,26 @@ +package com.secondworld.sdk; + +import android.os.Bundle; +import android.view.View; +import android.widget.FrameLayout; + +public class GameActivity extends UnityPlayerActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); +// setContentView(R.layout.activity_main); + checkPermission(); +// addUnityView(); + } + + private void checkPermission() { + } + + protected void addUnityView() { + FrameLayout _frameLayout = findViewById(R.id.unity_view); + View unityView = mUnityPlayer.getView(); + _frameLayout.addView(unityView); + } + +} \ No newline at end of file diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/GameApp.java b/SdkProject/library/src/main/java/com/secondworld/sdk/GameApp.java new file mode 100644 index 0000000..c48b662 --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/GameApp.java @@ -0,0 +1,54 @@ +package com.secondworld.sdk; + +import android.app.AlarmManager; +import android.app.Application; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.os.Handler; + +import com.secondworld.sdk.utils.LogUtil; +import com.unity3d.player.UnityPlayer; + +public class GameApp extends Application { + + public static GameApp I; + + @Override + public void onCreate() { + super.onCreate(); + I = this; + InitSdk(); + } + + public void InitSdk() { + LogUtil.Init(this); + UnityMsgHandler.initCommandMap(); + } + + public static void AppExit() { + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + android.os.Process.killProcess(android.os.Process.myPid());// 鏉�杩涚▼ + } + }, 1000); + if (UnityPlayer.currentActivity != null) + UnityPlayer.currentActivity.finish(); + } + + public static void RestartApp() { + new Handler().postDelayed(() -> { + String _pn = I.getPackageName(); + PackageManager packageManager = I.getPackageManager(); + Intent intent = packageManager.getLaunchIntentForPackage(_pn); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + I.startActivity(intent); + android.os.Process.killProcess(android.os.Process.myPid());// 鏉�杩涚▼ + }, 1000); + if (UnityPlayer.currentActivity != null) + UnityPlayer.currentActivity.finish(); + } + +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/UnityMsgHandler.java b/SdkProject/library/src/main/java/com/secondworld/sdk/UnityMsgHandler.java new file mode 100644 index 0000000..50c53db --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/UnityMsgHandler.java @@ -0,0 +1,98 @@ +package com.secondworld.sdk; + +import com.secondworld.sdk.command.CmdInit; +import com.secondworld.sdk.command.ICommand; +import com.secondworld.sdk.utils.LogUtil; +import com.secondworld.sdk.utils.StaticDefine; +import com.unity3d.player.UnityPlayer; + +import org.json.JSONObject; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import dalvik.system.DexFile; + + +public class UnityMsgHandler { + + private static final HashMap<Integer, ICommand> allCommand = new HashMap<>(); + + /** + * 鍒濆鍖栨墍鏈夊懡浠� + */ + public static void initCommandMap() { + try { + allCommand.clear(); + new CmdInit(); + List<String> classesName = getClassName("com.secondworld.sdk.command"); + for (String name : classesName) { + Class<?> aClass = Class.forName(name); + LogUtil.debug("initCommandMap", name); + if (!aClass.isInterface() && ICommand.class.isAssignableFrom(aClass))//姝ゅ蹇呴』鍒ゆ柇鏄惁涓篒Command瀛愮被锛屽洜涓哄尶鍚嶇被涔熶細鐢熸垚鑷虫鍖� + addCommand((ICommand) aClass.newInstance()); + } + } catch (Exception e) { + e.printStackTrace(); + LogUtil.e("initCommandMap", e); + } + } + + public static void addCommand(ICommand command) { + allCommand.put(command.getCode(), command); + } + + /** + * 澶勭悊unity 鍙戞潵鐨勬秷鎭� + * + * @param json + */ + public static void onUnityMessage(String json) { + try { + LogUtil.debug("onUnityMessage", json); + JSONObject _json = new JSONObject(json); + int code = _json.getInt("code"); + ICommand command = allCommand.get(code); + if (command == null) + LogUtil.w("onUnityMessage", "鏈煡鍛戒护" + code); + else + command.process(_json); + } catch (Exception e) { + LogUtil.e("onUnityMessage", e); + } + } + + /** + * 閫氳繃鍙嶅皠璇诲彇鎸囧畾鍖呭悕涓嬬殑鎵�鏈夌被鍚� + * + * @param + * @return + */ + public static List<String> getClassName(String packageName) throws IOException { + List<String> classNameList = new ArrayList<String>(); + DexFile df = new DexFile(GameApp.I.getPackageCodePath());//閫氳繃DexFile鏌ユ壘褰撳墠鐨凙PK涓彲鎵ц鏂囦欢 + Enumeration<String> enumeration = df.entries();//鑾峰彇df涓殑鍏冪礌 杩欓噷鍖呭惈浜嗘墍鏈夊彲鎵ц鐨勭被鍚� 璇ョ被鍚嶅寘鍚簡鍖呭悕+绫诲悕鐨勬柟寮� + while (enumeration.hasMoreElements()) {//閬嶅巻 + String className = (String) enumeration.nextElement(); + if (className.contains(packageName)) {//鍦ㄥ綋鍓嶆墍鏈夊彲鎵ц鐨勭被閲岄潰鏌ユ壘鍖呭惈鏈夎鍖呭悕鐨勬墍鏈夌被 + classNameList.add(className); + } + } + return classNameList; + } + + public static void sendMessageToUnity(Map<String, Object> jsonMap) { + if (jsonMap == null || jsonMap.isEmpty()) { + return; + } + JSONObject _jsonObject = new JSONObject(jsonMap); + UnityPlayer.UnitySendMessage(StaticDefine.UnityGameObjectName, + StaticDefine.UnityHandleFuncName, + _jsonObject.toString()); + } + +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/UnityPlayerActivity.java b/SdkProject/library/src/main/java/com/secondworld/sdk/UnityPlayerActivity.java new file mode 100644 index 0000000..e438f13 --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/UnityPlayerActivity.java @@ -0,0 +1,132 @@ +// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN +package com.secondworld.sdk; + +import android.app.Activity; +import android.content.Intent; +import android.content.res.Configuration; +import android.os.Bundle; +import android.os.Process; +import android.view.KeyEvent; +import android.view.MotionEvent; +import android.view.Window; + +import com.unity3d.player.IUnityPlayerLifecycleEvents; +import com.unity3d.player.UnityPlayer; + +public class UnityPlayerActivity extends Activity implements IUnityPlayerLifecycleEvents +{ + protected UnityPlayer mUnityPlayer; // don't change the name of this variable; referenced from native code + + // Override this in your custom UnityPlayerActivity to tweak the command line arguments passed to the Unity Android Player + // The command line arguments are passed as a string, separated by spaces + // UnityPlayerActivity calls this from 'onCreate' + // Supported: -force-gles20, -force-gles30, -force-gles31, -force-gles31aep, -force-gles32, -force-gles, -force-vulkan + // See https://docs.unity3d.com/Manual/CommandLineArguments.html + // @param cmdLine the current command line arguments, may be null + // @return the modified command line string or null + protected String updateUnityCommandLineArguments(String cmdLine) + { + return cmdLine; + } + + // Setup activity layout + @Override protected void onCreate(Bundle savedInstanceState) + { + requestWindowFeature(Window.FEATURE_NO_TITLE); + super.onCreate(savedInstanceState); + + String cmdLine = updateUnityCommandLineArguments(getIntent().getStringExtra("unity")); + getIntent().putExtra("unity", cmdLine); + + mUnityPlayer = new UnityPlayer(this, this); + setContentView(mUnityPlayer); + mUnityPlayer.requestFocus(); + } + + // When Unity player unloaded move task to background + @Override public void onUnityPlayerUnloaded() { + moveTaskToBack(true); + } + + // When Unity player quited kill process + @Override public void onUnityPlayerQuitted() { + Process.killProcess(Process.myPid()); + } + + @Override protected void onNewIntent(Intent intent) + { + // To support deep linking, we need to make sure that the client can get access to + // the last sent intent. The clients access this through a JNI api that allows them + // to get the intent set on launch. To update that after launch we have to manually + // replace the intent with the one caught here. + setIntent(intent); + mUnityPlayer.newIntent(intent); + } + + // Quit Unity + @Override protected void onDestroy () + { + mUnityPlayer.destroy(); + super.onDestroy(); + } + + // Pause Unity + @Override protected void onPause() + { + super.onPause(); + mUnityPlayer.pause(); + } + + // Resume Unity + @Override protected void onResume() + { + super.onResume(); + mUnityPlayer.resume(); + } + + // Low Memory Unity + @Override public void onLowMemory() + { + super.onLowMemory(); + mUnityPlayer.lowMemory(); + } + + // Trim Memory Unity + @Override public void onTrimMemory(int level) + { + super.onTrimMemory(level); + if (level == TRIM_MEMORY_RUNNING_CRITICAL) + { + mUnityPlayer.lowMemory(); + } + } + + // This ensures the layout will be correct. + @Override public void onConfigurationChanged(Configuration newConfig) + { + super.onConfigurationChanged(newConfig); + mUnityPlayer.configurationChanged(newConfig); + } + + // Notify Unity of the focus change. + @Override public void onWindowFocusChanged(boolean hasFocus) + { + super.onWindowFocusChanged(hasFocus); + mUnityPlayer.windowFocusChanged(hasFocus); + } + + // For some reason the multiple keyevent type is not supported by the ndk. + // Force event injection by overriding dispatchKeyEvent(). + @Override public boolean dispatchKeyEvent(KeyEvent event) + { + if (event.getAction() == KeyEvent.ACTION_MULTIPLE) + return mUnityPlayer.injectEvent(event); + return super.dispatchKeyEvent(event); + } + + // Pass any events not handled by (unfocused) views straight to UnityPlayer + @Override public boolean onKeyUp(int keyCode, KeyEvent event) { return mUnityPlayer.injectEvent(event); } + @Override public boolean onKeyDown(int keyCode, KeyEvent event) { return mUnityPlayer.injectEvent(event); } + @Override public boolean onTouchEvent(MotionEvent event) { return mUnityPlayer.injectEvent(event); } + /*API12*/ public boolean onGenericMotionEvent(MotionEvent event) { return mUnityPlayer.injectEvent(event); } +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdBatteryListenStart.java b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdBatteryListenStart.java new file mode 100644 index 0000000..203f865 --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdBatteryListenStart.java @@ -0,0 +1,18 @@ +package com.secondworld.sdk.command; + +import com.secondworld.sdk.utils.BatteryUtil; +import com.secondworld.sdk.utils.CodeU2A; + +import org.json.JSONObject; + +public class CmdBatteryListenStart implements ICommand { + @Override + public int getCode() { + return CodeU2A.BatteryListenStart; + } + + @Override + public void process(JSONObject json) { + BatteryUtil.getInstance().start(); + } +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdBatteryListenStop.java b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdBatteryListenStop.java new file mode 100644 index 0000000..38c88b9 --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdBatteryListenStop.java @@ -0,0 +1,18 @@ +package com.secondworld.sdk.command; + +import com.secondworld.sdk.utils.BatteryUtil; +import com.secondworld.sdk.utils.CodeU2A; + +import org.json.JSONObject; + +public class CmdBatteryListenStop implements ICommand { + @Override + public int getCode() { + return CodeU2A.BatteryListenStop; + } + + @Override + public void process(JSONObject json) { + BatteryUtil.getInstance().stop(); + } +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdCopyAsset.java b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdCopyAsset.java new file mode 100644 index 0000000..cb065ee --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdCopyAsset.java @@ -0,0 +1,19 @@ +package com.secondworld.sdk.command; + +import com.secondworld.sdk.AsyncTaskOperator; +import com.secondworld.sdk.utils.CodeU2A; +import com.secondworld.sdk.utils.FileUtil; + +import org.json.JSONObject; + +public class CmdCopyAsset implements ICommand { + @Override + public int getCode() { + return CodeU2A.CopyAsset; + } + + @Override + public void process(JSONObject json) { + AsyncTaskOperator.I.run(FileUtil::copyAssets); + } +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdCopyContent.java b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdCopyContent.java new file mode 100644 index 0000000..9e34fdd --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdCopyContent.java @@ -0,0 +1,35 @@ +package com.secondworld.sdk.command; + +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.Context; + +import com.secondworld.sdk.AsyncTaskOperator; +import com.secondworld.sdk.GameApp; +import com.secondworld.sdk.utils.CodeU2A; +import com.secondworld.sdk.utils.LogUtil; + +import org.json.JSONException; +import org.json.JSONObject; + +public class CmdCopyContent implements ICommand { + + @Override + public int getCode() { + return CodeU2A.CopyContent; + } + + @Override + public void process(JSONObject json) { + try { + String content = json.getString("content"); + ClipboardManager mgr = (ClipboardManager) GameApp.I.getSystemService( + Context.CLIPBOARD_SERVICE); + ClipData data = ClipData.newPlainText("playerId", content); + mgr.setPrimaryClip(data); + } catch (Exception e) { + LogUtil.e("CmdCopyContent", e); + } + } + +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdCopyOneAsset.java b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdCopyOneAsset.java new file mode 100644 index 0000000..38262c5 --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdCopyOneAsset.java @@ -0,0 +1,21 @@ +package com.secondworld.sdk.command; + +import com.secondworld.sdk.AsyncTaskOperator; +import com.secondworld.sdk.utils.CodeU2A; +import com.secondworld.sdk.utils.FileUtil; + +import org.json.JSONObject; + +public class CmdCopyOneAsset implements ICommand { + @Override + public int getCode() { + return CodeU2A.CopyOneAsset; + } + + @Override + public void process(JSONObject json) { + AsyncTaskOperator.I.run(() -> { + FileUtil.copyOneAsset(json.toString()); + }); + } +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdInit.java b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdInit.java new file mode 100644 index 0000000..611d047 --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdInit.java @@ -0,0 +1,61 @@ +package com.secondworld.sdk.command; + +import android.app.AlertDialog; + +import com.secondworld.sdk.GameApp; +import com.secondworld.sdk.UnityMsgHandler; +import com.secondworld.sdk.utils.CodeA2U; +import com.secondworld.sdk.utils.CodeU2A; +import com.secondworld.sdk.utils.DeviceUtil; +import com.secondworld.sdk.utils.LogUtil; +import com.unity3d.player.UnityPlayer; + +import org.json.JSONObject; + +import java.util.HashMap; +import java.util.Map; + + +/** + * 娓告垙鍒濆鍖� + */ +public class CmdInit implements ICommand { + + @Override + public int getCode() { + return CodeU2A.Init; + } + + @Override + public void process(JSONObject json) { + long size = DeviceUtil.getTotalRAMSize() / 1024 / 1024; + LogUtil.debug("CmdInit", "鍐呭瓨锛�" + size + " mb"); + if (size < 1024) { + LogUtil.w("CmdInit", "妫�娴嬭澶囧唴瀛樹笉婊¤冻杩愯绋嬪簭鏍囧噯锛屽唴瀛橈細" + size + " mb"); + AlertDialog.Builder _builder = new AlertDialog.Builder(UnityPlayer.currentActivity); + _builder.setTitle("璀﹀憡"); + _builder.setCancelable(false); + _builder.setMessage("鎮ㄧ殑璁惧杩愯鍐呭瓨涓嶆弧瓒宠姹�,鏃犳硶姝e父杩愯娓告垙"); + _builder.setPositiveButton("纭畾", (dialogInterface, i) -> { + GameApp.AppExit(); + }); + _builder.show(); + return; + } + //鍙戦�佽澶囦俊鎭� + Map<String, Object> _msgStruct = new HashMap<>(); + _msgStruct.put("code", CodeA2U.DeviceInfo); + _msgStruct.put("userAgent", System.getProperty("http.agent")); + _msgStruct.put("mac", DeviceUtil.getLocalMac()); + _msgStruct.put("imei", ""); + _msgStruct.put("android_id", DeviceUtil.getAndroidId()); + _msgStruct.put("unique_id", DeviceUtil.getUniqueID()); + _msgStruct.put("memoryTotal", size); + UnityMsgHandler.sendMessageToUnity(_msgStruct); + //閫氱煡sdk鍒濆鍖栧畬鎴� + _msgStruct.clear(); + _msgStruct.put("code", CodeA2U.SdkInitComplete); + UnityMsgHandler.sendMessageToUnity(_msgStruct); + LogUtil.debug("CmdInit", "Sdk鍒濆鍖栧畬鎴�"); + } +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdInstallAPK.java b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdInstallAPK.java new file mode 100644 index 0000000..05cf764 --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdInstallAPK.java @@ -0,0 +1,40 @@ +package com.secondworld.sdk.command; + +import android.content.Intent; +import android.net.Uri; +import android.widget.Toast; + +import com.secondworld.sdk.GameApp; +import com.secondworld.sdk.utils.CodeU2A; +import com.secondworld.sdk.utils.LogUtil; + +import org.json.JSONObject; + +import java.io.File; + +public class CmdInstallAPK implements ICommand { + @Override + public int getCode() { + return CodeU2A.InstallAPK; + } + + @Override + public void process(JSONObject json) { + try { + String path = json.getString("path"); + File file = new File(path); + if (!file.exists()) { + LogUtil.w("InstallApp", "鏂囦欢涓嶅瓨鍦�"); + Toast.makeText(GameApp.I, "鎵句笉瀹夎鏂囦欢", Toast.LENGTH_SHORT).show(); + return; + } + Intent _intent = new Intent(Intent.ACTION_VIEW); + _intent.setDataAndType(Uri.fromFile(file), + "application/vnd.android.package-archive"); + _intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + GameApp.I.startActivity(_intent); + } catch (Exception e) { + LogUtil.e("CmdInstallAPK", e); + } + } +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdOpenWebView.java b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdOpenWebView.java new file mode 100644 index 0000000..78ca40d --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdOpenWebView.java @@ -0,0 +1,17 @@ +package com.secondworld.sdk.command; + +import com.secondworld.sdk.utils.CodeU2A; + +import org.json.JSONObject; + +public class CmdOpenWebView implements ICommand { + @Override + public int getCode() { + return CodeU2A.OpenWebView; + } + + @Override + public void process(JSONObject json) { + + } +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestManifestPermissions.java b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestManifestPermissions.java new file mode 100644 index 0000000..df9171f --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestManifestPermissions.java @@ -0,0 +1,17 @@ +package com.secondworld.sdk.command; + +import com.secondworld.sdk.utils.CodeU2A; + +import org.json.JSONObject; + +public class CmdRequestManifestPermissions implements ICommand { + @Override + public int getCode() { + return CodeU2A.RequestManifestPermissions; + } + + @Override + public void process(JSONObject json) { + + } +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermission.java b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermission.java new file mode 100644 index 0000000..97cc5a8 --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermission.java @@ -0,0 +1,18 @@ +package com.secondworld.sdk.command; + +import com.secondworld.sdk.utils.CodeU2A; + +import org.json.JSONObject; + +public class CmdRequestPermission implements ICommand { + + @Override + public int getCode() { + return CodeU2A.RequestPermission; + } + + @Override + public void process(JSONObject json) { + + } +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRestartApp.java b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRestartApp.java new file mode 100644 index 0000000..56001ee --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRestartApp.java @@ -0,0 +1,18 @@ +package com.secondworld.sdk.command; + +import com.secondworld.sdk.GameApp; +import com.secondworld.sdk.utils.CodeU2A; + +import org.json.JSONObject; + +public class CmdRestartApp implements ICommand { + @Override + public int getCode() { + return CodeU2A.RestartApp; + } + + @Override + public void process(JSONObject json) { + GameApp.RestartApp(); + } +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdUniqueID.java b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdUniqueID.java new file mode 100644 index 0000000..07fb7de --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdUniqueID.java @@ -0,0 +1,17 @@ +package com.secondworld.sdk.command; + +import com.secondworld.sdk.utils.CodeU2A; + +import org.json.JSONObject; + +public class CmdUniqueID implements ICommand{ + @Override + public int getCode() { + return CodeU2A.UniqueID; + } + + @Override + public void process(JSONObject json) { + + } +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/command/ICommand.java b/SdkProject/library/src/main/java/com/secondworld/sdk/command/ICommand.java new file mode 100644 index 0000000..b8cdacb --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/command/ICommand.java @@ -0,0 +1,14 @@ +package com.secondworld.sdk.command; + +import org.json.JSONObject; + +/** + * unity 浼犻�掕繃鏉ョ殑鍛戒护 + */ +public interface ICommand { + + int getCode(); + + void process(JSONObject json) throws Exception; + +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/utils/BatteryUtil.java b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/BatteryUtil.java new file mode 100644 index 0000000..fb23cc1 --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/BatteryUtil.java @@ -0,0 +1,108 @@ +package com.secondworld.sdk.utils; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.BatteryManager; + +import com.secondworld.sdk.GameApp; +import com.secondworld.sdk.UnityMsgHandler; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** + * Created by Administrator on 2018/7/15 0015. + */ + +public class BatteryUtil { + private static BatteryUtil s_Instance = null; + + public static BatteryUtil getInstance() { + if (s_Instance == null) { + s_Instance = new BatteryUtil(); + } + return s_Instance; + } + + private BatteryBroadCastReceiver m_BatteryBroadCastReceiver; + + private BatteryUtil() { + } + + public void start() { + m_BatteryBroadCastReceiver = new BatteryBroadCastReceiver(); + IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); + GameApp.I.registerReceiver(m_BatteryBroadCastReceiver, filter); + } + + public void stop() { + if (m_BatteryBroadCastReceiver != null) { + try { + GameApp.I.unregisterReceiver(m_BatteryBroadCastReceiver); + m_BatteryBroadCastReceiver = null; + } catch (IllegalArgumentException e) { + if (!Objects.requireNonNull(e.getMessage()).contains("Receiver not registered")) { + throw e; + } + } + } + } + + private static class BatteryBroadCastReceiver extends BroadcastReceiver { + private int m_BatteryLevel; + private int m_Status; + + public BatteryBroadCastReceiver() { + m_BatteryLevel = 0; + } + + @Override + public void onReceive(Context context, Intent intent) { + if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)) { + int _batteryLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); + + Map<String, Object> _msg = new HashMap<>(); + + if (_batteryLevel != m_BatteryLevel) { + try { + _msg.put("code", CodeA2U.BatteryLevel); + _msg.put("level", _batteryLevel); + + UnityMsgHandler.sendMessageToUnity(_msg); + + m_BatteryLevel = _batteryLevel; + + } catch (Exception e) { + e.printStackTrace(); + } + } + + int _status = intent.getIntExtra("status", 0); + + if (_status != m_Status) { + _msg.clear(); + + int _transCode = 0; + if (_status == BatteryManager.BATTERY_STATUS_CHARGING) { + _transCode = 2; + } else if (_status == BatteryManager.BATTERY_STATUS_NOT_CHARGING || + _status == BatteryManager.BATTERY_STATUS_DISCHARGING) { + _transCode = 1; + } else if (_status == BatteryManager.BATTERY_STATUS_FULL) { + _transCode = 3; + } + + _msg.put("code", CodeA2U.BatteryCharging); + _msg.put("status", _transCode); + + UnityMsgHandler.sendMessageToUnity(_msg); + + m_Status = _status; + } + } + } + } +} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/utils/CodeA2U.java b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeA2U.java similarity index 93% rename from SdkProject/library/src/main/java/com/secondworld/universalsdk/utils/CodeA2U.java rename to SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeA2U.java index 1cb0dc7..d7ca893 100644 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/utils/CodeA2U.java +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeA2U.java @@ -1,4 +1,4 @@ -package com.secondworld.universalsdk.utils; +package com.secondworld.sdk.utils; /** * Created by Administrator on 2018/7/18 0018. diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/utils/CodeU2A.java b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeU2A.java similarity index 82% rename from SdkProject/library/src/main/java/com/secondworld/universalsdk/utils/CodeU2A.java rename to SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeU2A.java index b71e561..fccab9b 100644 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/utils/CodeU2A.java +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeU2A.java @@ -1,4 +1,4 @@ -package com.secondworld.universalsdk.utils; +package com.secondworld.sdk.utils; /** * Created by Administrator on 2018/7/18 0018. @@ -8,7 +8,7 @@ /** * 鎵ц璧勬簮鎷疯礉 */ - int AssetCopy = 0; + int CopyAsset = 0; /** * 鎵ц寮�濮嬬數閲忔敼鍙�,鍏呯數鐘舵�佹敼鍙樼洃鍚� */ @@ -60,13 +60,13 @@ /** - * 姣忎釜娓犻亾鍚勮嚜鐨勫鐞� + * 姣忎釜娓犻亾鑷繁鐨勫鐞� */ - int FreePlatformInit = 100; - int FreePlatformLogin = 101; - int FreePlatformLogout = 102; - int FreePlatformSwitchAccount = 103; - int FreePlatformPay = 104; + int PlatformInit = 100; + int PlatformLogin = 101; + int PlatformLogout = 102; + int PlatformSwitchAccount = 103; + int PlatformPay = 104; int PayFinished = 105; int CreateRole = 106; int RoleLogin = 107; diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/utils/DeviceUtil.java b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/DeviceUtil.java new file mode 100644 index 0000000..b7263f5 --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/DeviceUtil.java @@ -0,0 +1,157 @@ +package com.secondworld.sdk.utils; + +import android.app.ActivityManager; +import android.content.Context; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.net.wifi.WifiInfo; +import android.net.wifi.WifiManager; +import android.os.Build; +import android.provider.Settings; + +import com.secondworld.sdk.GameApp; + +import java.net.NetworkInterface; +import java.util.Enumeration; +import java.util.Locale; +import java.util.UUID; + +public class DeviceUtil { + + public static final String FAKE_MAC = "02:00:00:00:00:00"; + + + public static long getVersionCode() { + long appVersionCode = 0; + try { + PackageInfo packageInfo = GameApp.I.getApplicationContext() + .getPackageManager() + .getPackageInfo(GameApp.I.getPackageName(), 0); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + appVersionCode = packageInfo.getLongVersionCode(); + } else { + appVersionCode = packageInfo.versionCode; + } + } catch (PackageManager.NameNotFoundException e) { + LogUtil.e("getAppVersionCode", e); + } + return appVersionCode; + } + + + public static String getVersionName() { + String appVersionName = ""; + try { + PackageInfo packageInfo = GameApp.I.getApplicationContext() + .getPackageManager() + .getPackageInfo(GameApp.I.getPackageName(), 0); + appVersionName = packageInfo.versionName; + } catch (PackageManager.NameNotFoundException e) { + LogUtil.e("getAppVersionName", e); + } + return appVersionName; + } + + /** + * 鑾峰彇褰撳墠璁惧鎬昏繍琛屽唴瀛� + * 鍗曚綅涓� byte + * + * @return + */ + public static long getTotalRAMSize() { + ActivityManager manager = (ActivityManager) GameApp.I.getSystemService(Context.ACTIVITY_SERVICE); + ActivityManager.MemoryInfo info = new ActivityManager.MemoryInfo(); + manager.getMemoryInfo(info); + return info.totalMem; + } + + public static String getAndroidId() { + String ANDROID_ID = Settings.System.getString(GameApp.I.getContentResolver(), Settings.System.ANDROID_ID); + if (ANDROID_ID == null || ANDROID_ID.equals("9774d56d682e549c")) + return ""; + return ANDROID_ID; + } + + /** + * 鍞竴鏍囪瘑 + * + * @return + */ + public static String getUniqueID() { + String uniqueID = SPUtils.get().getString(SPUtils.UNIQUE_ID, ""); + if (!uniqueID.trim().isEmpty()) + return uniqueID; + uniqueID = getAndroidId() + getLocalMac(); + //鑷繁鐢熸垚鐨剈id + if (uniqueID.trim().isEmpty()) + uniqueID = UUID.randomUUID().toString(); + + uniqueID = Util.md5(uniqueID).toUpperCase(); + + SPUtils.get() + .edit() + .putString(SPUtils.UNIQUE_ID, uniqueID.trim()) + .apply(); + + return uniqueID; + } + + /** + * mac 鍦板潃 + * + * @return + */ + public static String getLocalMac() { + String mac = SPUtils.get().getString(SPUtils.MAC, ""); + if (!mac.trim().isEmpty()) + return mac; + try { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + String interfaceName = "wlan0"; + Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces(); + NetworkInterface intf = null; + while (interfaces.hasMoreElements()) { + intf = interfaces.nextElement(); + if (!intf.getName().equalsIgnoreCase(interfaceName)) + continue; + byte[] addresses = intf.getHardwareAddress(); + if (mac != null) { + StringBuilder buf = new StringBuilder(); + for (byte aMac : addresses) { + buf.append(String.format("%02X:", aMac)); + } + if (buf.length() > 0) { + buf.deleteCharAt(buf.length() - 1); + } + mac = buf.toString(); + } + break; + } + } else { + WifiManager wifi = (WifiManager) GameApp.I.getSystemService(Context.WIFI_SERVICE); + if (wifi != null) { + WifiInfo wifiInfo = wifi.getConnectionInfo(); + if (wifiInfo != null) { + mac = wifiInfo.getMacAddress(); + } + } + } + } catch (Throwable e) { + e.printStackTrace(); + } + + mac = mac.toUpperCase(Locale.ENGLISH); + + if (mac.equals(FAKE_MAC)) + mac = ""; + + SPUtils.get() + .edit() + .putString(SPUtils.MAC, mac.trim()) + .apply(); + + return mac; + } + + +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/utils/FileUtil.java b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/FileUtil.java new file mode 100644 index 0000000..173dbf4 --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/FileUtil.java @@ -0,0 +1,136 @@ +package com.secondworld.sdk.utils; + +import android.content.res.AssetManager; + +import com.secondworld.sdk.GameApp; +import com.secondworld.sdk.UnityMsgHandler; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; + +/** + * Created by Administrator on 2018/6/14 0014. + */ + +public class FileUtil { + + /** + * Unity闅忓寘璧勬簮鎵归噺鎷疯礉 + */ + public static void copyAssets() { + + // 鑾峰彇褰撳墠鍖呯殑鐗堟湰鍙� + final long currentVer = DeviceUtil.getVersionCode(); + + // 宸茬粡鎷疯礉杩�, 鍒欏啀娆″垽鏂竴娆$増鏈彿 + // 濡傛灉鐗堟湰鍙蜂笉鐩稿悓, 鍒欓噸鏂拌繘琛屾嫹璐� + + // 鑾峰彇鏈湴瀛樺偍鐨勭増鏈彿 + long installVer = SPUtils.get().getLong(SPUtils.LAST_COPY_VERSION, 0); + + if (installVer == currentVer) { + LogUtil.i("copyAssets", "宸叉嫹璐濊繃锛宨nstallVer:" + installVer + "锛�" + "currentVer:" + currentVer); + Map<String, Object> _msg = new HashMap<>(); + _msg.put("code", CodeA2U.AssetCopyFinished); + UnityMsgHandler.sendMessageToUnity(_msg); + return; + } + + String _dest = GameApp.I.getExternalFilesDir("").getAbsolutePath(); + AssetManager _assetMgr = GameApp.I.getAssets(); + try { + String[] _fileNames = _assetMgr.list("android"); + if (_fileNames != null) { + for (String _fileName : _fileNames) { + copy("android" + File.separator + _fileName, + _dest + File.separator + _fileName); + } + } + LogUtil.i("copyAssets", "鍏ㄩ儴鎷疯礉瀹屾垚," + "currentVer:" + currentVer); + // 瀛樺偍姝ゆ鐨勬嫹璐濈増鏈� + SPUtils.get().edit().putLong(SPUtils.LAST_COPY_VERSION, currentVer).apply(); + Map<String, Object> _msg = new HashMap<>(); + _msg.put("code", CodeA2U.AssetCopyFinished); + UnityMsgHandler.sendMessageToUnity(_msg); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * unity鍗曚釜璧勬簮鎷疯礉 + * + * @param fileName + */ + public static void copyOneAsset(String fileName) { + String originalPath = "android" + File.separator + fileName; + String destPath = GameApp.I.getExternalFilesDir( + "").getAbsolutePath() + File.separator + fileName; + String _destDir = destPath.substring(0, destPath.lastIndexOf('/') + 1); + File _file = new File(_destDir); + if (!_file.exists()) { + boolean mkdir = _file.mkdir(); + } + try { + InputStream _is = GameApp.I.getAssets().open(originalPath); + FileOutputStream _fos = new FileOutputStream(new File(destPath)); + byte[] _buffer = new byte[1024]; + int _byteCount; + while ((_byteCount = _is.read(_buffer)) != -1) { + _fos.write(_buffer, 0, _byteCount); + } + _fos.flush(); + _is.close(); + _fos.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static void copy(String original, String dest) { + try { + String[] fileNames = GameApp.I.getAssets().list(original); + if (fileNames.length > 0) { + File dir = new File(dest); + String mkdir = dir.mkdir() ? "鎴愬姛" : "澶辫触"; + LogUtil.i("copyAssets", "[" + original + "] 鏄竴涓枃浠跺す, 鍒涘缓鏂囦欢澶�: [" + dest + "] " + mkdir); + for (String _fileName : fileNames) { + copy(original + File.separator + _fileName, + dest + File.separator + _fileName); + } + } else { + InputStream _is = GameApp.I.getAssets().open(original); + FileOutputStream _fos = new FileOutputStream(new File(dest)); + byte[] _buffer = new byte[1024]; + int _byteCount; + while ((_byteCount = _is.read(_buffer)) != -1) { + _fos.write(_buffer, 0, _byteCount); + } + _fos.flush(); + _is.close(); + _fos.close(); + LogUtil.i("copyAssets", "鏂囦欢: " + original + " 宸叉嫹璐濊嚦: " + dest); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static String getFileNameWithoutExtension(String fileName) { + return fileName.substring(0, fileName.lastIndexOf(".")); + } + + /** + * 鑾峰彇鏂囦欢鍚庣紑鍚� + */ + public static String getSuffixName(File file) { + String fileName = file.getName(); + int index = fileName.lastIndexOf("."); + if (index == -1) + return ""; + return fileName.substring(index + 1); + } +} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/utils/LogUtil.java b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/LogUtil.java similarity index 96% rename from SdkProject/library/src/main/java/com/secondworld/universalsdk/utils/LogUtil.java rename to SdkProject/library/src/main/java/com/secondworld/sdk/utils/LogUtil.java index c184a80..295b61d 100644 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/utils/LogUtil.java +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/LogUtil.java @@ -1,9 +1,9 @@ -package com.secondworld.universalsdk.utils; +package com.secondworld.sdk.utils; import android.content.Context; import android.util.Log; -import com.secondworld.universalsdk.BuildConfig; +import com.secondworld.sdk.BuildConfig; import java.io.File; import java.text.SimpleDateFormat; diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/utils/SPUtils.java b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/SPUtils.java new file mode 100644 index 0000000..d0b02a6 --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/SPUtils.java @@ -0,0 +1,23 @@ +package com.secondworld.sdk.utils; + +import android.content.Context; +import android.content.SharedPreferences; + +import com.secondworld.sdk.GameApp; + +public class SPUtils { + + private static SharedPreferences data; + + public static SharedPreferences get() { + if (data == null) + data = GameApp.I.getSharedPreferences("data", Context.MODE_PRIVATE); + return data; + } + + public static final String UNIQUE_ID = "uniqueID"; + public static final String MAC = "mac"; + public static final String LAST_COPY_VERSION = "last_copy_version"; + public static final String ASSET_IS_COPIED = "asset_is_copied"; + +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/utils/StaticDefine.java b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/StaticDefine.java new file mode 100644 index 0000000..e8ff3c0 --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/StaticDefine.java @@ -0,0 +1,12 @@ +package com.secondworld.sdk.utils; + +/** + * Created by Administrator on 2018/6/14 0014. + */ + +public interface StaticDefine { + + String UnityGameObjectName = "SDKUtility"; + String UnityHandleFuncName = "HandleSdkMessage"; + +} diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/utils/Util.java b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/Util.java new file mode 100644 index 0000000..55f2a07 --- /dev/null +++ b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/Util.java @@ -0,0 +1,33 @@ +package com.secondworld.sdk.utils; + +import android.text.TextUtils; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public class Util { + + public static String md5(String string) { + if (TextUtils.isEmpty(string)) { + return ""; + } + MessageDigest md5 = null; + try { + md5 = MessageDigest.getInstance("MD5"); + byte[] bytes = md5.digest(string.getBytes()); + StringBuilder result = new StringBuilder(); + for (byte b : bytes) { + String temp = Integer.toHexString(b & 0xff); + if (temp.length() == 1) { + temp = "0" + temp; + } + result.append(temp); + } + return result.toString(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + return ""; + } + +} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/GameActivity.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/GameActivity.java deleted file mode 100644 index 7ef33ff..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/GameActivity.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.secondworld.universalsdk; - -import com.unity3d.player.UnityPlayerActivity; - -public class GameActivity extends UnityPlayerActivity { -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/GameApp.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/GameApp.java deleted file mode 100644 index c7085a9..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/GameApp.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.secondworld.universalsdk; - -import android.app.Application; -import android.os.Handler; - -import com.secondworld.universalsdk.utils.DeviceUtil; -import com.secondworld.universalsdk.utils.LogUtil; -import com.unity3d.player.UnityPlayer; - -public class GameApp extends Application { - - public static GameApp APP; - - @Override - public void onCreate() { - super.onCreate(); - APP = this; - InitSdk(); - } - - public void InitSdk() { - LogUtil.Init(this); - H2EngineSDK.initCommandMap(); - } - - public static void AppExit() { - if (UnityPlayer.currentActivity != null) - UnityPlayer.currentActivity.finish(); - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - android.os.Process.killProcess(android.os.Process.myPid());// 鏉�杩涚▼ - } - }, 1000); - } - -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/H2EngineSDK.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/H2EngineSDK.java deleted file mode 100644 index c53960b..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/H2EngineSDK.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.secondworld.universalsdk; - -import com.secondworld.universalsdk.command.ICommand; - -import org.json.JSONObject; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.List; - -import dalvik.system.DexFile; - - -public class H2EngineSDK { - - private static HashMap<Integer, ICommand> allCommand = new HashMap<Integer, ICommand>(); - - /** - * 鍒濆鍖栨墍鏈夊懡浠� - */ - public static void initCommandMap() { - allCommand.clear(); - List<String> classesName = getClassName("com.secondworld.universalsdk.command"); - try { - for (String name : classesName) { - Class<?> aClass = Class.forName(name); - if (!aClass.isInterface()) - addCommand((ICommand) aClass.newInstance()); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - public static void addCommand(ICommand command) { - allCommand.put(command.getCode(), command); - } - - /** - * unity 鍙戞潵鐨勬秷鎭� - * - * @param json - */ - public static void HandleUnityMessage(String json) { - try { - LogUtil.debug("HandleUnityMessage", json); - JSONObject _json = new JSONObject(json); - int code = _json.getInt("code"); - ICommand command = allCommand.get(code); - if (command == null) { - - return; - } - command.process(json); - } catch (Exception ignored) { - } - } - - /** - * 閫氳繃鍙嶅皠璇诲彇鎸囧畾鍖呭悕涓嬬殑鎵�鏈夌被鍚� - * - * @param packageName - * @return - */ - public static List<String> getClassName(String packageName) { - List<String> classNameList = new ArrayList<String>(); - try { - DexFile df = new DexFile(BaseApplication.APP.getPackageCodePath());//閫氳繃DexFile鏌ユ壘褰撳墠鐨凙PK涓彲鎵ц鏂囦欢 - Enumeration<String> enumeration = df.entries();//鑾峰彇df涓殑鍏冪礌 杩欓噷鍖呭惈浜嗘墍鏈夊彲鎵ц鐨勭被鍚� 璇ョ被鍚嶅寘鍚簡鍖呭悕+绫诲悕鐨勬柟寮� - while (enumeration.hasMoreElements()) {//閬嶅巻 - String className = (String) enumeration.nextElement(); - if (className.contains(packageName)) {//鍦ㄥ綋鍓嶆墍鏈夊彲鎵ц鐨勭被閲岄潰鏌ユ壘鍖呭惈鏈夎鍖呭悕鐨勬墍鏈夌被 - classNameList.add(className); - } - } - } catch (IOException e) { - e.printStackTrace(); - } - return classNameList; - } - -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/ThreadExecutor.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/ThreadExecutor.java deleted file mode 100644 index 4cf1c63..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/ThreadExecutor.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.secondworld.universalsdk; - -public class ThreadExecutor { - - public static ThreadExecutor I = new ThreadExecutor(); - - - -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/UnityOperator.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/UnityOperator.java deleted file mode 100644 index 6ac0734..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/UnityOperator.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.secondworld.universalsdk; - -import com.unity3d.player.UnityPlayer; - -import org.json.JSONObject; - -import java.util.Map; - -public class UnityOperator { - - -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdAssetCopy.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdAssetCopy.java deleted file mode 100644 index 4af539c..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdAssetCopy.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.secondworld.universalsdk.command; - -import com.secondworld.universalsdk.CodeU2A; - -public class CmdAssetCopy implements ICommand { - @Override - public int getCode() { - return CodeU2A.AssetCopy; - } - - @Override - public void process(String json) { - } -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdBatteryListenStart.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdBatteryListenStart.java deleted file mode 100644 index 38cbf16..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdBatteryListenStart.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.secondworld.universalsdk.command; - -import com.secondworld.universalsdk.CodeU2A; - -public class CmdBatteryListenStart implements ICommand { - @Override - public int getCode() { - return CodeU2A.BatteryListenStart; - } - - @Override - public void process(String json) { - - } -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdBatteryListenStop.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdBatteryListenStop.java deleted file mode 100644 index 563fc86..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdBatteryListenStop.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.secondworld.universalsdk.command; - -import com.secondworld.universalsdk.CodeU2A; - -public class CmdBatteryListenStop implements ICommand { - @Override - public int getCode() { - return CodeU2A.BatteryListenStop; - } - - @Override - public void process(String json) { - - } -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdCopyContent.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdCopyContent.java deleted file mode 100644 index b03089c..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdCopyContent.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.secondworld.universalsdk.command; - -import com.secondworld.universalsdk.CodeU2A; - -public class CmdCopyContent implements ICommand { - - @Override - public int getCode() { - return CodeU2A.CopyContent; - } - - @Override - public void process(String json) { - - } -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdCopyOneAsset.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdCopyOneAsset.java deleted file mode 100644 index 7c8e448..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdCopyOneAsset.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.secondworld.universalsdk.command; - -import com.secondworld.universalsdk.CodeU2A; - -public class CmdCopyOneAsset implements ICommand { - @Override - public int getCode() { - return CodeU2A.CopyOneAsset; - } - - @Override - public void process(String json) { - } -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdExteneralStorage.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdExteneralStorage.java deleted file mode 100644 index 43dd003..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdExteneralStorage.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.secondworld.universalsdk.command; - -import com.secondworld.universalsdk.CodeU2A; - -public class CmdExteneralStorage implements ICommand { - @Override - public int getCode() { - return CodeU2A.ExteneralStorage; - } - - @Override - public void process(String json) { - - } -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdInit.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdInit.java deleted file mode 100644 index 26c286d..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdInit.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.secondworld.universalsdk.command; - -import com.secondworld.universalsdk.CodeU2A; - -/** - * 娓告垙鍒濆鍖� - */ -public class CmdInit implements ICommand { - @Override - public int getCode() { - return CodeU2A.Init; - } - - @Override - public void process(String json) { - } -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdInstallAPK.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdInstallAPK.java deleted file mode 100644 index 3873fd7..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdInstallAPK.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.secondworld.universalsdk.command; - -import com.secondworld.universalsdk.CodeU2A; - -public class CmdInstallAPK implements ICommand { - @Override - public int getCode() { - return CodeU2A.InstallAPK; - } - - @Override - public void process(String json) { - - } -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdOpenWebView.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdOpenWebView.java deleted file mode 100644 index 05ef406..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdOpenWebView.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.secondworld.universalsdk.command; - -import com.secondworld.universalsdk.CodeU2A; - -public class CmdOpenWebView implements ICommand { - @Override - public int getCode() { - return CodeU2A.OpenWebView; - } - - @Override - public void process(String json) { - - } -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdRequestManifestPermissions.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdRequestManifestPermissions.java deleted file mode 100644 index b307c84..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdRequestManifestPermissions.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.secondworld.universalsdk.command; - -import com.secondworld.universalsdk.CodeU2A; - -public class CmdRequestManifestPermissions implements ICommand { - @Override - public int getCode() { - return CodeU2A.RequestManifestPermissions; - } - - @Override - public void process(String json) { - - } -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdRequestPermission.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdRequestPermission.java deleted file mode 100644 index 3a8f38b..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdRequestPermission.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.secondworld.universalsdk.command; - -import com.secondworld.universalsdk.CodeU2A; - -public class CmdRequestPermission implements ICommand { - - @Override - public int getCode() { - return CodeU2A.RequestPermission; - } - - @Override - public void process(String json) { - - } -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdRestartApp.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdRestartApp.java deleted file mode 100644 index 86521c7..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdRestartApp.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.secondworld.universalsdk.command; - -import com.secondworld.universalsdk.CodeU2A; - -public class CmdRestartApp implements ICommand { - @Override - public int getCode() { - return CodeU2A.RestartApp; - } - - @Override - public void process(String json) { - - } -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdUniqueID.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdUniqueID.java deleted file mode 100644 index b73a7e4..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/CmdUniqueID.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.secondworld.universalsdk.command; - -import com.secondworld.universalsdk.CodeU2A; - -public class CmdUniqueID implements ICommand{ - @Override - public int getCode() { - return CodeU2A.UniqueID; - } - - @Override - public void process(String json) { - - } -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/ICommand.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/ICommand.java deleted file mode 100644 index d481225..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/command/ICommand.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.secondworld.universalsdk.command; - -/** - * unity 浼犻�掕繃鏉ョ殑鍛戒护 - */ -public interface ICommand { - - int getCode(); - - void process(String json); - -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/utils/DeviceUtil.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/utils/DeviceUtil.java deleted file mode 100644 index 1d8b3a8..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/utils/DeviceUtil.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.secondworld.universalsdk.utils; - -import android.app.ActivityManager; -import android.content.Context; - -import com.secondworld.universalsdk.GameApp; - -public class DeviceUtil { - - - /** - * 鑾峰彇褰撳墠璁惧鎬昏繍琛屽唴瀛� - * 鍗曚綅涓� byte - * @return - */ - public static long GetTotalRAMSize() { - ActivityManager manager = (ActivityManager) GameApp.APP.getSystemService(Context.ACTIVITY_SERVICE); - ActivityManager.MemoryInfo info = new ActivityManager.MemoryInfo(); - manager.getMemoryInfo(info); - return info.totalMem; - } - -} diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/utils/StaticDefine.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/utils/StaticDefine.java deleted file mode 100644 index 7e17026..0000000 --- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/utils/StaticDefine.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.secondworld.universalsdk.utils; - -/** - * Created by Administrator on 2018/6/14 0014. - */ - -public interface StaticDefine { - - String UnityGameObjectName = "SDKUtility"; - String UnityHandleFuncName = "HandleSdkMessage"; - - String LS_KEY_VERSION = "H2Engine_App_Version"; - String LS_KEY_COPIED = "H2Engine_Copy_Finished"; - String LS_KEY_IMEI = "H2Engine_DEVICE_IMEI"; - String LS_KEY_MAC = "H2Engine_DEVICE_MAC"; - String LS_KEY_ANDROID_ID = "H2Engine_DEVICE_ANDROID_ID"; - String LS_KEY_TENCENT_LOGINPARAM = "H2Engine_TENCENT_LOGIN_PARAM"; - -} diff --git a/SdkProject/library/src/main/res/layout/activity_main.xml b/SdkProject/library/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..7b97e2b --- /dev/null +++ b/SdkProject/library/src/main/res/layout/activity_main.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/main_container" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <FrameLayout + android:id="@+id/unity_view" + android:layout_width="match_parent" + android:layout_height="match_parent" /> + +</RelativeLayout> \ No newline at end of file diff --git a/SdkProject/library/src/main/res/values/strings.xml b/SdkProject/library/src/main/res/values/strings.xml new file mode 100644 index 0000000..73862c4 --- /dev/null +++ b/SdkProject/library/src/main/res/values/strings.xml @@ -0,0 +1 @@ +<resources></resources> \ No newline at end of file diff --git a/SdkProject/library/src/test/java/com/secondworld/universalsdk/ExampleUnitTest.java b/SdkProject/library/src/test/java/com/secondworld/sdk/ExampleUnitTest.java similarity index 90% rename from SdkProject/library/src/test/java/com/secondworld/universalsdk/ExampleUnitTest.java rename to SdkProject/library/src/test/java/com/secondworld/sdk/ExampleUnitTest.java index 604ec98..8f67092 100644 --- a/SdkProject/library/src/test/java/com/secondworld/universalsdk/ExampleUnitTest.java +++ b/SdkProject/library/src/test/java/com/secondworld/sdk/ExampleUnitTest.java @@ -1,4 +1,4 @@ -package com.secondworld.universalsdk; +package com.secondworld.sdk; import org.junit.Test; -- Gitblit v1.8.0