From 510cd11049c530167eb6511864ba972e305bcd59 Mon Sep 17 00:00:00 2001 From: CaiYanPeng Date: Tue, 7 Sep 2021 11:00:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=84=8F=E8=A7=81=E5=8F=8D=E9=A6=88=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Plugins/Android/AndroidManifest.xml | 19 +++++++- Assets/Plugins/Android/ImageSelector.jar | Bin 0 -> 3273 bytes Assets/Plugins/Android/ImageSelector.jar.meta | 32 +++++++++++++ Assets/Plugins/Android/mainTemplate.gradle | 45 ++++++++++++++++++ .../Plugins/Android/mainTemplate.gradle.meta | 7 +++ Assets/Scripts/App.cs | 2 +- .../Scripts/Mobile/ImageSelectorController.cs | 22 ++------- .../Scripts/UI/Prefab/FeedbackController.cs | 33 ++++++++----- 8 files changed, 130 insertions(+), 30 deletions(-) create mode 100644 Assets/Plugins/Android/ImageSelector.jar create mode 100644 Assets/Plugins/Android/ImageSelector.jar.meta create mode 100644 Assets/Plugins/Android/mainTemplate.gradle create mode 100644 Assets/Plugins/Android/mainTemplate.gradle.meta 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 0000000000000000000000000000000000000000..35b784d6fedf9230ee516e35ad6ae648a32a0bda GIT binary patch literal 3273 zcmbW3XEYpK9*0MZGD;Z2h!T>~OZ13HqVpOl(Uzg8`9g+8RaSN?22%-_q0da+j^lr#NmHCDA{^BKRkbPO+w5T ziSYDHOLfr&DKTT_LVJ5_aWvQv?6c?si%Z)XsfkW35Wx(pwodfeM=b?A1#?Hol2g-1 z7awzN<_gp6QCp?{NAtNU6hqJw|2U1Fjp%&v~O=r9%q5|l# z^vj&7Y!{#^e09RKk7S}VAC=~>*5}rX8Gh>HtBO@s<-J~W;8WW(_WCW^Xljp_WwL)b zqGB>{{!&60Id-r6-&Rk-@@#{3A^#As!Ltmgrqb{40vY|NW|Eeu!o z>Nv}?03MJ7HDlaDn(}m%*`$@}bxZDtn}BoTtZEiD;FX(uWSbfm?@l@M3QC_O6u5%l zNA5^-sbUueU3}@aupR9g65P8uA+@_l_dX-6M4;|C~ z6jI4qu2)T=$^hjKQrUJoWEzlla`l-RZFj65W!(?zmG=8esYwR4!GEu*q@jodeCQu# zYq)12Z}W;@C%)^X-FRP|i}!_BG;j;%i|Qh3O_ju%el1N%_p^Z95y`ad@GTs)4TBBq zZuoaKDji&D7My8ciqm2+b9ii}_oqasZbWgFpQkwo2mna^uZjLW&sj$1#vo(nGYmOj z{G#YQOSxP*NgQ0&oaF%><5Z1O#FdJv_poGJHbQ@AIyL0g)RfWs>7$YRC%_hRW6Qp% z+xt0Nr_`3GtPKIWOsW*d_i#T5LABy@Em=~*XFsN00gA**YbkvwhMA+gIu1nB&W3O> z=)#kx2je6LKU09kF`NDU{ntH(yeNqs&0~y&d(|A`5_=xxRoni!o-!ycADGXSPaYgL z@YJ@-4-8_&)9|_9CKV0~qcv}Pn9u9xE2{3M6beiLTPab)X=E28n~ zjFHf!6tdNtI>9VWkE1UkX1(UWIHM4D=JE+%5R$xTv1`g#Uc=P|#QGW@A? z<{5%I$E2GW;WpYsOsBS2D}gt2FJp31^Hb}7BMc8RtmH~KzxW1ebb_6X>VbT zPHDS^8_o`GZ-KfdylV=TIC|Nbax^RnS``s(%WsJ|va_`mv7eNmknqe{bUuYBIL6$^ zFnx;?Od1P!s^#6F9322s!7rM2-*#Mvbdp_L()UxY>yL9G+AAmXbC?+_kBteA?WK^Y zV9Pk0;~yCKLi(Om%NMSB!ZiC>pI5E6F}=nz(*=h;PJH-a6faqyj5cF`n%K5fNz`Ln z4;?EehK>k<2Ei>nhz^@BL6*a1qDA>ijF1}Ni)co~ho;(vc zd=%C*fK^IKUk-?^juI`NjOAjXbl2>v$4cHWvJor6ZG1#7(y^dFiGtDEUrd!rrhaG_ zrhzKS8=u2>=*3EXSy=@yf4jA0nRf%>peVX(LLc)oN?T~Q8=^lwB1LR%4sOLVZ0BJ6 z0^jc+HcbDtXe_t6U~CZBS<5YT96=Y{+dQ-_@7hqVz5ISujy2>D2Y|85WD-R ztO2)^hOOG6>!G7b>T^>f5D;&YakjDar5)9ZpY4jT-TYD3lvI6o7B*N=IO3yi^8$K}{G?f8XsWFqA=GAq$v-MrP_JpgpOm2!CeAge;-4T+V$4i# z!G$8VK z5*PZfL0^9sX1WNvz_ZM_k<#h49lpxZyA2#1^oUwRU?+u>(CHj#~Y;lhrhWn+#)07@$My z!i3G#O^H)l4!Yz4?W}IjSXWJ7E}dr);lPNaU>K2BXT@pe6*V$%D0N_8XXNf0s&lo> zR`<1Y=N*ZJE%oSw{mqLXHTc;pm?|D;)g_|Hd4I&nQbgUmrDae-GcU;TOs0R!Q0G|u z(~-(D)Nw+D9mVSfT!7mZ*Mt?CC+ZIHGL>3`PmOaQPzdJ=3!AW527z3JqSZ5not%rU zT{o;bV=B<4)+!X2quv^=pl&+70+w)>#h|WT$sC66Jh!2IZp}Yc1LWL)L1{@Y2b-7n z7i^NyyvKDFuad8*Jgf_Hqjz*+@et*h{g#_R${re4XdbF_&#|?{Sk{+ac?janV)2@# z^5_ml=B|fv^n5Oi7|2kM*Tx*{;o6dHQ4xF<}(LVC&49~MiHuZQf#xDKr}mDm#SP_;(BQhZ_H1EE5A#F z0>t&n+pG8^rnB7_>Xvyi4D$g_fi#QhwKL=|Pn=c=Qgg?HJ`RI{r^lCX#HAn2%8E;0>P@h?Ha;0%2+-pWJ8up1oL_2qhf6 z7gCwfvHIR4iiuZtPvJ4AQEVHwIw&AcAjehf+gwQ0%00g9TBm5V>`u2KcRLfnxIWaR zTSjMH9gFl@OB`ow+ZyksP`8xp96J(mQ#mHq#5mFv+GOCU+!L0R1sc26S*$vxVhEqNd zHhVTRPU+BQt`9;N9|IAAyYR0e zOpf|uHflF};JsolCKB!x#$dwFTPRH9X&lSY2b!b!XhKwPP~sHj>z+Gg;0yXyLixsw z?odN8in;ge5h0|n39iFy_1^d=B)8Hx$L%YU>o)<4Tk-I~O=f8oG+|pn{)^qo4bK2J zY$m?2dt5sqc0}V)=O=yb>i1Q2k`HIP*HE>&wQN8_|K(jtHUkMWC9>o<0+_dwK1pm{ zR28N&H(hbf5eAc70WFdA)3=q!G$5hwUN&LLLj?v`o3~}tYP;NUZ;La7oD)hSl$R>X z-#L2+MI3;?U;V);Y2*V`H#Obk9`@Ah$)#=2%bXfST!7;h4MgWEae1fIqdBEIg^lo5 zfSxu9DKp^T+xWS@{L}is-27L>uX^;y{L%B?{7;DA+wv>m*9!gt7^3=*fPY;`J#C5$ Te;q@1zWGT2fVgwD0|5R4Fi^wa literal 0 HcmV?d00001 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); } }