gpg::AndroidSupport

#include <android_support.h>

פונקציות שמאפשרות תמיכה שקודמת ל-Android 4.0.

סיכום

קריאות חוזרות (callback) במחזור החיים של Android

באפליקציות שמטרגטות מכשירי Android מגרסה 2.3 או 3.x (גרסת API מלפני 14 שנים), Play Games Services לא יכול לקבל באופן אוטומטי קריאות חוזרות לגבי מחזור חיים של הפעילות. במקרים כאלה, Play Games Services מסתמכים על הפעילות בבעלות כדי להודיע לה על אירועים במחזור החיים. כל פעילות שבבעלותה אובייקט GameServices צריכה לבצע קריאה לפונקציות AndroidSupport::* מתוך פונקציות הקריאה החוזרות של מחזור החיים שלהן. הארגומנטים בפונקציות האלה תואמים לארגומנטים שמסופקים על ידי Android, כך שלא נדרש עיבוד נוסף.

באפליקציות שמטרגטות את Android 4.0 ואילך (גרסת API ישנה יותר מ-14 או גרסה שווה ל-14), רוב הקריאות לפונקציות האלה מיותרות. עבור אפליקציות כאלה, יש לקרוא רק לפונקציה OnActivityתוצאה.

קוד לדוגמה למשחק שקדם ל-Android 4.0 באמצעות פעילות Java

בפעילות Java, יש להוסיף את הפרטים הבאים. יכול להיות שתצטרכו למזג את הקוד הזה עם הפונקציות הקיימות במחזור החיים.

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);
}
לאחר מכן, מוסיפים בספריית הנייטיב את פונקציות ההעברה הבאות.
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);
}

קוד לדוגמה למשחק Android 4.0 ואילך באמצעות פעילות Java

בפעילות Java, יש להוסיף את הפרטים הבאים. יכול להיות שתצטרכו למזג את הקוד הזה עם הפונקציות הקיימות במחזור החיים.

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);
}
לאחר מכן, מוסיפים בספריית הנייטיב את פונקציות ההעברה הבאות.
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);
}

פונקציות סטטיות ציבוריות

OnActivityCreated(JNIEnv *env, jobject activity, jobject saved_instance_state)
void
צריכה להתבצע קריאה כדי להעביר נתונים מהפעילות שלך ב-Java ל-onActivityCreated.
OnActivityDestroyed(JNIEnv *env, jobject activity)
void
נדרשת קריאה כדי להעביר נתונים מהפעילות OnActivityDestroyed של הפעילות שלך ב-Java.
OnActivityPaused(JNIEnv *env, jobject activity)
void
צריכה להתבצע קריאה כדי להעביר נתונים מהפעילות OnActivityPause של הפעילות שלך ב-Java.
OnActivityResult(JNIEnv *env, jobject activity, jint request_code, jint result_code, jobject result)
void
נדרשת קריאה כדי להעביר נתונים מה-OnActivityתוצאה של פעילות Java שלך.
OnActivityResumed(JNIEnv *env, jobject activity)
void
צריכה להתבצע קריאה כדי להעביר נתונים מהפעילות OnActivityResumed של הפעילות שלך ב-Java.
OnActivitySaveInstanceState(JNIEnv *env, jobject activity, jobject out_state)
void
צריך לקרוא להן כדי להעביר נתונים מה-OnActivitySaveInstanceState של הפעילות שלך ב-Java.
OnActivityStarted(JNIEnv *env, jobject activity)
void
צריכה להתבצע קריאה כדי להעביר נתונים מהפעילות OnActivityStarted של הפעילות שלך ב-Java.
OnActivityStopped(JNIEnv *env, jobject activity)
void
צריכה להתבצע קריאה כדי להעביר נתונים מה-OnActivitySStop של הפעילות שלך ב-Java.

פונקציות סטטיות ציבוריות

OnActivityCreated

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

צריכה להתבצע קריאה כדי להעביר נתונים מהפעילות שלך ב-Java ל-onActivityCreated.

נדרש רק לתמיכה ב-Android 2.3.x.

OnActivityDestroyed

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

צריכה להתבצע קריאה כדי להעביר נתונים מהפעילות OnActivityDestroyed של הפעילות שלך ב-Java.

נדרש רק לתמיכה ב-Android 2.3.x.

OnActivityPaused

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

צריכה להתבצע קריאה כדי להעביר נתונים מהפעילות OnActivityPause של הפעילות שלך ב-Java.

נדרש רק לתמיכה ב-Android 2.3.x.

OnActivityResult

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

צריכה להתבצע קריאה כדי להעביר נתונים מה-OnActivityתוצאה של פעילות Java שלך.

OnActivityResumed

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

צריכה להתבצע קריאה כדי להעביר נתונים מהפעילות OnActivityResumed של הפעילות שלך ב-Java.

נדרש רק לתמיכה ב-Android 2.3.x.

OnActivitySaveInstanceState

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

צריך לקרוא להן כדי להעביר נתונים מה-OnActivitySaveInstanceState של הפעילות שלך ב-Java.

נדרש רק לתמיכה ב-Android 2.3.x.

OnActivityStarted

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

צריכה להתבצע קריאה כדי להעביר נתונים מהפעילות OnActivityStarted של הפעילות שלך ב-Java.

נדרש רק לתמיכה ב-Android 2.3.x.

OnActivityStopped

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

צריכה להתבצע קריאה כדי להעביר נתונים מה-OnActivitySStop של הפעילות שלך ב-Java.

נדרש רק לתמיכה ב-Android 2.3.x.