No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

NGMediaReceiveCallbackAndroid.cs 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #if UNITY_EDITOR || UNITY_ANDROID
  2. using UnityEngine;
  3. namespace NativeGalleryNamespace
  4. {
  5. public class NGMediaReceiveCallbackAndroid : AndroidJavaProxy
  6. {
  7. private readonly NativeGallery.MediaPickCallback callback;
  8. private readonly NativeGallery.MediaPickMultipleCallback callbackMultiple;
  9. private readonly NGCallbackHelper callbackHelper;
  10. public NGMediaReceiveCallbackAndroid( NativeGallery.MediaPickCallback callback, NativeGallery.MediaPickMultipleCallback callbackMultiple ) : base( "com.yasirkula.unity.NativeGalleryMediaReceiver" )
  11. {
  12. this.callback = callback;
  13. this.callbackMultiple = callbackMultiple;
  14. callbackHelper = new GameObject( "NGCallbackHelper" ).AddComponent<NGCallbackHelper>();
  15. }
  16. [UnityEngine.Scripting.Preserve]
  17. public void OnMediaReceived( string path )
  18. {
  19. callbackHelper.CallOnMainThread( () => callback( !string.IsNullOrEmpty( path ) ? path : null ) );
  20. }
  21. [UnityEngine.Scripting.Preserve]
  22. public void OnMultipleMediaReceived( string paths )
  23. {
  24. string[] result = null;
  25. if( !string.IsNullOrEmpty( paths ) )
  26. {
  27. string[] pathsSplit = paths.Split( '>' );
  28. int validPathCount = 0;
  29. for( int i = 0; i < pathsSplit.Length; i++ )
  30. {
  31. if( !string.IsNullOrEmpty( pathsSplit[i] ) )
  32. validPathCount++;
  33. }
  34. if( validPathCount == 0 )
  35. pathsSplit = new string[0];
  36. else if( validPathCount != pathsSplit.Length )
  37. {
  38. string[] validPaths = new string[validPathCount];
  39. for( int i = 0, j = 0; i < pathsSplit.Length; i++ )
  40. {
  41. if( !string.IsNullOrEmpty( pathsSplit[i] ) )
  42. validPaths[j++] = pathsSplit[i];
  43. }
  44. pathsSplit = validPaths;
  45. }
  46. result = pathsSplit;
  47. }
  48. callbackHelper.CallOnMainThread( () => callbackMultiple( ( result != null && result.Length > 0 ) ? result : null ) );
  49. }
  50. }
  51. }
  52. #endif