Commit 80a713887bc686499ce6cd45daba99731ef1858a
1 parent
82f815e8
Exists in
master
and in
3 other branches
Finish Share Function Bux Fix
Showing
13 changed files
with
337 additions
and
230 deletions
Show diff stats
Assets/Plugins/Android/AndroidManifest.xml
... | ... | @@ -8,6 +8,7 @@ |
8 | 8 | <uses-permission android:name="android.permission.INTERNET" /> |
9 | 9 | <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> |
10 | 10 | <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> |
11 | + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> | |
11 | 12 | |
12 | 13 | <application |
13 | 14 | android:icon="@drawable/app_icon" |
... | ... | @@ -22,6 +23,7 @@ |
22 | 23 | <action android:name="android.intent.action.MAIN" /> |
23 | 24 | <category android:name="android.intent.category.LAUNCHER" /> |
24 | 25 | </intent-filter> |
26 | + <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> | |
25 | 27 | </activity> |
26 | 28 | </application> |
27 | 29 | </manifest> |
28 | 30 | \ No newline at end of file | ... | ... |
Assets/Scenes/Main.unity
... | ... | @@ -515,7 +515,7 @@ GameObject: |
515 | 515 | m_Icon: {fileID: 0} |
516 | 516 | m_NavMeshLayer: 0 |
517 | 517 | m_StaticEditorFlags: 0 |
518 | - m_IsActive: 1 | |
518 | + m_IsActive: 0 | |
519 | 519 | --- !u!224 &126648712 |
520 | 520 | RectTransform: |
521 | 521 | m_ObjectHideFlags: 0 |
... | ... | @@ -573,7 +573,18 @@ MonoBehaviour: |
573 | 573 | m_TargetGraphic: {fileID: 126648714} |
574 | 574 | m_OnClick: |
575 | 575 | m_PersistentCalls: |
576 | - m_Calls: [] | |
576 | + m_Calls: | |
577 | + - m_Target: {fileID: 0} | |
578 | + m_MethodName: | |
579 | + m_Mode: 1 | |
580 | + m_Arguments: | |
581 | + m_ObjectArgument: {fileID: 0} | |
582 | + m_ObjectArgumentAssemblyTypeName: | |
583 | + m_IntArgument: 0 | |
584 | + m_FloatArgument: 0 | |
585 | + m_StringArgument: | |
586 | + m_BoolArgument: 0 | |
587 | + m_CallState: 2 | |
577 | 588 | m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, |
578 | 589 | Culture=neutral, PublicKeyToken=null |
579 | 590 | --- !u!114 &126648714 |
... | ... | @@ -1482,48 +1493,6 @@ CanvasRenderer: |
1482 | 1493 | type: 2} |
1483 | 1494 | m_PrefabInternal: {fileID: 0} |
1484 | 1495 | m_GameObject: {fileID: 228512393} |
1485 | ---- !u!1 &239812357 | |
1486 | -GameObject: | |
1487 | - m_ObjectHideFlags: 0 | |
1488 | - m_PrefabParentObject: {fileID: 133590, guid: 5ccb0ba277304a14b9bb8d4e34161675, type: 2} | |
1489 | - m_PrefabInternal: {fileID: 0} | |
1490 | - serializedVersion: 4 | |
1491 | - m_Component: | |
1492 | - - 224: {fileID: 239812358} | |
1493 | - - 222: {fileID: 239812359} | |
1494 | - m_Layer: 5 | |
1495 | - m_Name: container | |
1496 | - m_TagString: progress | |
1497 | - m_Icon: {fileID: 0} | |
1498 | - m_NavMeshLayer: 0 | |
1499 | - m_StaticEditorFlags: 0 | |
1500 | - m_IsActive: 1 | |
1501 | ---- !u!224 &239812358 | |
1502 | -RectTransform: | |
1503 | - m_ObjectHideFlags: 0 | |
1504 | - m_PrefabParentObject: {fileID: 22474260, guid: 5ccb0ba277304a14b9bb8d4e34161675, | |
1505 | - type: 2} | |
1506 | - m_PrefabInternal: {fileID: 0} | |
1507 | - m_GameObject: {fileID: 239812357} | |
1508 | - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} | |
1509 | - m_LocalPosition: {x: 0, y: 0, z: -0.0000000121053745} | |
1510 | - m_LocalScale: {x: 0.9999999, y: 1, z: 0} | |
1511 | - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} | |
1512 | - m_Children: [] | |
1513 | - m_Father: {fileID: 1530408465} | |
1514 | - m_RootOrder: 4 | |
1515 | - m_AnchorMin: {x: 0, y: 1.7} | |
1516 | - m_AnchorMax: {x: 0.97, y: 2.2} | |
1517 | - m_AnchoredPosition: {x: 0, y: 0} | |
1518 | - m_SizeDelta: {x: -237.39001, y: 0} | |
1519 | - m_Pivot: {x: 1, y: 0} | |
1520 | ---- !u!222 &239812359 | |
1521 | -CanvasRenderer: | |
1522 | - m_ObjectHideFlags: 0 | |
1523 | - m_PrefabParentObject: {fileID: 22202710, guid: 5ccb0ba277304a14b9bb8d4e34161675, | |
1524 | - type: 2} | |
1525 | - m_PrefabInternal: {fileID: 0} | |
1526 | - m_GameObject: {fileID: 239812357} | |
1527 | 1496 | --- !u!1 &253021235 |
1528 | 1497 | GameObject: |
1529 | 1498 | m_ObjectHideFlags: 0 |
... | ... | @@ -1883,11 +1852,11 @@ RectTransform: |
1883 | 1852 | - {fileID: 837040462} |
1884 | 1853 | - {fileID: 126648712} |
1885 | 1854 | m_Father: {fileID: 1530408465} |
1886 | - m_RootOrder: 5 | |
1855 | + m_RootOrder: 3 | |
1887 | 1856 | m_AnchorMin: {x: 0, y: 1.7} |
1888 | 1857 | m_AnchorMax: {x: 0.97, y: 2.2} |
1889 | 1858 | m_AnchoredPosition: {x: 0, y: 0} |
1890 | - m_SizeDelta: {x: -368.90573, y: 0} | |
1859 | + m_SizeDelta: {x: -239.87144, y: 0} | |
1891 | 1860 | m_Pivot: {x: 1, y: 0} |
1892 | 1861 | --- !u!222 &291722905 |
1893 | 1862 | CanvasRenderer: |
... | ... | @@ -3989,7 +3958,7 @@ RectTransform: |
3989 | 3958 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
3990 | 3959 | m_Children: [] |
3991 | 3960 | m_Father: {fileID: 1530408465} |
3992 | - m_RootOrder: 3 | |
3961 | + m_RootOrder: 2 | |
3993 | 3962 | m_AnchorMin: {x: 0, y: 1.7} |
3994 | 3963 | m_AnchorMax: {x: 0.97, y: 2.2} |
3995 | 3964 | m_AnchoredPosition: {x: 0, y: 0} |
... | ... | @@ -4033,7 +4002,18 @@ MonoBehaviour: |
4033 | 4002 | m_TargetGraphic: {fileID: 581668679} |
4034 | 4003 | m_OnClick: |
4035 | 4004 | m_PersistentCalls: |
4036 | - m_Calls: [] | |
4005 | + m_Calls: | |
4006 | + - m_Target: {fileID: 210788816} | |
4007 | + m_MethodName: OnShareVideo | |
4008 | + m_Mode: 1 | |
4009 | + m_Arguments: | |
4010 | + m_ObjectArgument: {fileID: 0} | |
4011 | + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine | |
4012 | + m_IntArgument: 0 | |
4013 | + m_FloatArgument: 0 | |
4014 | + m_StringArgument: | |
4015 | + m_BoolArgument: 0 | |
4016 | + m_CallState: 2 | |
4037 | 4017 | m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, |
4038 | 4018 | Culture=neutral, PublicKeyToken=null |
4039 | 4019 | --- !u!114 &581668679 |
... | ... | @@ -6175,119 +6155,6 @@ CanvasRenderer: |
6175 | 6155 | type: 2} |
6176 | 6156 | m_PrefabInternal: {fileID: 0} |
6177 | 6157 | m_GameObject: {fileID: 930426942} |
6178 | ---- !u!1 &935965592 | |
6179 | -GameObject: | |
6180 | - m_ObjectHideFlags: 0 | |
6181 | - m_PrefabParentObject: {fileID: 133590, guid: 5ccb0ba277304a14b9bb8d4e34161675, type: 2} | |
6182 | - m_PrefabInternal: {fileID: 0} | |
6183 | - serializedVersion: 4 | |
6184 | - m_Component: | |
6185 | - - 224: {fileID: 935965593} | |
6186 | - - 222: {fileID: 935965596} | |
6187 | - - 114: {fileID: 935965595} | |
6188 | - - 114: {fileID: 935965594} | |
6189 | - m_Layer: 5 | |
6190 | - m_Name: b_close | |
6191 | - m_TagString: progress | |
6192 | - m_Icon: {fileID: 0} | |
6193 | - m_NavMeshLayer: 0 | |
6194 | - m_StaticEditorFlags: 0 | |
6195 | - m_IsActive: 0 | |
6196 | ---- !u!224 &935965593 | |
6197 | -RectTransform: | |
6198 | - m_ObjectHideFlags: 0 | |
6199 | - m_PrefabParentObject: {fileID: 22474260, guid: 5ccb0ba277304a14b9bb8d4e34161675, | |
6200 | - type: 2} | |
6201 | - m_PrefabInternal: {fileID: 0} | |
6202 | - m_GameObject: {fileID: 935965592} | |
6203 | - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} | |
6204 | - m_LocalPosition: {x: 0, y: 0, z: 0} | |
6205 | - m_LocalScale: {x: 1, y: 1, z: 0} | |
6206 | - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} | |
6207 | - m_Children: [] | |
6208 | - m_Father: {fileID: 1530408465} | |
6209 | - m_RootOrder: 2 | |
6210 | - m_AnchorMin: {x: 0, y: 1.8} | |
6211 | - m_AnchorMax: {x: 0.97, y: 2.1} | |
6212 | - m_AnchoredPosition: {x: 0, y: -13} | |
6213 | - m_SizeDelta: {x: 0, y: 26} | |
6214 | - m_Pivot: {x: 1, y: 0} | |
6215 | ---- !u!114 &935965594 | |
6216 | -MonoBehaviour: | |
6217 | - m_ObjectHideFlags: 0 | |
6218 | - m_PrefabParentObject: {fileID: 0} | |
6219 | - m_PrefabInternal: {fileID: 0} | |
6220 | - m_GameObject: {fileID: 935965592} | |
6221 | - m_Enabled: 1 | |
6222 | - m_EditorHideFlags: 0 | |
6223 | - m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} | |
6224 | - m_Name: | |
6225 | - m_EditorClassIdentifier: | |
6226 | - m_Navigation: | |
6227 | - m_Mode: 3 | |
6228 | - m_SelectOnUp: {fileID: 0} | |
6229 | - m_SelectOnDown: {fileID: 0} | |
6230 | - m_SelectOnLeft: {fileID: 0} | |
6231 | - m_SelectOnRight: {fileID: 0} | |
6232 | - m_Transition: 1 | |
6233 | - m_Colors: | |
6234 | - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} | |
6235 | - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} | |
6236 | - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} | |
6237 | - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} | |
6238 | - m_ColorMultiplier: 1 | |
6239 | - m_FadeDuration: 0.1 | |
6240 | - m_SpriteState: | |
6241 | - m_HighlightedSprite: {fileID: 0} | |
6242 | - m_PressedSprite: {fileID: 0} | |
6243 | - m_DisabledSprite: {fileID: 0} | |
6244 | - m_AnimationTriggers: | |
6245 | - m_NormalTrigger: Normal | |
6246 | - m_HighlightedTrigger: Highlighted | |
6247 | - m_PressedTrigger: Pressed | |
6248 | - m_DisabledTrigger: Disabled | |
6249 | - m_Interactable: 1 | |
6250 | - m_TargetGraphic: {fileID: 935965595} | |
6251 | - m_OnClick: | |
6252 | - m_PersistentCalls: | |
6253 | - m_Calls: [] | |
6254 | - m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, | |
6255 | - Culture=neutral, PublicKeyToken=null | |
6256 | ---- !u!114 &935965595 | |
6257 | -MonoBehaviour: | |
6258 | - m_ObjectHideFlags: 0 | |
6259 | - m_PrefabParentObject: {fileID: 11451830, guid: 5ccb0ba277304a14b9bb8d4e34161675, | |
6260 | - type: 2} | |
6261 | - m_PrefabInternal: {fileID: 0} | |
6262 | - m_GameObject: {fileID: 935965592} | |
6263 | - m_Enabled: 1 | |
6264 | - m_EditorHideFlags: 0 | |
6265 | - m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} | |
6266 | - m_Name: | |
6267 | - m_EditorClassIdentifier: | |
6268 | - m_Material: {fileID: 0} | |
6269 | - m_Color: {r: 1, g: 1, b: 1, a: 1} | |
6270 | - m_RaycastTarget: 1 | |
6271 | - m_OnCullStateChanged: | |
6272 | - m_PersistentCalls: | |
6273 | - m_Calls: [] | |
6274 | - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, | |
6275 | - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null | |
6276 | - m_Sprite: {fileID: 21300000, guid: 6495de8ff9a26c94e9d42fada0a56630, type: 3} | |
6277 | - m_Type: 0 | |
6278 | - m_PreserveAspect: 1 | |
6279 | - m_FillCenter: 1 | |
6280 | - m_FillMethod: 4 | |
6281 | - m_FillAmount: 1 | |
6282 | - m_FillClockwise: 1 | |
6283 | - m_FillOrigin: 0 | |
6284 | ---- !u!222 &935965596 | |
6285 | -CanvasRenderer: | |
6286 | - m_ObjectHideFlags: 0 | |
6287 | - m_PrefabParentObject: {fileID: 22202710, guid: 5ccb0ba277304a14b9bb8d4e34161675, | |
6288 | - type: 2} | |
6289 | - m_PrefabInternal: {fileID: 0} | |
6290 | - m_GameObject: {fileID: 935965592} | |
6291 | 6158 | --- !u!1 &948041467 |
6292 | 6159 | GameObject: |
6293 | 6160 | m_ObjectHideFlags: 0 |
... | ... | @@ -8562,7 +8429,18 @@ MonoBehaviour: |
8562 | 8429 | m_TargetGraphic: {fileID: 1182541897} |
8563 | 8430 | m_OnClick: |
8564 | 8431 | m_PersistentCalls: |
8565 | - m_Calls: [] | |
8432 | + m_Calls: | |
8433 | + - m_Target: {fileID: 210788816} | |
8434 | + m_MethodName: OnDownloadCancel | |
8435 | + m_Mode: 1 | |
8436 | + m_Arguments: | |
8437 | + m_ObjectArgument: {fileID: 0} | |
8438 | + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine | |
8439 | + m_IntArgument: 0 | |
8440 | + m_FloatArgument: 0 | |
8441 | + m_StringArgument: | |
8442 | + m_BoolArgument: 0 | |
8443 | + m_CallState: 2 | |
8566 | 8444 | m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, |
8567 | 8445 | Culture=neutral, PublicKeyToken=null |
8568 | 8446 | --- !u!114 &1182541897 |
... | ... | @@ -11439,9 +11317,7 @@ RectTransform: |
11439 | 11317 | m_Children: |
11440 | 11318 | - {fileID: 1059619783} |
11441 | 11319 | - {fileID: 160532052} |
11442 | - - {fileID: 935965593} | |
11443 | 11320 | - {fileID: 581668677} |
11444 | - - {fileID: 239812358} | |
11445 | 11321 | - {fileID: 291722902} |
11446 | 11322 | - {fileID: 1910480222} |
11447 | 11323 | m_Father: {fileID: 1620867682} |
... | ... | @@ -13459,7 +13335,7 @@ GameObject: |
13459 | 13335 | m_Icon: {fileID: 0} |
13460 | 13336 | m_NavMeshLayer: 0 |
13461 | 13337 | m_StaticEditorFlags: 0 |
13462 | - m_IsActive: 1 | |
13338 | + m_IsActive: 0 | |
13463 | 13339 | --- !u!224 &1910480222 |
13464 | 13340 | RectTransform: |
13465 | 13341 | m_ObjectHideFlags: 0 |
... | ... | @@ -13474,11 +13350,11 @@ RectTransform: |
13474 | 13350 | m_Children: |
13475 | 13351 | - {fileID: 1182541895} |
13476 | 13352 | m_Father: {fileID: 1530408465} |
13477 | - m_RootOrder: 6 | |
13353 | + m_RootOrder: 4 | |
13478 | 13354 | m_AnchorMin: {x: 0, y: 1.7} |
13479 | 13355 | m_AnchorMax: {x: 0.97, y: 2.2} |
13480 | 13356 | m_AnchoredPosition: {x: 0, y: 0} |
13481 | - m_SizeDelta: {x: 0, y: 0} | |
13357 | + m_SizeDelta: {x: -239.87144, y: 0} | |
13482 | 13358 | m_Pivot: {x: 1, y: 0} |
13483 | 13359 | --- !u!114 &1910480223 |
13484 | 13360 | MonoBehaviour: |
... | ... | @@ -13505,7 +13381,7 @@ MonoBehaviour: |
13505 | 13381 | m_PreserveAspect: 1 |
13506 | 13382 | m_FillCenter: 1 |
13507 | 13383 | m_FillMethod: 4 |
13508 | - m_FillAmount: 1 | |
13384 | + m_FillAmount: 0 | |
13509 | 13385 | m_FillClockwise: 1 |
13510 | 13386 | m_FillOrigin: 0 |
13511 | 13387 | --- !u!222 &1910480224 |
... | ... | @@ -16059,7 +15935,6 @@ MonoBehaviour: |
16059 | 15935 | progressLayer: {fileID: 291722901} |
16060 | 15936 | downloadLayer: {fileID: 160532051} |
16061 | 15937 | downloadProgressLayer: {fileID: 1910480221} |
16062 | - closeLayer: {fileID: 935965592} | |
16063 | 15938 | textButton: {fileID: 930426942} |
16064 | 15939 | pauseButton: {fileID: 440527253} |
16065 | 15940 | avatarCollider: {fileID: 535548073} | ... | ... |
... | ... | @@ -0,0 +1,52 @@ |
1 | +using UnityEngine; | |
2 | +using System.Collections; | |
3 | +using System; | |
4 | + | |
5 | +public class AndroidJavaUti{ | |
6 | + | |
7 | + | |
8 | + private static string m_pkgName; | |
9 | + private static string m_sdCardPath; | |
10 | + public static AndroidJavaObject Activity | |
11 | + { | |
12 | + get | |
13 | + { | |
14 | + AndroidJavaClass jcPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); | |
15 | + return jcPlayer.GetStatic<AndroidJavaObject>("currentActivity"); | |
16 | + } | |
17 | + } | |
18 | + | |
19 | + | |
20 | + public static string CurrentPkgName | |
21 | + { | |
22 | + get | |
23 | + { | |
24 | + if (m_pkgName == null) | |
25 | + m_pkgName = Activity.Call<string>("getPackageName"); | |
26 | + return m_pkgName; | |
27 | + } | |
28 | + } | |
29 | + | |
30 | + | |
31 | + public static string CurrentSDCardPath | |
32 | + { | |
33 | + get | |
34 | + { | |
35 | + if (m_sdCardPath == null) | |
36 | + { | |
37 | + AndroidJavaClass jc = new AndroidJavaClass("android.os.Environment"); | |
38 | + IntPtr getExternalStorageDirectoryMethod = AndroidJNI.GetStaticMethodID(jc.GetRawClass(), "getExternalStorageDirectory", "()Ljava/io/File;"); | |
39 | + IntPtr file = AndroidJNI.CallStaticObjectMethod(jc.GetRawClass(), getExternalStorageDirectoryMethod, new jvalue[] { }); | |
40 | + IntPtr getPathMethod = AndroidJNI.GetMethodID(AndroidJNI.GetObjectClass(file), "getPath", "()Ljava/lang/String;"); | |
41 | + IntPtr path = AndroidJNI.CallObjectMethod(file, getPathMethod, new jvalue[] { }); | |
42 | + m_sdCardPath = AndroidJNI.GetStringUTFChars(path); | |
43 | + AndroidJNI.DeleteLocalRef(file); | |
44 | + AndroidJNI.DeleteLocalRef(path); | |
45 | + Debug.Log("m_sdCardPath = " + m_sdCardPath); | |
46 | + } | |
47 | + return m_sdCardPath; | |
48 | + } | |
49 | + | |
50 | + } | |
51 | +} | |
52 | + | ... | ... |
... | ... | @@ -0,0 +1,12 @@ |
1 | +fileFormatVersion: 2 | |
2 | +guid: 437223d76094ce840a68de8b6ea60fe8 | |
3 | +timeCreated: 1486222942 | |
4 | +licenseType: Free | |
5 | +MonoImporter: | |
6 | + serializedVersion: 2 | |
7 | + defaultReferences: [] | |
8 | + executionOrder: 0 | |
9 | + icon: {instanceID: 0} | |
10 | + userData: | |
11 | + assetBundleName: | |
12 | + assetBundleVariant: | ... | ... |
... | ... | @@ -0,0 +1,25 @@ |
1 | +using UnityEngine; | |
2 | +using System.Collections; | |
3 | + | |
4 | +public class AndroidToast : MonoBehaviour | |
5 | +{ | |
6 | + AndroidJavaObject currentActivity; | |
7 | + AndroidJavaClass UnityPlayer; | |
8 | + AndroidJavaObject context; | |
9 | + | |
10 | + | |
11 | + public void showToast(string toastString){ | |
12 | + if (Application.platform == RuntimePlatform.Android) | |
13 | + { | |
14 | + UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); | |
15 | + currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); | |
16 | + context = currentActivity.Call<AndroidJavaObject>("getApplicationContext"); | |
17 | + | |
18 | + AndroidJavaClass Toast = new AndroidJavaClass("android.widget.Toast"); | |
19 | + AndroidJavaObject javaString = new AndroidJavaObject("java.lang.String", toastString); | |
20 | + AndroidJavaObject toast = Toast.CallStatic<AndroidJavaObject>("makeText", context, javaString, Toast.GetStatic<int>("LENGTH_SHORT")); | |
21 | + toast.Call("show"); | |
22 | + } | |
23 | + } | |
24 | + | |
25 | +} | ... | ... |
... | ... | @@ -0,0 +1,12 @@ |
1 | +fileFormatVersion: 2 | |
2 | +guid: f4af3594fb207274dbd1d303e7079acb | |
3 | +timeCreated: 1486225591 | |
4 | +licenseType: Free | |
5 | +MonoImporter: | |
6 | + serializedVersion: 2 | |
7 | + defaultReferences: [] | |
8 | + executionOrder: 0 | |
9 | + icon: {instanceID: 0} | |
10 | + userData: | |
11 | + assetBundleName: | |
12 | + assetBundleVariant: | ... | ... |
Assets/Scripts/Export Video/ExportLayers.cs
Assets/Scripts/Export Video/ExportVideo.cs
... | ... | @@ -32,14 +32,19 @@ public class ExportVideo : MonoBehaviour { |
32 | 32 | public ScreenManager screenManager; |
33 | 33 | private MobileNativeDialog nativeDialog; |
34 | 34 | |
35 | - public static string gloss = ""; | |
36 | - private const string SERVER_URL = "http://traducao.vlibras.gov.br/translate?text="; | |
35 | + public static string gloss = "Gloss"; | |
36 | + private string currentGloss = "CurrentGloss"; | |
37 | + private string currentTime = ""; | |
38 | + private const string SERVER_URL = "http://150.165.205.38/video/"; | |
37 | 39 | |
38 | 40 | private string title = "Download"; |
39 | - private string message = "Para compartilhar é preciso realizar o download do vídeo. Informação 1: N mb."; | |
41 | + private string message = "Para compartilhar é preciso realizar o download do vídeo. Tamanho do Download: "; | |
40 | 42 | private string yesOp = "DOWNLOAD"; |
41 | 43 | private string noOp = "CANCELAR"; |
42 | - private string videoSize = ""; | |
44 | + private float videoSize = 0; | |
45 | + private string videoId = ""; | |
46 | + private bool CancelDownload = false; | |
47 | + private byte[] videoContent = null; | |
43 | 48 | |
44 | 49 | |
45 | 50 | |
... | ... | @@ -53,10 +58,7 @@ public class ExportVideo : MonoBehaviour { |
53 | 58 | Debug.Log("onClickShare pressed"); |
54 | 59 | screenManager.changeExportStates(ExportLayers.ExportLayer.Export_Layer,false); |
55 | 60 | screenManager.changeExportStates(ExportLayers.ExportLayer.Progress_Layer, true); |
56 | - MediaShareAndroid mediaShare = new MediaShareAndroid(); | |
57 | - mediaShare.ShareActivity("Download", "Baixe", "Exemplo"); | |
58 | - | |
59 | - | |
61 | + StartCoroutine("requestVideoInfo"); | |
60 | 62 | Debug.Log("Hiding export button and showing progress loading"); |
61 | 63 | |
62 | 64 | } |
... | ... | @@ -80,11 +82,8 @@ public class ExportVideo : MonoBehaviour { |
80 | 82 | { |
81 | 83 | |
82 | 84 | Debug.Log("Asking for permition to download"); |
83 | - nativeDialog = new MobileNativeDialog(title, message, yesOp, noOp); | |
85 | + nativeDialog = new MobileNativeDialog(title, message + ((videoSize/1024f)/1024f).ToString("0.00") + " MB.", yesOp, noOp); | |
84 | 86 | nativeDialog.OnComplete = OnComplete; |
85 | - | |
86 | - | |
87 | - | |
88 | 87 | |
89 | 88 | } |
90 | 89 | |
... | ... | @@ -97,11 +96,14 @@ public class ExportVideo : MonoBehaviour { |
97 | 96 | if(result == MNDialogResult.YES) |
98 | 97 | { |
99 | 98 | Debug.Log("User pressed yes"); |
99 | + StartCoroutine("videoDownload"); | |
100 | + screenManager.changeExportStates(ExportLayers.ExportLayer.Download_Layer, false); | |
101 | + screenManager.changeExportStates(ExportLayers.ExportLayer.Progress_Download_Layer, true); | |
100 | 102 | }else if(result == MNDialogResult.NO) |
101 | 103 | { |
102 | 104 | Debug.Log("User pressed no"); |
103 | - screenManager.changeExportStates(ExportLayers.ExportLayer.All, false); | |
104 | - screenManager.changeExportStates(ExportLayers.ExportLayer.Export_Layer, true); | |
105 | + screenManager.changeExportStates(ExportLayers.ExportLayer.All, true); | |
106 | + | |
105 | 107 | } |
106 | 108 | } |
107 | 109 | |
... | ... | @@ -117,65 +119,131 @@ public class ExportVideo : MonoBehaviour { |
117 | 119 | public void OnDownloadCancel() |
118 | 120 | { |
119 | 121 | Debug.Log("User canceled the download, resetting states to default"); |
120 | - screenManager.changeExportStates(ExportLayers.ExportLayer.All, false); | |
121 | - screenManager.changeExportStates(ExportLayers.ExportLayer.Share_Layer, true); | |
122 | + CancelDownload = true; | |
123 | + screenManager.changeExportStates(ExportLayers.ExportLayer.All, true); | |
124 | + videoContent = null; | |
125 | + | |
126 | + | |
122 | 127 | } |
123 | 128 | |
129 | + public void OnShareVideo() | |
130 | + { | |
131 | + Debug.Log("Sharing video content"); | |
132 | + if(gloss == currentGloss) | |
133 | + { | |
134 | + if (videoContent != null) | |
135 | + new MediaShareAndroid().ShareActivity(videoContent,currentTime); | |
136 | + else | |
137 | + { | |
138 | + new AndroidToast().showToast("Erro ao compartilhar vídeo"); | |
139 | + } | |
140 | + | |
141 | + }else | |
142 | + { | |
143 | + currentGloss = gloss; | |
144 | + currentTime = System.DateTime.Now.ToString("yyyy-MM-dd_HH:mm:ss"); | |
124 | 145 | |
125 | - private IEnumerator requestVideoInfo(string gloss) | |
126 | - { | |
146 | + if (videoContent != null) | |
147 | + new MediaShareAndroid().ShareActivity(videoContent, currentTime); | |
148 | + else | |
149 | + { | |
150 | + new AndroidToast().showToast("Erro ao compartilhar vídeo"); | |
151 | + } | |
152 | + | |
153 | + } | |
127 | 154 | |
155 | + } | |
156 | + | |
157 | + | |
158 | + private IEnumerator videoDownload() | |
159 | + { | |
160 | + WWW DownloadVideo = new WWW(SERVER_URL + videoId); | |
161 | + while (!CancelDownload && !DownloadVideo.isDone) | |
162 | + { | |
163 | + screenManager.updateProgressDownloadSprite(DownloadVideo.progress); | |
164 | + yield return null; | |
165 | + } | |
166 | + | |
167 | + if (!CancelDownload) | |
168 | + { | |
169 | + if (DownloadVideo.bytesDownloaded > 0 && DownloadVideo.bytesDownloaded <= videoSize) | |
170 | + { | |
171 | + videoContent = DownloadVideo.bytes; | |
172 | + | |
173 | + OnDownloadFinished(); | |
174 | + }else | |
175 | + { | |
176 | + new AndroidToast().showToast("Erro ao efetuar download. Tente novamente"); | |
177 | + screenManager.changeExportStates(ExportLayers.ExportLayer.All, true); | |
178 | + } | |
179 | + }else | |
180 | + { | |
181 | + CancelDownload = false; | |
182 | + yield break; | |
183 | + } | |
184 | + } | |
185 | + | |
186 | + private IEnumerator requestVideoInfo() | |
187 | + { | |
188 | + | |
189 | + WWWForm JsonRequest = new WWWForm(); | |
190 | + JsonRequest.AddField("gloss", gloss); | |
191 | + WWW videoInfoRequest = new WWW(SERVER_URL,JsonRequest); | |
128 | 192 | |
129 | - WWW videoInfoRequest = new WWW(SERVER_URL + WWW.EscapeURL(gloss)); | |
130 | 193 | |
131 | 194 | |
132 | - PlayerLogger.Log("PM", "t", "Gloss: " + gloss); | |
133 | - PlayerLogger.Log("PM", "t", "Request: " + SERVER_URL + WWW.EscapeURL(gloss)); | |
195 | + | |
196 | + PlayerLogger.Log("ExportVideo", "requestVideoInfo", "Request for: " + SERVER_URL); | |
197 | + | |
198 | + yield return WaitForResponse(videoInfoRequest); | |
134 | 199 | |
135 | - yield return WaitForResponse(videoInfoRequest); | |
200 | + | |
136 | 201 | |
137 | 202 | try |
138 | 203 | { |
139 | 204 | if (!videoInfoRequest.isDone) |
140 | 205 | { |
141 | - this.screenManager.showConnectionErrorDialog( | |
142 | - PlayerManager.ERROR_STATUS_MESSAGE.CONNECTION_TIMEOUT_FAILURE); | |
143 | 206 | |
144 | - PlayerLogger.Log("PM", "t", "Timeout."); | |
207 | + screenManager.changeExportStates(ExportLayers.ExportLayer.All, true); | |
208 | + new AndroidToast().showToast("Erro de conexão, tenta novamente."); | |
209 | + PlayerLogger.Log("ExportVideo", "requestVideoInfo", "TimeOut"); | |
145 | 210 | } |
146 | 211 | else if (videoInfoRequest.error != null) |
147 | 212 | { |
148 | - this.screenManager.showConnectionErrorDialog( | |
149 | - PlayerManager.ERROR_STATUS_MESSAGE.INTERNET_CONNECTION_FAILURE); | |
150 | - | |
151 | - PlayerLogger.Log("PM", "t", "(WWW) Error: " + videoInfoRequest.error); | |
213 | + | |
214 | + screenManager.changeExportStates(ExportLayers.ExportLayer.All, true); | |
215 | + new AndroidToast().showToast("Erro de conexão, tenta novamente."); | |
216 | + PlayerLogger.Log("ExportVideo", "requestVideoInfo", "(WWW) Error: " + videoInfoRequest.error); | |
152 | 217 | } |
153 | 218 | else if (videoInfoRequest.responseHeaders.Count == 0) |
154 | 219 | { |
155 | - PlayerLogger.Log("PM", "t", "Unsuccessful answer (0)."); | |
156 | - | |
157 | - this.screenManager.showConnectionErrorDialog( | |
158 | - PlayerManager.ERROR_STATUS_MESSAGE.TRANSLATOR_CONNECTION_FAILURE); | |
220 | + PlayerLogger.Log("ExportVideo", "requestVideoInfo", "(WWW) Unsucessful Answer"); | |
221 | + new AndroidToast().showToast("Erro de conexão, tenta novamente."); | |
222 | + screenManager.changeExportStates(ExportLayers.ExportLayer.All, true); | |
223 | + | |
159 | 224 | } |
160 | 225 | else if (!videoInfoRequest.responseHeaders["STATUS"].Contains("200")) |
161 | 226 | { |
162 | - PlayerLogger.Log("PM", "t", "Unsuccessful answer (" + videoInfoRequest.responseHeaders["STATUS"] + ")."); | |
163 | - | |
164 | - this.screenManager.showConnectionErrorDialog( | |
165 | - PlayerManager.ERROR_STATUS_MESSAGE.TRANSLATOR_CONNECTION_FAILURE); | |
227 | + new AndroidToast().showToast("Erro de conexão, tenta novamente."); | |
228 | + PlayerLogger.Log("ExportVideo", "requestVideoInfo", "Unsuccessful answer (" + videoInfoRequest.responseHeaders["STATUS"] + ")."); | |
229 | + screenManager.changeExportStates(ExportLayers.ExportLayer.All, true); | |
230 | + | |
166 | 231 | } |
167 | 232 | else if (String.IsNullOrEmpty(videoInfoRequest.text)) |
168 | 233 | { |
169 | - PlayerLogger.Log("PM", "t", "Empty answer."); | |
234 | + new AndroidToast().showToast("Erro de conexão, tenta novamente."); | |
235 | + screenManager.changeExportStates(ExportLayers.ExportLayer.All, true); | |
236 | + PlayerLogger.Log("ExportVideo", "requestVideoInfo", "Empty answer."); | |
170 | 237 | } |
171 | 238 | else |
172 | 239 | { |
173 | - PlayerLogger.Log("PM", "t", "Answer: " + videoInfoRequest.text); | |
174 | - | |
175 | - gloss = videoInfoRequest.text; | |
176 | - | |
177 | - | |
240 | + PlayerLogger.Log("ExportVideo", "requestVideoInfo", "Answer: " + videoInfoRequest.text); | |
178 | 241 | |
242 | + FileContent fileContent = new FileContent(); | |
243 | + fileContent = FileContent.CreateFromJSON(videoInfoRequest.text); | |
244 | + videoId = fileContent.file; | |
245 | + videoSize = float.Parse(fileContent.size); | |
246 | + OnFinishGetVideoInfo(); | |
179 | 247 | |
180 | 248 | yield break; |
181 | 249 | } |
... | ... | @@ -192,7 +260,7 @@ public class ExportVideo : MonoBehaviour { |
192 | 260 | |
193 | 261 | public IEnumerator WaitForResponse(WWW www, Events.RequestSuccess success, Events.RequestError error) |
194 | 262 | { |
195 | - yield return Methods.WaitForResponse(www, 20f, success, error); | |
263 | + yield return Methods.WaitForResponse(www, 60f, success, error); | |
196 | 264 | |
197 | 265 | } |
198 | 266 | ... | ... |
... | ... | @@ -0,0 +1,14 @@ |
1 | +using UnityEngine; | |
2 | +using System.Collections; | |
3 | + | |
4 | +public class FileContent { | |
5 | + | |
6 | + public string file; | |
7 | + public string size; | |
8 | + | |
9 | + | |
10 | + public static FileContent CreateFromJSON(string jsonString) | |
11 | + { | |
12 | + return JsonUtility.FromJson<FileContent>(jsonString); | |
13 | + } | |
14 | +} | ... | ... |
... | ... | @@ -0,0 +1,12 @@ |
1 | +fileFormatVersion: 2 | |
2 | +guid: 8b48ac84824290f47a90effd57b97d84 | |
3 | +timeCreated: 1486224084 | |
4 | +licenseType: Free | |
5 | +MonoImporter: | |
6 | + serializedVersion: 2 | |
7 | + defaultReferences: [] | |
8 | + executionOrder: 0 | |
9 | + icon: {instanceID: 0} | |
10 | + userData: | |
11 | + assetBundleName: | |
12 | + assetBundleVariant: | ... | ... |
Assets/Scripts/Export Video/MediaShareAndroid.cs
... | ... | @@ -23,18 +23,38 @@ using System.IO; |
23 | 23 | public class MediaShareAndroid : MonoBehaviour |
24 | 24 | { |
25 | 25 | |
26 | - private string MediaType = "text/plain"; | |
26 | + private string MediaType = "video/*"; | |
27 | 27 | private string TitleMessage = "Compartilhar Vídeo"; |
28 | 28 | private string SubtitleMessage = "VLibras"; |
29 | - private string Media = "Compartilhar"; | |
30 | - private string path = Application.persistentDataPath + "/expl.jpg"; | |
31 | 29 | |
30 | + private string AndroidPath = AndroidJavaUti.CurrentSDCardPath; | |
31 | + private string Vlibras = "/VLibras"; | |
32 | + private string FileName = "/VLibrasVideo_"; | |
32 | 33 | |
33 | 34 | |
34 | - public void ShareActivity(string title, string subject, string body) | |
35 | + private void WriteOnAndroid(byte[] videoContent) | |
36 | + { | |
37 | + if(!Directory.Exists(AndroidPath + Vlibras)) | |
38 | + { | |
39 | + Directory.CreateDirectory(AndroidPath + Vlibras); | |
40 | + | |
41 | + | |
42 | + } | |
43 | + if (!Directory.Exists(AndroidPath + Vlibras + FileName)) | |
44 | + File.WriteAllBytes(AndroidPath + Vlibras + FileName, videoContent); | |
45 | + | |
46 | + | |
47 | + | |
48 | + } | |
49 | + | |
50 | + | |
51 | + | |
52 | + public void ShareActivity(byte[] videoContent, string CurrentTime) | |
35 | 53 | { |
36 | 54 | |
37 | 55 | #if UNITY_ANDROID |
56 | + FileName += CurrentTime + ".mp4"; | |
57 | + WriteOnAndroid(videoContent); | |
38 | 58 | // Create Refernece of AndroidJavaClass class for intent |
39 | 59 | AndroidJavaClass intentClass = new AndroidJavaClass("android.content.Intent"); |
40 | 60 | // Create Refernece of AndroidJavaObject class intent |
... | ... | @@ -47,18 +67,18 @@ public class MediaShareAndroid : MonoBehaviour |
47 | 67 | //Set title of action or intent |
48 | 68 | intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_TITLE"), TitleMessage); |
49 | 69 | |
50 | - | |
70 | + /* | |
51 | 71 | // Set actual data which you want to share |
52 | 72 | intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_TEXT"), Media); |
53 | 73 | AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); |
54 | 74 | AndroidJavaObject currentActivity = unity.GetStatic<AndroidJavaObject>("currentActivity"); |
55 | 75 | // Invoke android activity for passing intent to share data |
56 | 76 | currentActivity.Call("startActivity", intentObject); |
57 | - | |
77 | + */ | |
58 | 78 | |
59 | - /* AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri"); | |
60 | - AndroidJavaClass fileClass = new AndroidJavaClass("java.io.File"); | |
61 | - AndroidJavaObject fileObject = new AndroidJavaObject("java.io.File", path);// Set Image Path Here | |
79 | + AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri"); | |
80 | + | |
81 | + AndroidJavaObject fileObject = new AndroidJavaObject("java.io.File", AndroidPath + Vlibras + FileName);// Set Image Path Here | |
62 | 82 | AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject>("fromFile", fileObject); |
63 | 83 | // string uriPath = uriObject.Call("getPath"); |
64 | 84 | bool fileExist = fileObject.Call<bool>("exists"); |
... | ... | @@ -69,7 +89,8 @@ public class MediaShareAndroid : MonoBehaviour |
69 | 89 | AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); |
70 | 90 | AndroidJavaObject currentActivity = unity.GetStatic<AndroidJavaObject>("currentActivity"); |
71 | 91 | currentActivity.Call("startActivity", intentObject); |
72 | - */ | |
92 | + new AndroidToast().showToast("Vídeo salvo em /Vlibras"); | |
93 | + | |
73 | 94 | #endif |
74 | 95 | } |
75 | 96 | } | ... | ... |
Assets/Scripts/PlayerManager.cs
... | ... | @@ -91,10 +91,12 @@ public class PlayerManager : GenericPlayerManager { |
91 | 91 | |
92 | 92 | this.dictWord = word; |
93 | 93 | base.gloss = word; |
94 | + | |
94 | 95 | base.playNow(word); |
95 | 96 | ExportVideo.gloss = word; |
97 | + this.screenManager.changeExportStates(ExportLayers.ExportLayer.OnLockExport, false); | |
96 | 98 | |
97 | - this.screenManager.hideScreen(); | |
99 | + this.screenManager.hideScreen(); | |
98 | 100 | this.screenManager.setPauseMenuState(false); |
99 | 101 | } |
100 | 102 | |
... | ... | @@ -105,8 +107,9 @@ public class PlayerManager : GenericPlayerManager { |
105 | 107 | |
106 | 108 | string text = translateScreenText.text; |
107 | 109 | translateScreenText.text = ""; |
110 | + this.screenManager.changeExportStates(ExportLayers.ExportLayer.OnLockExport, false); | |
108 | 111 | |
109 | - StartCoroutine("translate", text); | |
112 | + StartCoroutine("translate", text); | |
110 | 113 | |
111 | 114 | this.screenManager.setPauseMenuState(false); |
112 | 115 | } |
... | ... | @@ -277,6 +280,7 @@ public class PlayerManager : GenericPlayerManager { |
277 | 280 | |
278 | 281 | base.gloss = gloss; |
279 | 282 | ExportVideo.gloss = gloss; |
283 | + | |
280 | 284 | base.playNow(base.gloss); |
281 | 285 | |
282 | 286 | ... | ... |
Assets/Scripts/UI/ScreenManager.cs
... | ... | @@ -31,7 +31,7 @@ public class ScreenManager : MonoBehaviour { |
31 | 31 | public GameObject progressLayer; |
32 | 32 | public GameObject downloadLayer; |
33 | 33 | public GameObject downloadProgressLayer; |
34 | - public GameObject closeLayer; | |
34 | + | |
35 | 35 | private bool onLockExport = false; |
36 | 36 | |
37 | 37 | |
... | ... | @@ -307,7 +307,7 @@ public class ScreenManager : MonoBehaviour { |
307 | 307 | public void setDownloadProgressLayerState(bool active) |
308 | 308 | { |
309 | 309 | this.downloadProgressLayer.SetActive(active); |
310 | - this.closeLayer.SetActive(active); | |
310 | + | |
311 | 311 | } |
312 | 312 | |
313 | 313 | public void setShareLayerState(bool active) |
... | ... | @@ -322,6 +322,11 @@ public class ScreenManager : MonoBehaviour { |
322 | 322 | this.pauseButton.SetActive( ! active); |
323 | 323 | } |
324 | 324 | |
325 | + public void updateProgressDownloadSprite(float progress) | |
326 | + { | |
327 | + downloadProgressLayer.GetComponent<Image>().fillAmount = progress; | |
328 | + } | |
329 | + | |
325 | 330 | |
326 | 331 | public void changeStates(bool playing, bool paused, bool repeatable) |
327 | 332 | { |
... | ... | @@ -329,7 +334,7 @@ public class ScreenManager : MonoBehaviour { |
329 | 334 | setPauseMenuState(playing && paused); |
330 | 335 | setRepeatLayerState( ! playing && repeatable); |
331 | 336 | if(!onLockExport) |
332 | - changeExportStates(ExportLayers.ExportLayer.Export_Layer, !playing && repeatable); | |
337 | + changeExportStates(ExportLayers.ExportLayer.All, !playing && repeatable); | |
333 | 338 | |
334 | 339 | |
335 | 340 | this.pauseButtonImage.switchAttribute(playing && paused); |
... | ... | @@ -365,12 +370,16 @@ public class ScreenManager : MonoBehaviour { |
365 | 370 | setExportContainerState(show_Layer); |
366 | 371 | setShareLayerState(show_Layer); |
367 | 372 | break; |
373 | + case ExportLayers.ExportLayer.OnLockExport: | |
374 | + onLockExport = show_Layer; | |
375 | + break; | |
368 | 376 | default: |
369 | 377 | onLockExport = false; |
370 | - setExportContainerState(false); | |
371 | - setExportLayerState(false); | |
378 | + setExportContainerState(show_Layer); | |
379 | + setExportLayerState(show_Layer); | |
372 | 380 | setProgressLayerState(false); |
373 | 381 | setDownloadLayerState(false); |
382 | + setDownloadProgressLayerState(false); | |
374 | 383 | setShareLayerState(false); |
375 | 384 | break; |
376 | 385 | ... | ... |