AndroidManager.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using UnityEngine;
  2. public class AndroidManager : MonoBehaviour
  3. {
  4. private class HapticFeedbackManager
  5. {
  6. #if UNITY_ANDROID && !UNITY_EDITOR
  7. private int HapticFeedbackConstantsKey;
  8. private AndroidJavaObject UnityPlayer;
  9. #endif
  10. public HapticFeedbackManager()
  11. {
  12. #if UNITY_ANDROID && !UNITY_EDITOR
  13. HapticFeedbackConstantsKey=new AndroidJavaClass("android.view.HapticFeedbackConstants").GetStatic<int>("VIRTUAL_KEY");
  14. UnityPlayer=new AndroidJavaClass ("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity").Get<AndroidJavaObject>("mUnityPlayer");
  15. //Alternative way to get the UnityPlayer:
  16. //int content=new AndroidJavaClass("android.R$id").GetStatic<int>("content");
  17. //new AndroidJavaClass ("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity").Call<AndroidJavaObject>("findViewById",content).Call<AndroidJavaObject>("getChildAt",0);
  18. #endif
  19. }
  20. public bool Execute()
  21. {
  22. #if UNITY_ANDROID && !UNITY_EDITOR
  23. return UnityPlayer.Call<bool> ("performHapticFeedback",HapticFeedbackConstantsKey);
  24. #endif
  25. return false;
  26. }
  27. }
  28. //Cache the Manager for performance
  29. private static HapticFeedbackManager mHapticFeedbackManager;
  30. public static bool HapticFeedback()
  31. {
  32. if (mHapticFeedbackManager == null)
  33. {
  34. mHapticFeedbackManager = new HapticFeedbackManager();
  35. }
  36. return mHapticFeedbackManager.Execute();
  37. }
  38. }