유니티(unity)
[c#/unity] 이미지 갤러리에 저장하기(with Native Gallery)
개발자 고포고
2024. 2. 27. 15:20
반응형
#어셋 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
반응형