Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using GoogleARCore;
- using System.Collections.Generic;
- public class AppController : MonoBehaviour
- {
- private List<TrackedPlane> m_NewPlanes = new List<TrackedPlane>();
- private List<TrackedPlane> m_AllPlanes = new List<TrackedPlane>();
- private bool m_IsQuitting = false;
- // Use this for initialization
- void Start()
- {
- QuitOnConnectionErrors();
- }
- // Update is called once per frame
- void Update()
- {
- if (Session.Status != SessionStatus.Tracking)
- {
- const int lostTrackingSleepTimeout = 15;
- Screen.sleepTimeout = lostTrackingSleepTimeout;
- return;
- }
- Screen.sleepTimeout = SleepTimeout.NeverSleep;
- }
- private void QuitOnConnectionErrors()
- {
- if (m_IsQuitting)
- {
- return;
- }
- // Quit if ARCore was unable to connect and give Unity some time for the toast to appear.
- if (Session.Status == SessionStatus.ErrorPermissionNotGranted)
- {
- ShowAndroidToastMessage("Camera permission is needed to run this application.");
- m_IsQuitting = true;
- Invoke("_DoQuit", 0.5f);
- }
- else if (Session.Status.IsError())
- {
- ShowAndroidToastMessage("ARCore encountered a problem connecting. Please start the app again.");
- m_IsQuitting = true;
- Invoke("_DoQuit", 0.5f);
- }
- }
- private static void ShowAndroidToastMessage(string message)
- {
- AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
- AndroidJavaObject unityActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
- if (unityActivity != null)
- {
- AndroidJavaClass toastClass = new AndroidJavaClass("android.widget.Toast");
- unityActivity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
- {
- AndroidJavaObject toastObject = toastClass.CallStatic<AndroidJavaObject>("makeText", unityActivity,
- message, 0);
- toastObject.Call("show");
- }));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement