gpg::AndroidSupport

#include <android_support.h>

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

סיכום

התקשרות חזרה במחזור החיים של Android

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

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

קוד לדוגמה למשחק טרום-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
יש לקרוא לה כדי להעביר נתונים מ-onActivityCreated של פעילות ה-Java שלך.
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
נדרשת קריאה כדי להעביר נתונים מ-OnActivityActivity של פעילות ה-Java.
OnActivityResumed(JNIEnv *env, jobject activity)
void
נדרשת קריאה כדי להעביר נתונים מ-OnActivityActivityd של פעילות ה-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
)

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

נדרש רק לתמיכה ב-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
)

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

OnActivityResumed

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

נדרשת קריאה כדי להעביר נתונים מ-OnActivityActivityd של פעילות ה-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.