Commit 80a713887bc686499ce6cd45daba99731ef1858a

Authored by Thiago Filipe Soares da Rocha
1 parent 82f815e8

Finish Share Function Bux Fix

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}
... ...
Assets/Scripts/Export Video/AndroidJavaUti.cs 0 → 100644
... ... @@ -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 +
... ...
Assets/Scripts/Export Video/AndroidJavaUti.cs.meta 0 → 100644
... ... @@ -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:
... ...
Assets/Scripts/Export Video/AndroidToast.cs 0 → 100644
... ... @@ -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 +}
... ...
Assets/Scripts/Export Video/AndroidToast.cs.meta 0 → 100644
... ... @@ -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
... ... @@ -10,6 +10,7 @@ public class ExportLayers{
10 10 Progress_Layer,
11 11 Share_Layer,
12 12 Progress_Download_Layer,
  13 + OnLockExport,
13 14 All
14 15 }
15 16 }
... ...
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  
... ...
Assets/Scripts/Export Video/FileContent.cs 0 → 100644
... ... @@ -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 +}
... ...
Assets/Scripts/Export Video/FileContent.cs.meta 0 → 100644
... ... @@ -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  
... ...