説明なし
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

NGMediaReceiveCallbackAndroid.cs 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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. public void OnMediaReceived( string path )
  17. {
  18. callbackHelper.CallOnMainThread( () => callback( !string.IsNullOrEmpty( path ) ? path : null ) );
  19. }
  20. public void OnMultipleMediaReceived( string paths )
  21. {
  22. string[] result = null;
  23. if( !string.IsNullOrEmpty( paths ) )
  24. {
  25. string[] pathsSplit = paths.Split( '>' );
  26. int validPathCount = 0;
  27. for( int i = 0; i < pathsSplit.Length; i++ )
  28. {
  29. if( !string.IsNullOrEmpty( pathsSplit[i] ) )
  30. validPathCount++;
  31. }
  32. if( validPathCount == 0 )
  33. pathsSplit = new string[0];
  34. else if( validPathCount != pathsSplit.Length )
  35. {
  36. string[] validPaths = new string[validPathCount];
  37. for( int i = 0, j = 0; i < pathsSplit.Length; i++ )
  38. {
  39. if( !string.IsNullOrEmpty( pathsSplit[i] ) )
  40. validPaths[j++] = pathsSplit[i];
  41. }
  42. pathsSplit = validPaths;
  43. }
  44. result = pathsSplit;
  45. }
  46. callbackHelper.CallOnMainThread( () => callbackMultiple( ( result != null && result.Length > 0 ) ? result : null ) );
  47. }
  48. }
  49. }
  50. #endif