Blog

안드로이드에서 소프트키를 보여주지 않아야 할 경우가 있을 때 아래 코드로 파일을 하나 생성 해 줍니다.


using UnityEngine;

public class DisableSystemUI {
	#if UNITY_ANDROID
	static AndroidJavaObject activityInstance;
	static AndroidJavaObject windowInstance;
	static AndroidJavaObject viewInstance;
	
	const int SYSTEM_UI_FLAG_HIDE_NAVIGATION = 2;
	const int SYSTEM_UI_FLAG_LAYOUT_STABLE = 256;
	const int SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION = 512;
	const int SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN = 1024;
	const int SYSTEM_UI_FLAG_IMMERSIVE = 2048;
	const int SYSTEM_UI_FLAG_IMMERSIVE_STICKY = 4096;
	const int SYSTEM_UI_FLAG_FULLSCREEN = 4;
	
	public delegate void RunPtr();
	
	public static void Run() {
		if (viewInstance != null) {
			viewInstance.Call("setSystemUiVisibility", 
			                  SYSTEM_UI_FLAG_LAYOUT_STABLE
			                  | SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
			                  | SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
			                  | SYSTEM_UI_FLAG_HIDE_NAVIGATION
			                  | SYSTEM_UI_FLAG_FULLSCREEN
			                  | SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
		}
		
	}
	#endif  

	public static void DisableNavUI() {
		if (Application.platform != RuntimePlatform.Android)
			return;
		#if UNITY_ANDROID
		using (AndroidJavaClass unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {
			activityInstance = unityPlayerClass.GetStatic("currentActivity");
			windowInstance = activityInstance.Call("getWindow");
			viewInstance = windowInstance.Call("getDecorView");
			
			AndroidJavaRunnable RunThis;
			RunThis = new AndroidJavaRunnable(new RunPtr(Run));
			activityInstance.Call("runOnUiThread", RunThis);
		}
		#endif
	}
}


그리고 처음 호출하는 부분에서 

DisableSystemUI.DisableNavUI();

를 불러주면 소프트키를 숨겨줍니다.

해당 폰에서 소프트키를 다시 볼려면 화면 상단을 아래로 스와이프를 해 주면 됩니다.

신고

Comment +2