개요

  • 제목_ 캐릭터 옷 갈아입히기(ChangeClothesYH)
  • 기간_ 2020-05-24 ~ 2021-06-02 (2주)
  • 팀원_ 2명(Collabo)
  • 결과_ APK Build

기획의도

  • 2D아바타 커스터마이징 시스템.
  • 유니티에서 안드로이드 네이티브 코드 사용.
  • 안드로이드 내부 저장소에 접근하여 파일 쓰기.

Code

안드로이드 객체 생성.
var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject _activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");


Texture2D 데이터를 안드로이드 객체로 변환.
public static AndroidJavaObject Texture2DToAndroidBitmap(Texture2D texture2D)
{
    byte[] encoded = texture2D.EncodeToPNG();
    using (var bf = new AndroidJavaClass("android.graphics.BitmapFactory"))
    {
        return bf.CallStatic<AndroidJavaObject>("decodeByteArray", encoded, 0, encoded.Length);
    }
}


로컬저장소 쓰기 접근.
private const string MediaStoreImagesMediaClass = "android.provider.MediaStore$Images$Media";
public static void SaveImageToGallery(Texture2D texture2D, string title, string description)
{
    using (var mediaClass = new AndroidJavaClass(MediaStoreImagesMediaClass))
    {
        using (var cr = Activity.Call<AndroidJavaObject>("getContentResolver"))
        {
            var image = Texture2DToAndroidBitmap(texture2D);
            mediaClass.CallStatic<string>("insertImage", cr, image, title, description);
        }
    }
}