Iniciar el servicio android desde el código Unity3D
En mi aplicación Unity3D para Android necesito iniciar un servicio, que se ejecutará en segundo plano. No puedo entender cómo puedo hacerlo. El método startService () tiene que ser invocado en una actividad, pero no sé cómo pasar la actividad de unidad actual de script de unidad a mi complemento android. Y no he encontrado ninguna manera de obtener la actividad en un método estático y ejecutar startService () en él.
Por lo que entiendo la secuencia, necesito obtener la actividad principal de Unity3D y comenzar el servicio de ella.
- En android Gear Vr, ¿es posible lanzar una aplicación normalmente y luego hacerla pasar a Unity / VR cuando el usuario hace clic en la opción?
- ¿Cómo puede crear pantalla táctil android scroll en unity3d?
- Google App invita a Unity3D Plugin Json File Location
- Integre la vista Unity3d en la actividad de Android
- ¿La API del complemento de servicios de Google Play de Unity no está sincronizada con la función de interfaz de usuario de Show Leaderboard?
Mi clase que se supone que debe llamar al servicio.
public final class StatusCheckStarter { public static void StartCheckerService() { startService(new Intent(this, CheckService.class)); } }
Este código no funciona, porque "No se puede resolver el método startService" y no tengo nada que pasar en este argumento. Necesito obtener la actividad actual.
- Cómo ocultar InputField caja de entrada adicional en unity3d
- Frecuencia de fotogramas constante y probablemente inexacta
- Unity frente a Android frente a la cámara WTF bug
- ¿Qué es UnityPlayerActivity, UnityPlayerNativeActivity, UnityPlayerProxyActivity?
- Construyendo un juego en Mobile. ¿Nativo o motor?
- Unity Camera Patch
- La aplicación es incompatible con todos tus dispositivos
- ¿La API social de Unity necesita algunos complementos para Android?
A continuación se presentan dos formas de enviar instancia / referencia de la actividad al complemento de Java que no utiliza la función onCreate
ni se extiende desde UnityPlayerActivity
.
Método 1 : Enviar una referencia de Activity
una vez y almacenarla en una variable estática en Java para volver a ser habitual:
Java :
public final class StatusCheckStarter { static Activity myActivity; // Called From C# to get the Activity Instance public static void receiveActivityInstance(Activity tempActivity) { myActivity = tempActivity; } public static void StartCheckerService() { myActivity.startService(new Intent(myActivity, CheckService.class)); } }
C # :
AndroidJavaClass unityClass; AndroidJavaObject unityActivity; AndroidJavaClass customClass; void Start() { //Replace with your full package name sendActivityReference("com.example.StatusCheckStarter"); //Now, start service startService(); } void sendActivityReference(string packageName) { unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); unityActivity = unityClass.GetStatic<AndroidJavaObject>("currentActivity"); customClass = new AndroidJavaClass(packageName); customClass.CallStatic("receiveActivityInstance", unityActivity); } void startService() { customClass.CallStatic("StartCheckerService"); }
Método 2 : Enviar referencia de Activity
en cada llamada de función.
Java :
public final class StatusCheckStarter { public static void StartCheckerService(Activity tempActivity) { tempActivity.startService(new Intent(tempActivity, CheckService.class)); } }
C # :
void Start() { //Replace with your full package name startService("com.example.StatusCheckStarter"); } void startService(string packageName) { AndroidJavaClass unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject unityActivity = unityClass.GetStatic<AndroidJavaObject>("currentActivity"); AndroidJavaClass customClass = new AndroidJavaClass(packageName); customClass.CallStatic("StartCheckerService", unityActivity); }
Nota : Debe reemplazar com.example.StatusCheckStarter
con el paquete completo de su clase StatusCheckStarter
.
- obtener android: atributo windowSoftInputMode mediante programación en Android
- ¿Es posible asignar una tecla de acceso rápido para cambiar entre la actividad y el diseño XML en Android Studio?