diff --git a/Assets/Plugins/Android/AndroidManifest.xml b/Assets/Plugins/Android/AndroidManifest.xml index 810eec9a..e9b07d07 100644 --- a/Assets/Plugins/Android/AndroidManifest.xml +++ b/Assets/Plugins/Android/AndroidManifest.xml @@ -1,7 +1,7 @@ - + @@ -13,9 +13,26 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Plugins/Android/ImageSelector.jar b/Assets/Plugins/Android/ImageSelector.jar new file mode 100644 index 00000000..35b784d6 Binary files /dev/null and b/Assets/Plugins/Android/ImageSelector.jar differ diff --git a/Assets/Plugins/Android/ImageSelector.jar.meta b/Assets/Plugins/Android/ImageSelector.jar.meta new file mode 100644 index 00000000..98fe7b40 --- /dev/null +++ b/Assets/Plugins/Android/ImageSelector.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 6ea86a8936b718949b5501d873739db1 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/mainTemplate.gradle b/Assets/Plugins/Android/mainTemplate.gradle new file mode 100644 index 00000000..5145f7d3 --- /dev/null +++ b/Assets/Plugins/Android/mainTemplate.gradle @@ -0,0 +1,45 @@ +// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN + +apply plugin: 'com.android.library' +**APPLY_PLUGINS** + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'com.yuyh.imgsel:library:2.1.0' + implementation 'com.github.bumptech.glide:glide:3.7.0' + implementation 'com.facebook.fresco:fresco:0.6.0' + implementation(name: 'com.mapbox.android.unity-debug', ext:'aar') + implementation(name: 'libcore-release', ext:'aar') + implementation(name: 'libtelemetry-full-release', ext:'aar') + implementation(name: 'UnityCallWechatShare-release', ext:'aar') +} + +android { + compileSdkVersion **APIVERSION** + buildToolsVersion '**BUILDTOOLS**' + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + defaultConfig { + minSdkVersion **MINSDKVERSION** + targetSdkVersion **TARGETSDKVERSION** + ndk { + abiFilters **ABIFILTERS** + } + versionCode **VERSIONCODE** + versionName '**VERSIONNAME**' + consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD** + } + + lintOptions { + abortOnError false + } + + aaptOptions { + ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~" + }**PACKAGING_OPTIONS** +}**REPOSITORIES****SOURCE_BUILD_SETUP** +**EXTERNAL_SOURCES** diff --git a/Assets/Plugins/Android/mainTemplate.gradle.meta b/Assets/Plugins/Android/mainTemplate.gradle.meta new file mode 100644 index 00000000..a19a0b1f --- /dev/null +++ b/Assets/Plugins/Android/mainTemplate.gradle.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 27f3715cd06fd6c4f883fc6cf73e0632 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/App.cs b/Assets/Scripts/App.cs index 18387283..2a42545b 100644 --- a/Assets/Scripts/App.cs +++ b/Assets/Scripts/App.cs @@ -76,7 +76,7 @@ public static class App public static float? topRectStartX { get; internal set; } public static WeChatController weChatController = WeChatController.Instance; - + public static ImageSelectorController imageSelectorController = ImageSelectorController.Instance; public static Vector2 MobileResolution = new Vector2(844f, 390f);//移动端分辨率 public static Vector2 PcResolution = new Vector2(1600f, 900f);//PC端分辨率 public static int autoClearTimes = 30; diff --git a/Assets/Scripts/Mobile/ImageSelectorController.cs b/Assets/Scripts/Mobile/ImageSelectorController.cs index ad02cf66..805f07fb 100644 --- a/Assets/Scripts/Mobile/ImageSelectorController.cs +++ b/Assets/Scripts/Mobile/ImageSelectorController.cs @@ -1,22 +1,11 @@ using System.Runtime.InteropServices; using UnityEngine; - /// -/// Create By Jooki: https://www.yuque.com/jooki -/// 使用流程: -/// WeChatController是一个单例, 请自行给变量 _className 赋值 -/// 使用前先调用 Init() 进行初始化,然后调用 IsWeChatAppInstalled() 检查用户设备上是否安装了微信; -/// 之后为保险起见调用 IsWeChatAppInstalled() 判断微信是否已经安装; -/// 最后就是按照需要分享的消息类型调用对应的方法 +/// /// public class ImageSelectorController { - /// - /// com.unityplugins.wechatshare是在Android Studio中创建的 Module, - /// MainActivity 是一个Activity, 对外供C#调用的方法都写在这个Activity内 - /// - private readonly string _className = "com.unityplugins.imageSelector.MainActivity"; - private AndroidJavaClass mainActivityClass = null; + private AndroidJavaObject mainActivityObject = null; private static ImageSelectorController _instance; public static ImageSelectorController Instance @@ -33,15 +22,14 @@ public class ImageSelectorController private ImageSelectorController() { #if UNITY_ANDROID - mainActivityClass = new AndroidJavaClass(_className); - // 第一个参数: MainActivity中的方法名 - // 第二、三个参数: 分别是SendMessageToUnity需要接收的第一和第二个参数,对比上面Java的代码 + AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); + mainActivityObject = jc.GetStatic("currentActivity"); #elif UNITY_IOS //RegisterApp(_APP_ID); #endif } public void Select() { - mainActivityClass.CallStatic("Select"); + mainActivityObject.Call("Select"); } } \ No newline at end of file diff --git a/Assets/Scripts/UI/Prefab/FeedbackController.cs b/Assets/Scripts/UI/Prefab/FeedbackController.cs index 161ccfd1..79d41f6d 100644 --- a/Assets/Scripts/UI/Prefab/FeedbackController.cs +++ b/Assets/Scripts/UI/Prefab/FeedbackController.cs @@ -75,26 +75,32 @@ public class FeedbackController : PFUIPanel main.Find("Time").Find("Value").Find("Text").GetComponent().text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } + GameObject selectObject = null; void AddImage(BaseEventData e,int index) { #if UNITY_ANDROID || UNITY_IOS - //App.ImageSelectorController.Select(); -#else + selectObject = ((PointerEventData)e).pointerEnter; + App.imageSelectorController.Select(); +#else var self = ((PointerEventData)e).pointerEnter; Utils.OpenFile((path) => { - if (paths.ContainsValue(path)) - { - Utils.showToast(gameObject, "Picture already exists, please choose another picture");//图片已存在,请选择其他图片 - return; - } - self.GetComponent().sprite = Utils.PngToSprite(path, 110, 110); - self.transform.Find("close").gameObject.SetActive(true); - paths[self.name] = path; + HandlePath(self, path); }); #endif } + void HandlePath(GameObject self,string path) + { + if (paths.ContainsValue(path)) + { + Utils.showToast(gameObject, "Picture already exists, please choose another picture");//图片已存在,请选择其他图片 + return; + } + self.GetComponent().sprite = Utils.PngToSprite(path, 110, 110); + self.transform.Find("close").gameObject.SetActive(true); + paths[self.name] = path; + } void DelImage(BaseEventData e,Transform self,int index) { self.GetComponent().sprite = plus; @@ -134,6 +140,11 @@ public class FeedbackController : PFUIPanel public void OnMobileImageSelect(string res) { Debug.Log(res); - Utils.showToast(gameObject, res, type: 1); + if (res.IndexOf("true,") == 0 && selectObject!=null) + { + var path = res.Replace("true,", ""); + HandlePath(selectObject, path); + } + //Utils.showToast(gameObject, res, type: 1); } }