gpg::AndroidSupport

#include <android_support.h>

Funciones que habilitan la compatibilidad con versiones anteriores a Android 4.0

Resumen

Devoluciones de llamada de ciclo de vida de Android

En el caso de las apps orientadas a dispositivos Android 2.3 o 3.x (versión de API anterior a la 14), los Servicios de juego de Play no tienen forma de recibir automáticamente devoluciones de llamada del ciclo de vida de la actividad. En estos casos, los Servicios de juego de Play dependen de la actividad propietaria para notificarle sobre los eventos del ciclo de vida. Cualquier actividad que posea un objeto GameServices debe llamar a las funciones AndroidSupport::* desde sus propias funciones de devolución de llamada de ciclo de vida. Los argumentos de estas funciones coinciden con los que proporciona Android, por lo que no se necesita procesamiento adicional.

En el caso de las apps orientadas a Android 4.0 y versiones posteriores (una versión de API superior o igual a 14), la mayoría de estas llamadas a funciones no son necesarias. En el caso de esas apps, solo se debe llamar a la función OnActivityResult.

Ejemplo de código para un juego anterior a Android 4.0 con una actividad de Java

En tu actividad de Java, agrega lo siguiente. Es posible que debas combinar este código con las funciones existentes del ciclo de vida.

import android.app.Activity;
import android.content.Intent;

public class YourActivity extends Activity {
  protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    nativeOnActivityCreated(this, savedInstanceState);
  }

  protected void onDestroy(){
    super.onDestroy();
    nativeOnActivityDestroyed(this);
  }

  protected void onPause(){
    super.onPause();
    nativeOnActivityPaused(this);
  }

  protected void onResume(){
    super.onResume();
    nativeOnActivityResumed(this);
  }

  protected void onStart(){
    super.onStart();
    nativeOnActivityStarted(this);
  }

  protected void onStop(){
    super.onStop();
    nativeOnActivityStopped(this);
  }

  protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    nativeOnActivitySaveInstanceState(this, outState);
  }

  protected void onActivityResult(int requestCode,
                                  int resultCode,
                                  Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    nativeOnActivityResult(this, requestCode, resultCode, data);
  }

  // Implemented in C++.
  private static native void nativeOnActivityCreated(
      Activity activity, Bundle savedInstanceState);
  private static native void nativeOnActivityDestroyed(Activity activity);
  private static native void nativeOnActivityPaused(Activity activity);
  private static native void nativeOnActivityResumed(Activity activity);
  private static native void nativeOnActivitySaveInstanceState(
      Activity activity,
      Bundle outState);
  private static native void nativeOnActivityStarted(Activity activity);
  private static native void nativeOnActivityStopped(Activity activity);
  private static native void nativeOnActivityResult(
      Activity activity,
      int requestCode,
      int resultCode,
      Intent data);
}
Luego, en la biblioteca nativa, agrega las siguientes funciones de reenvío.
void Java_com_example_yourapp_YourActivity_nativeOnActivityCreated(
    JNIEnv* env,
    jobject thiz,
    jobject activity,
    jobject saved_instance_state) {
  gpg::AndroidSupport::OnActivityCreated(env,
                                         activity,
                                         saved_instance_state);
}

void Java_com_example_yourapp_YourActivity_nativeOnActivityDestroyed(
    JNIEnv* env, jobject thiz, jobject activity) {
  gpg::AndroidSupport::OnActivityDestroyed(env, activity);
}

void Java_com_example_yourapp_YourActivity_nativeOnActivityPaused(
    JNIEnv* env, jobject thiz, jobject activity) {
  gpg::AndroidSupport::OnActivityPaused(env, activity);
}

void Java_com_example_yourapp_YourActivity_nativeOnActivityResumed(
    JNIEnv* env, jobject thiz, jobject activity) {
  gpg::AndroidSupport::OnActivityResumed(env, activity);
}

void Java_com_example_yourapp_YourActivity_nativeOnActivitySaveInstanceState(
    JNIEnv* env, jobject thiz, jobject activity, jobject out_state) {
  gpg::AndroidSupport::OnActivitySaveInstanceState(env, activity, out_state);
}

void Java_com_example_yourapp_YourActivity_nativeOnActivityStarted(
    JNIEnv* env, jobject thiz, jobject activity) {
  gpg::AndroidSupport::OnActivityStarted(env, activity);
}

void Java_com_example_yourapp_YourActivity_nativeOnActivityStopped(
    JNIEnv* env, jobject thiz, jobject activity) {
  gpg::AndroidSupport::OnActivityStopped(env, activity);
}

void Java_com_example_yourapp_YourActivity_nativeOnActivityResult(
    JNIEnv* env,
    jobject thiz,
    jobject activity,
    jint request_code,
    jint result_code,
    jobject data) {
  gpg::AndroidSupport::OnActivityResult(
      env, activity, request_code, result_code, data);
}

Ejemplo de código para un juego para Android 4.0 y versiones posteriores con una actividad de Java

En tu actividad de Java, agrega lo siguiente. Es posible que debas combinar este código con las funciones existentes del ciclo de vida.

public class YourActivity extends Activity {
  protected void onActivityResult(int requestCode,
                                  int resultCode,
                                  Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    nativeOnActivityResult(this, requestCode, resultCode, data);
  }

  // Implemented in C++.
  private static native void nativeOnActivityResult(
      Activity activity,
      int requestCode,
      int resultCode,
      Intent data);
}
Luego, en la biblioteca nativa, agrega las siguientes funciones de reenvío.
void Java_com_example_yourapp_YourActivity_nativeOnActivityResult(
    JNIEnv* env,
    jobject thiz,
    jobject activity,
    jint request_code,
    jint result_code,
    jobject data) {
  gpg::AndroidSupport::OnActivityResult(
      env, activity, request_code, result_code, data);
}

Funciones estáticas públicas

OnActivityCreated(JNIEnv *env, jobject activity, jobject saved_instance_state)
void
Se lo debe llamar para reenviar datos desde onActivityCreated de tu actividad Java.
OnActivityDestroyed(JNIEnv *env, jobject activity)
void
Se debe llamar para reenviar datos desde OnActivityDestroyed de tu actividad de Java.
OnActivityPaused(JNIEnv *env, jobject activity)
void
Se lo debe llamar para reenviar datos de OnActivityPause de tu actividad de Java.
OnActivityResult(JNIEnv *env, jobject activity, jint request_code, jint result_code, jobject result)
void
Se debe llamar para reenviar datos desde el OnActivityResult de tu actividad Java.
OnActivityResumed(JNIEnv *env, jobject activity)
void
Se lo debe llamar para reenviar datos de OnActivityResumed de tu actividad Java.
OnActivitySaveInstanceState(JNIEnv *env, jobject activity, jobject out_state)
void
Se lo debe llamar para reenviar datos desde OnActivitySaveInstanceState de tu actividad Java.
OnActivityStarted(JNIEnv *env, jobject activity)
void
Se debe llamar para reenviar datos de OnActivityStarted de tu actividad de Java.
OnActivityStopped(JNIEnv *env, jobject activity)
void
Se lo debe llamar para reenviar datos desde OnActivityStopped de tu actividad de Java.

Funciones estáticas públicas

OnActivityCreated

void gpg::AndroidSupport::OnActivityCreated(
  JNIEnv *env,
  jobject activity,
  jobject saved_instance_state
)

Se lo debe llamar para reenviar datos desde onActivityCreated de tu actividad Java.

Solo es necesario para la compatibilidad con Android 2.3.x.

OnActivityDestroyed

void gpg::AndroidSupport::OnActivityDestroyed(
  JNIEnv *env,
  jobject activity
)

Se debe llamar para reenviar datos desde OnActivityDestroyed de tu actividad de Java.

Solo es necesario para la compatibilidad con Android 2.3.x.

OnActivityPaused

void gpg::AndroidSupport::OnActivityPaused(
  JNIEnv *env,
  jobject activity
)

Se lo debe llamar para reenviar datos de OnActivityPause de tu actividad de Java.

Solo es necesario para la compatibilidad con Android 2.3.x.

OnActivityResult

void gpg::AndroidSupport::OnActivityResult(
  JNIEnv *env,
  jobject activity,
  jint request_code,
  jint result_code,
  jobject result
)

Se debe llamar para reenviar datos desde el OnActivityResult de tu actividad Java.

OnActivityResumed

void gpg::AndroidSupport::OnActivityResumed(
  JNIEnv *env,
  jobject activity
)

Se lo debe llamar para reenviar datos de OnActivityResumed de tu actividad Java.

Solo es necesario para la compatibilidad con Android 2.3.x.

OnActivitySaveInstanceState

void gpg::AndroidSupport::OnActivitySaveInstanceState(
  JNIEnv *env,
  jobject activity,
  jobject out_state
)

Se lo debe llamar para reenviar datos desde OnActivitySaveInstanceState de tu actividad Java.

Solo es necesario para la compatibilidad con Android 2.3.x.

OnActivityStarted

void gpg::AndroidSupport::OnActivityStarted(
  JNIEnv *env,
  jobject activity
)

Se debe llamar para reenviar datos de OnActivityStarted de tu actividad de Java.

Solo es necesario para la compatibilidad con Android 2.3.x.

OnActivityStopped

void gpg::AndroidSupport::OnActivityStopped(
  JNIEnv *env,
  jobject activity
)

Se lo debe llamar para reenviar datos desde OnActivityStopped de tu actividad de Java.

Solo es necesario para la compatibilidad con Android 2.3.x.