티스토리 뷰

반응형

 

#어셋 Native Gallery 이용

https://assetstore.unity.com/packages/tools/integration/native-gallery-for-android-ios-112630

 

Native Gallery for Android & iOS | 기능 통합 | Unity Asset Store

Use the Native Gallery for Android & iOS from yasirkula on your next project. Find this integration tool & more on the Unity Asset Store.

assetstore.unity.com

 

#코드

  public RawImage img;
    private void Start()
    {
        if (!Permission.HasUserAuthorizedPermission(Permission.ExternalStorageWrite))
        {
            Permission.RequestUserPermission(Permission.ExternalStorageWrite);
        }
    }


    public void CaptureAndSave()
    {
        StartCoroutine(CaptureScreenshotAndSave());
    }
    Texture2D screenImage;
    private IEnumerator CaptureScreenshotAndSave()
    {
        yield return new WaitForEndOfFrame();
        screenImage = ScreenCapture.CaptureScreenshotAsTexture();   
        img.texture = screenImage;
        NativeGallery.Permission permission = NativeGallery.CheckPermission(NativeGallery.PermissionType.Write,NativeGallery.MediaType.Image);

        //권한 확인 밑 다이얼로그띄우기
        if (permission == NativeGallery.Permission.Denied)
        {
            if (NativeGallery.CanOpenSettings())
            {
                NativeGallery.OpenSettings();
            }
        }

        NativeGallery.SaveImageToGallery(screenImage, "album", "test_folder", Callback);
    }

    private void Callback(bool success, string path)
    {
        if (success)
        {
           
        }
        Destroy(screenImage);
    }

 

#Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.unity3d.player"
    xmlns:tools="http://schemas.android.com/tools">
	<!-- 다음 권한은 외부 저장소에 캡처된 이미지를 저장하기 위해 필요합니다. -->
	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

	<!-- 캡처된 이미지를 읽어들이기 위해 외부 저장소의 읽기 권한이 필요할 수 있습니다. -->
	<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

	<!-- 캡처된 이미지를 온라인으로 공유하거나 업로드하기 위해 인터넷 액세스 권한이 필요할 수 있습니다. -->
	<uses-permission android:name="android.permission.INTERNET" />

	<!-- 네트워크 상태를 확인하여 온라인 작업을 수행하기 위해 필요할 수 있습니다. -->
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

	<!-- 다른 앱 위에 레이어를 표시하여 화면을 캡처하기 위해 시스템 경고 창에 대한 권한이 필요할 수 있습니다. -->
	<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <application android:requestLegacyExternalStorage="true" >
        <activity android:name="com.unity3d.player.UnityPlayerActivity"
                  android:theme="@style/UnityThemeSelector">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
        </activity>
    </application>
</manifest>

 

#Unity #andorid #ios #갤러리 #gallery

반응형
댓글
반응형