diff --git a/Assets/Plugins/Android/AndroidManifest.xml b/Assets/Plugins/Android/AndroidManifest.xml index 8d4cdf8..89c3a4c 100644 --- a/Assets/Plugins/Android/AndroidManifest.xml +++ b/Assets/Plugins/Android/AndroidManifest.xml @@ -8,6 +8,7 @@ + + \ No newline at end of file diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index c9f1106..0bfcb26 100644 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -515,7 +515,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &126648712 RectTransform: m_ObjectHideFlags: 0 @@ -573,7 +573,18 @@ MonoBehaviour: m_TargetGraphic: {fileID: 126648714} m_OnClick: m_PersistentCalls: - m_Calls: [] + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null --- !u!114 &126648714 @@ -1482,48 +1493,6 @@ CanvasRenderer: type: 2} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 228512393} ---- !u!1 &239812357 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 133590, guid: 5ccb0ba277304a14b9bb8d4e34161675, type: 2} - m_PrefabInternal: {fileID: 0} - serializedVersion: 4 - m_Component: - - 224: {fileID: 239812358} - - 222: {fileID: 239812359} - m_Layer: 5 - m_Name: container - m_TagString: progress - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &239812358 -RectTransform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 22474260, guid: 5ccb0ba277304a14b9bb8d4e34161675, - type: 2} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 239812357} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0.0000000121053745} - m_LocalScale: {x: 0.9999999, y: 1, z: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_Children: [] - m_Father: {fileID: 1530408465} - m_RootOrder: 4 - m_AnchorMin: {x: 0, y: 1.7} - m_AnchorMax: {x: 0.97, y: 2.2} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -237.39001, y: 0} - m_Pivot: {x: 1, y: 0} ---- !u!222 &239812359 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 22202710, guid: 5ccb0ba277304a14b9bb8d4e34161675, - type: 2} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 239812357} --- !u!1 &253021235 GameObject: m_ObjectHideFlags: 0 @@ -1883,11 +1852,11 @@ RectTransform: - {fileID: 837040462} - {fileID: 126648712} m_Father: {fileID: 1530408465} - m_RootOrder: 5 + m_RootOrder: 3 m_AnchorMin: {x: 0, y: 1.7} m_AnchorMax: {x: 0.97, y: 2.2} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -368.90573, y: 0} + m_SizeDelta: {x: -239.87144, y: 0} m_Pivot: {x: 1, y: 0} --- !u!222 &291722905 CanvasRenderer: @@ -3989,7 +3958,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 1530408465} - m_RootOrder: 3 + m_RootOrder: 2 m_AnchorMin: {x: 0, y: 1.7} m_AnchorMax: {x: 0.97, y: 2.2} m_AnchoredPosition: {x: 0, y: 0} @@ -4033,7 +4002,18 @@ MonoBehaviour: m_TargetGraphic: {fileID: 581668679} m_OnClick: m_PersistentCalls: - m_Calls: [] + m_Calls: + - m_Target: {fileID: 210788816} + m_MethodName: OnShareVideo + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null --- !u!114 &581668679 @@ -6175,119 +6155,6 @@ CanvasRenderer: type: 2} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 930426942} ---- !u!1 &935965592 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 133590, guid: 5ccb0ba277304a14b9bb8d4e34161675, type: 2} - m_PrefabInternal: {fileID: 0} - serializedVersion: 4 - m_Component: - - 224: {fileID: 935965593} - - 222: {fileID: 935965596} - - 114: {fileID: 935965595} - - 114: {fileID: 935965594} - m_Layer: 5 - m_Name: b_close - m_TagString: progress - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!224 &935965593 -RectTransform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 22474260, guid: 5ccb0ba277304a14b9bb8d4e34161675, - type: 2} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 935965592} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_Children: [] - m_Father: {fileID: 1530408465} - m_RootOrder: 2 - m_AnchorMin: {x: 0, y: 1.8} - m_AnchorMax: {x: 0.97, y: 2.1} - m_AnchoredPosition: {x: 0, y: -13} - m_SizeDelta: {x: 0, y: 26} - m_Pivot: {x: 1, y: 0} ---- !u!114 &935965594 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 935965592} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 935965595} - m_OnClick: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, - Culture=neutral, PublicKeyToken=null ---- !u!114 &935965595 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 11451830, guid: 5ccb0ba277304a14b9bb8d4e34161675, - type: 2} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 935965592} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_Sprite: {fileID: 21300000, guid: 6495de8ff9a26c94e9d42fada0a56630, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 ---- !u!222 &935965596 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 22202710, guid: 5ccb0ba277304a14b9bb8d4e34161675, - type: 2} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 935965592} --- !u!1 &948041467 GameObject: m_ObjectHideFlags: 0 @@ -8562,7 +8429,18 @@ MonoBehaviour: m_TargetGraphic: {fileID: 1182541897} m_OnClick: m_PersistentCalls: - m_Calls: [] + m_Calls: + - m_Target: {fileID: 210788816} + m_MethodName: OnDownloadCancel + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null --- !u!114 &1182541897 @@ -11439,9 +11317,7 @@ RectTransform: m_Children: - {fileID: 1059619783} - {fileID: 160532052} - - {fileID: 935965593} - {fileID: 581668677} - - {fileID: 239812358} - {fileID: 291722902} - {fileID: 1910480222} m_Father: {fileID: 1620867682} @@ -13459,7 +13335,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &1910480222 RectTransform: m_ObjectHideFlags: 0 @@ -13474,11 +13350,11 @@ RectTransform: m_Children: - {fileID: 1182541895} m_Father: {fileID: 1530408465} - m_RootOrder: 6 + m_RootOrder: 4 m_AnchorMin: {x: 0, y: 1.7} m_AnchorMax: {x: 0.97, y: 2.2} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} + m_SizeDelta: {x: -239.87144, y: 0} m_Pivot: {x: 1, y: 0} --- !u!114 &1910480223 MonoBehaviour: @@ -13505,7 +13381,7 @@ MonoBehaviour: m_PreserveAspect: 1 m_FillCenter: 1 m_FillMethod: 4 - m_FillAmount: 1 + m_FillAmount: 0 m_FillClockwise: 1 m_FillOrigin: 0 --- !u!222 &1910480224 @@ -16059,7 +15935,6 @@ MonoBehaviour: progressLayer: {fileID: 291722901} downloadLayer: {fileID: 160532051} downloadProgressLayer: {fileID: 1910480221} - closeLayer: {fileID: 935965592} textButton: {fileID: 930426942} pauseButton: {fileID: 440527253} avatarCollider: {fileID: 535548073} diff --git a/Assets/Scripts/Export Video/AndroidJavaUti.cs b/Assets/Scripts/Export Video/AndroidJavaUti.cs new file mode 100644 index 0000000..8877616 --- /dev/null +++ b/Assets/Scripts/Export Video/AndroidJavaUti.cs @@ -0,0 +1,52 @@ +using UnityEngine; +using System.Collections; +using System; + +public class AndroidJavaUti{ + + + private static string m_pkgName; + private static string m_sdCardPath; + public static AndroidJavaObject Activity + { + get + { + AndroidJavaClass jcPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); + return jcPlayer.GetStatic("currentActivity"); + } + } + + + public static string CurrentPkgName + { + get + { + if (m_pkgName == null) + m_pkgName = Activity.Call("getPackageName"); + return m_pkgName; + } + } + + + public static string CurrentSDCardPath + { + get + { + if (m_sdCardPath == null) + { + AndroidJavaClass jc = new AndroidJavaClass("android.os.Environment"); + IntPtr getExternalStorageDirectoryMethod = AndroidJNI.GetStaticMethodID(jc.GetRawClass(), "getExternalStorageDirectory", "()Ljava/io/File;"); + IntPtr file = AndroidJNI.CallStaticObjectMethod(jc.GetRawClass(), getExternalStorageDirectoryMethod, new jvalue[] { }); + IntPtr getPathMethod = AndroidJNI.GetMethodID(AndroidJNI.GetObjectClass(file), "getPath", "()Ljava/lang/String;"); + IntPtr path = AndroidJNI.CallObjectMethod(file, getPathMethod, new jvalue[] { }); + m_sdCardPath = AndroidJNI.GetStringUTFChars(path); + AndroidJNI.DeleteLocalRef(file); + AndroidJNI.DeleteLocalRef(path); + Debug.Log("m_sdCardPath = " + m_sdCardPath); + } + return m_sdCardPath; + } + + } +} + diff --git a/Assets/Scripts/Export Video/AndroidJavaUti.cs.meta b/Assets/Scripts/Export Video/AndroidJavaUti.cs.meta new file mode 100644 index 0000000..35c512d --- /dev/null +++ b/Assets/Scripts/Export Video/AndroidJavaUti.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 437223d76094ce840a68de8b6ea60fe8 +timeCreated: 1486222942 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Export Video/AndroidToast.cs b/Assets/Scripts/Export Video/AndroidToast.cs new file mode 100644 index 0000000..d308366 --- /dev/null +++ b/Assets/Scripts/Export Video/AndroidToast.cs @@ -0,0 +1,25 @@ +using UnityEngine; +using System.Collections; + +public class AndroidToast : MonoBehaviour +{ + AndroidJavaObject currentActivity; + AndroidJavaClass UnityPlayer; + AndroidJavaObject context; + + + public void showToast(string toastString){ + if (Application.platform == RuntimePlatform.Android) + { + UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); + currentActivity = UnityPlayer.GetStatic("currentActivity"); + context = currentActivity.Call("getApplicationContext"); + + AndroidJavaClass Toast = new AndroidJavaClass("android.widget.Toast"); + AndroidJavaObject javaString = new AndroidJavaObject("java.lang.String", toastString); + AndroidJavaObject toast = Toast.CallStatic("makeText", context, javaString, Toast.GetStatic("LENGTH_SHORT")); + toast.Call("show"); + } + } + +} diff --git a/Assets/Scripts/Export Video/AndroidToast.cs.meta b/Assets/Scripts/Export Video/AndroidToast.cs.meta new file mode 100644 index 0000000..7e8b450 --- /dev/null +++ b/Assets/Scripts/Export Video/AndroidToast.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f4af3594fb207274dbd1d303e7079acb +timeCreated: 1486225591 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Export Video/ExportLayers.cs b/Assets/Scripts/Export Video/ExportLayers.cs index e21c14d..f02062d 100644 --- a/Assets/Scripts/Export Video/ExportLayers.cs +++ b/Assets/Scripts/Export Video/ExportLayers.cs @@ -10,6 +10,7 @@ public class ExportLayers{ Progress_Layer, Share_Layer, Progress_Download_Layer, + OnLockExport, All } } diff --git a/Assets/Scripts/Export Video/ExportVideo.cs b/Assets/Scripts/Export Video/ExportVideo.cs index d11c317..831f8b6 100644 --- a/Assets/Scripts/Export Video/ExportVideo.cs +++ b/Assets/Scripts/Export Video/ExportVideo.cs @@ -32,14 +32,19 @@ public class ExportVideo : MonoBehaviour { public ScreenManager screenManager; private MobileNativeDialog nativeDialog; - public static string gloss = ""; - private const string SERVER_URL = "http://traducao.vlibras.gov.br/translate?text="; + public static string gloss = "Gloss"; + private string currentGloss = "CurrentGloss"; + private string currentTime = ""; + private const string SERVER_URL = "http://150.165.205.38/video/"; private string title = "Download"; - private string message = "Para compartilhar é preciso realizar o download do vídeo. Informação 1: N mb."; + private string message = "Para compartilhar é preciso realizar o download do vídeo. Tamanho do Download: "; private string yesOp = "DOWNLOAD"; private string noOp = "CANCELAR"; - private string videoSize = ""; + private float videoSize = 0; + private string videoId = ""; + private bool CancelDownload = false; + private byte[] videoContent = null; @@ -53,10 +58,7 @@ public class ExportVideo : MonoBehaviour { Debug.Log("onClickShare pressed"); screenManager.changeExportStates(ExportLayers.ExportLayer.Export_Layer,false); screenManager.changeExportStates(ExportLayers.ExportLayer.Progress_Layer, true); - MediaShareAndroid mediaShare = new MediaShareAndroid(); - mediaShare.ShareActivity("Download", "Baixe", "Exemplo"); - - + StartCoroutine("requestVideoInfo"); Debug.Log("Hiding export button and showing progress loading"); } @@ -80,11 +82,8 @@ public class ExportVideo : MonoBehaviour { { Debug.Log("Asking for permition to download"); - nativeDialog = new MobileNativeDialog(title, message, yesOp, noOp); + nativeDialog = new MobileNativeDialog(title, message + ((videoSize/1024f)/1024f).ToString("0.00") + " MB.", yesOp, noOp); nativeDialog.OnComplete = OnComplete; - - - } @@ -97,11 +96,14 @@ public class ExportVideo : MonoBehaviour { if(result == MNDialogResult.YES) { Debug.Log("User pressed yes"); + StartCoroutine("videoDownload"); + screenManager.changeExportStates(ExportLayers.ExportLayer.Download_Layer, false); + screenManager.changeExportStates(ExportLayers.ExportLayer.Progress_Download_Layer, true); }else if(result == MNDialogResult.NO) { Debug.Log("User pressed no"); - screenManager.changeExportStates(ExportLayers.ExportLayer.All, false); - screenManager.changeExportStates(ExportLayers.ExportLayer.Export_Layer, true); + screenManager.changeExportStates(ExportLayers.ExportLayer.All, true); + } } @@ -117,65 +119,131 @@ public class ExportVideo : MonoBehaviour { public void OnDownloadCancel() { Debug.Log("User canceled the download, resetting states to default"); - screenManager.changeExportStates(ExportLayers.ExportLayer.All, false); - screenManager.changeExportStates(ExportLayers.ExportLayer.Share_Layer, true); + CancelDownload = true; + screenManager.changeExportStates(ExportLayers.ExportLayer.All, true); + videoContent = null; + + } + public void OnShareVideo() + { + Debug.Log("Sharing video content"); + if(gloss == currentGloss) + { + if (videoContent != null) + new MediaShareAndroid().ShareActivity(videoContent,currentTime); + else + { + new AndroidToast().showToast("Erro ao compartilhar vídeo"); + } + + }else + { + currentGloss = gloss; + currentTime = System.DateTime.Now.ToString("yyyy-MM-dd_HH:mm:ss"); - private IEnumerator requestVideoInfo(string gloss) - { + if (videoContent != null) + new MediaShareAndroid().ShareActivity(videoContent, currentTime); + else + { + new AndroidToast().showToast("Erro ao compartilhar vídeo"); + } + + } + } + + + private IEnumerator videoDownload() + { + WWW DownloadVideo = new WWW(SERVER_URL + videoId); + while (!CancelDownload && !DownloadVideo.isDone) + { + screenManager.updateProgressDownloadSprite(DownloadVideo.progress); + yield return null; + } + + if (!CancelDownload) + { + if (DownloadVideo.bytesDownloaded > 0 && DownloadVideo.bytesDownloaded <= videoSize) + { + videoContent = DownloadVideo.bytes; + + OnDownloadFinished(); + }else + { + new AndroidToast().showToast("Erro ao efetuar download. Tente novamente"); + screenManager.changeExportStates(ExportLayers.ExportLayer.All, true); + } + }else + { + CancelDownload = false; + yield break; + } + } + + private IEnumerator requestVideoInfo() + { + + WWWForm JsonRequest = new WWWForm(); + JsonRequest.AddField("gloss", gloss); + WWW videoInfoRequest = new WWW(SERVER_URL,JsonRequest); - WWW videoInfoRequest = new WWW(SERVER_URL + WWW.EscapeURL(gloss)); - PlayerLogger.Log("PM", "t", "Gloss: " + gloss); - PlayerLogger.Log("PM", "t", "Request: " + SERVER_URL + WWW.EscapeURL(gloss)); + + PlayerLogger.Log("ExportVideo", "requestVideoInfo", "Request for: " + SERVER_URL); + + yield return WaitForResponse(videoInfoRequest); - yield return WaitForResponse(videoInfoRequest); + try { if (!videoInfoRequest.isDone) { - this.screenManager.showConnectionErrorDialog( - PlayerManager.ERROR_STATUS_MESSAGE.CONNECTION_TIMEOUT_FAILURE); - PlayerLogger.Log("PM", "t", "Timeout."); + screenManager.changeExportStates(ExportLayers.ExportLayer.All, true); + new AndroidToast().showToast("Erro de conexão, tenta novamente."); + PlayerLogger.Log("ExportVideo", "requestVideoInfo", "TimeOut"); } else if (videoInfoRequest.error != null) { - this.screenManager.showConnectionErrorDialog( - PlayerManager.ERROR_STATUS_MESSAGE.INTERNET_CONNECTION_FAILURE); - - PlayerLogger.Log("PM", "t", "(WWW) Error: " + videoInfoRequest.error); + + screenManager.changeExportStates(ExportLayers.ExportLayer.All, true); + new AndroidToast().showToast("Erro de conexão, tenta novamente."); + PlayerLogger.Log("ExportVideo", "requestVideoInfo", "(WWW) Error: " + videoInfoRequest.error); } else if (videoInfoRequest.responseHeaders.Count == 0) { - PlayerLogger.Log("PM", "t", "Unsuccessful answer (0)."); - - this.screenManager.showConnectionErrorDialog( - PlayerManager.ERROR_STATUS_MESSAGE.TRANSLATOR_CONNECTION_FAILURE); + PlayerLogger.Log("ExportVideo", "requestVideoInfo", "(WWW) Unsucessful Answer"); + new AndroidToast().showToast("Erro de conexão, tenta novamente."); + screenManager.changeExportStates(ExportLayers.ExportLayer.All, true); + } else if (!videoInfoRequest.responseHeaders["STATUS"].Contains("200")) { - PlayerLogger.Log("PM", "t", "Unsuccessful answer (" + videoInfoRequest.responseHeaders["STATUS"] + ")."); - - this.screenManager.showConnectionErrorDialog( - PlayerManager.ERROR_STATUS_MESSAGE.TRANSLATOR_CONNECTION_FAILURE); + new AndroidToast().showToast("Erro de conexão, tenta novamente."); + PlayerLogger.Log("ExportVideo", "requestVideoInfo", "Unsuccessful answer (" + videoInfoRequest.responseHeaders["STATUS"] + ")."); + screenManager.changeExportStates(ExportLayers.ExportLayer.All, true); + } else if (String.IsNullOrEmpty(videoInfoRequest.text)) { - PlayerLogger.Log("PM", "t", "Empty answer."); + new AndroidToast().showToast("Erro de conexão, tenta novamente."); + screenManager.changeExportStates(ExportLayers.ExportLayer.All, true); + PlayerLogger.Log("ExportVideo", "requestVideoInfo", "Empty answer."); } else { - PlayerLogger.Log("PM", "t", "Answer: " + videoInfoRequest.text); - - gloss = videoInfoRequest.text; - - + PlayerLogger.Log("ExportVideo", "requestVideoInfo", "Answer: " + videoInfoRequest.text); + FileContent fileContent = new FileContent(); + fileContent = FileContent.CreateFromJSON(videoInfoRequest.text); + videoId = fileContent.file; + videoSize = float.Parse(fileContent.size); + OnFinishGetVideoInfo(); yield break; } @@ -192,7 +260,7 @@ public class ExportVideo : MonoBehaviour { public IEnumerator WaitForResponse(WWW www, Events.RequestSuccess success, Events.RequestError error) { - yield return Methods.WaitForResponse(www, 20f, success, error); + yield return Methods.WaitForResponse(www, 60f, success, error); } diff --git a/Assets/Scripts/Export Video/FileContent.cs b/Assets/Scripts/Export Video/FileContent.cs new file mode 100644 index 0000000..48052d5 --- /dev/null +++ b/Assets/Scripts/Export Video/FileContent.cs @@ -0,0 +1,14 @@ +using UnityEngine; +using System.Collections; + +public class FileContent { + + public string file; + public string size; + + + public static FileContent CreateFromJSON(string jsonString) + { + return JsonUtility.FromJson(jsonString); + } +} diff --git a/Assets/Scripts/Export Video/FileContent.cs.meta b/Assets/Scripts/Export Video/FileContent.cs.meta new file mode 100644 index 0000000..b858cf1 --- /dev/null +++ b/Assets/Scripts/Export Video/FileContent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8b48ac84824290f47a90effd57b97d84 +timeCreated: 1486224084 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Export Video/MediaShareAndroid.cs b/Assets/Scripts/Export Video/MediaShareAndroid.cs index 413bc85..dfa760d 100644 --- a/Assets/Scripts/Export Video/MediaShareAndroid.cs +++ b/Assets/Scripts/Export Video/MediaShareAndroid.cs @@ -23,18 +23,38 @@ using System.IO; public class MediaShareAndroid : MonoBehaviour { - private string MediaType = "text/plain"; + private string MediaType = "video/*"; private string TitleMessage = "Compartilhar Vídeo"; private string SubtitleMessage = "VLibras"; - private string Media = "Compartilhar"; - private string path = Application.persistentDataPath + "/expl.jpg"; + private string AndroidPath = AndroidJavaUti.CurrentSDCardPath; + private string Vlibras = "/VLibras"; + private string FileName = "/VLibrasVideo_"; - public void ShareActivity(string title, string subject, string body) + private void WriteOnAndroid(byte[] videoContent) + { + if(!Directory.Exists(AndroidPath + Vlibras)) + { + Directory.CreateDirectory(AndroidPath + Vlibras); + + + } + if (!Directory.Exists(AndroidPath + Vlibras + FileName)) + File.WriteAllBytes(AndroidPath + Vlibras + FileName, videoContent); + + + + } + + + + public void ShareActivity(byte[] videoContent, string CurrentTime) { #if UNITY_ANDROID + FileName += CurrentTime + ".mp4"; + WriteOnAndroid(videoContent); // Create Refernece of AndroidJavaClass class for intent AndroidJavaClass intentClass = new AndroidJavaClass("android.content.Intent"); // Create Refernece of AndroidJavaObject class intent @@ -47,18 +67,18 @@ public class MediaShareAndroid : MonoBehaviour //Set title of action or intent intentObject.Call("putExtra", intentClass.GetStatic("EXTRA_TITLE"), TitleMessage); - + /* // Set actual data which you want to share intentObject.Call("putExtra", intentClass.GetStatic("EXTRA_TEXT"), Media); AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject currentActivity = unity.GetStatic("currentActivity"); // Invoke android activity for passing intent to share data currentActivity.Call("startActivity", intentObject); - + */ - /* AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri"); - AndroidJavaClass fileClass = new AndroidJavaClass("java.io.File"); - AndroidJavaObject fileObject = new AndroidJavaObject("java.io.File", path);// Set Image Path Here + AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri"); + + AndroidJavaObject fileObject = new AndroidJavaObject("java.io.File", AndroidPath + Vlibras + FileName);// Set Image Path Here AndroidJavaObject uriObject = uriClass.CallStatic("fromFile", fileObject); // string uriPath = uriObject.Call("getPath"); bool fileExist = fileObject.Call("exists"); @@ -69,7 +89,8 @@ public class MediaShareAndroid : MonoBehaviour AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject currentActivity = unity.GetStatic("currentActivity"); currentActivity.Call("startActivity", intentObject); - */ + new AndroidToast().showToast("Vídeo salvo em /Vlibras"); + #endif } } diff --git a/Assets/Scripts/PlayerManager.cs b/Assets/Scripts/PlayerManager.cs index f2ed639..15c6d73 100644 --- a/Assets/Scripts/PlayerManager.cs +++ b/Assets/Scripts/PlayerManager.cs @@ -91,10 +91,12 @@ public class PlayerManager : GenericPlayerManager { this.dictWord = word; base.gloss = word; + base.playNow(word); ExportVideo.gloss = word; + this.screenManager.changeExportStates(ExportLayers.ExportLayer.OnLockExport, false); - this.screenManager.hideScreen(); + this.screenManager.hideScreen(); this.screenManager.setPauseMenuState(false); } @@ -105,8 +107,9 @@ public class PlayerManager : GenericPlayerManager { string text = translateScreenText.text; translateScreenText.text = ""; + this.screenManager.changeExportStates(ExportLayers.ExportLayer.OnLockExport, false); - StartCoroutine("translate", text); + StartCoroutine("translate", text); this.screenManager.setPauseMenuState(false); } @@ -277,6 +280,7 @@ public class PlayerManager : GenericPlayerManager { base.gloss = gloss; ExportVideo.gloss = gloss; + base.playNow(base.gloss); diff --git a/Assets/Scripts/UI/ScreenManager.cs b/Assets/Scripts/UI/ScreenManager.cs index c9ca7ab..044a109 100644 --- a/Assets/Scripts/UI/ScreenManager.cs +++ b/Assets/Scripts/UI/ScreenManager.cs @@ -31,7 +31,7 @@ public class ScreenManager : MonoBehaviour { public GameObject progressLayer; public GameObject downloadLayer; public GameObject downloadProgressLayer; - public GameObject closeLayer; + private bool onLockExport = false; @@ -307,7 +307,7 @@ public class ScreenManager : MonoBehaviour { public void setDownloadProgressLayerState(bool active) { this.downloadProgressLayer.SetActive(active); - this.closeLayer.SetActive(active); + } public void setShareLayerState(bool active) @@ -322,6 +322,11 @@ public class ScreenManager : MonoBehaviour { this.pauseButton.SetActive( ! active); } + public void updateProgressDownloadSprite(float progress) + { + downloadProgressLayer.GetComponent().fillAmount = progress; + } + public void changeStates(bool playing, bool paused, bool repeatable) { @@ -329,7 +334,7 @@ public class ScreenManager : MonoBehaviour { setPauseMenuState(playing && paused); setRepeatLayerState( ! playing && repeatable); if(!onLockExport) - changeExportStates(ExportLayers.ExportLayer.Export_Layer, !playing && repeatable); + changeExportStates(ExportLayers.ExportLayer.All, !playing && repeatable); this.pauseButtonImage.switchAttribute(playing && paused); @@ -365,12 +370,16 @@ public class ScreenManager : MonoBehaviour { setExportContainerState(show_Layer); setShareLayerState(show_Layer); break; + case ExportLayers.ExportLayer.OnLockExport: + onLockExport = show_Layer; + break; default: onLockExport = false; - setExportContainerState(false); - setExportLayerState(false); + setExportContainerState(show_Layer); + setExportLayerState(show_Layer); setProgressLayerState(false); setDownloadLayerState(false); + setDownloadProgressLayerState(false); setShareLayerState(false); break; -- libgit2 0.21.2