gpg::AndroidSupport

#include <android_support.h>

Functions which enable pre- Android 4.0 support.

Summary

Android Lifecycle Callbacks

For apps which target Android 2.3 or 3.x devices (API Version prior to 14), Play Game Services has no way to automatically receive Activity lifecycle callbacks. In these cases, Play Game Services relies on the owning Activity to notify it of lifecycle events. Any Activity which owns a GameServices object should call the AndroidSupport::* functions from within their own lifecycle callback functions. The arguments in these functions match those provided by Android, so no additional processing is necessary.

For apps which target android 4.0+ (API Version greater than or equal to 14), most of these function calls are unnecessary. For such apps only the OnActivityResult function must be called.

Example code for a pre- Android 4.0 game using a Java Activity

In your Java Activity, please add the following. You may need to merge this code with your existing lifecycle functions.

importandroid.app.Activity;
importandroid.content.Intent;
publicclassYourActivityextendsActivity{
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
nativeOnActivityCreated(this,savedInstanceState);
}
protectedvoidonDestroy(){
super.onDestroy();
nativeOnActivityDestroyed(this);
}
protectedvoidonPause(){
super.onPause();
nativeOnActivityPaused(this);
}
protectedvoidonResume(){
super.onResume();
nativeOnActivityResumed(this);
}
protectedvoidonStart(){
super.onStart();
nativeOnActivityStarted(this);
}
protectedvoidonStop(){
super.onStop();
nativeOnActivityStopped(this);
}
protectedvoidonSaveInstanceState(BundleoutState){
super.onSaveInstanceState(outState);
nativeOnActivitySaveInstanceState(this,outState);
}
protectedvoidonActivityResult(intrequestCode,
intresultCode,
Intentdata){
super.onActivityResult(requestCode,resultCode,data);
nativeOnActivityResult(this,requestCode,resultCode,data);
}
// Implemented in C++.
privatestaticnativevoidnativeOnActivityCreated(
Activityactivity,BundlesavedInstanceState);
privatestaticnativevoidnativeOnActivityDestroyed(Activityactivity);
privatestaticnativevoidnativeOnActivityPaused(Activityactivity);
privatestaticnativevoidnativeOnActivityResumed(Activityactivity);
privatestaticnativevoidnativeOnActivitySaveInstanceState(
Activityactivity,
BundleoutState);
privatestaticnativevoidnativeOnActivityStarted(Activityactivity);
privatestaticnativevoidnativeOnActivityStopped(Activityactivity);
privatestaticnativevoidnativeOnActivityResult(
Activityactivity,
intrequestCode,
intresultCode,
Intentdata);
}
Then, in your native library, add the following forwarding functions.
voidJava_com_example_yourapp_YourActivity_nativeOnActivityCreated(
JNIEnv*env,
jobjectthiz,
jobjectactivity,
jobjectsaved_instance_state){
gpg::AndroidSupport::OnActivityCreated(env,
activity,
saved_instance_state);
}
voidJava_com_example_yourapp_YourActivity_nativeOnActivityDestroyed(
JNIEnv*env,jobjectthiz,jobjectactivity){
gpg::AndroidSupport::OnActivityDestroyed(env,activity);
}
voidJava_com_example_yourapp_YourActivity_nativeOnActivityPaused(
JNIEnv*env,jobjectthiz,jobjectactivity){
gpg::AndroidSupport::OnActivityPaused(env,activity);
}
voidJava_com_example_yourapp_YourActivity_nativeOnActivityResumed(
JNIEnv*env,jobjectthiz,jobjectactivity){
gpg::AndroidSupport::OnActivityResumed(env,activity);
}
voidJava_com_example_yourapp_YourActivity_nativeOnActivitySaveInstanceState(
JNIEnv*env,jobjectthiz,jobjectactivity,jobjectout_state){
gpg::AndroidSupport::OnActivitySaveInstanceState(env,activity,out_state);
}
voidJava_com_example_yourapp_YourActivity_nativeOnActivityStarted(
JNIEnv*env,jobjectthiz,jobjectactivity){
gpg::AndroidSupport::OnActivityStarted(env,activity);
}
voidJava_com_example_yourapp_YourActivity_nativeOnActivityStopped(
JNIEnv*env,jobjectthiz,jobjectactivity){
gpg::AndroidSupport::OnActivityStopped(env,activity);
}
voidJava_com_example_yourapp_YourActivity_nativeOnActivityResult(
JNIEnv*env,
jobjectthiz,
jobjectactivity,
jintrequest_code,
jintresult_code,
jobjectdata){
gpg::AndroidSupport::OnActivityResult(
env,activity,request_code,result_code,data);
}

Example code for an Android 4.0+ game using a Java Activity

In your Java Activity, please add the following. You may need to merge this code with your existing lifecycle functions.

publicclassYourActivityextendsActivity{
protectedvoidonActivityResult(intrequestCode,
intresultCode,
Intentdata){
super.onActivityResult(requestCode,resultCode,data);
nativeOnActivityResult(this,requestCode,resultCode,data);
}
// Implemented in C++.
privatestaticnativevoidnativeOnActivityResult(
Activityactivity,
intrequestCode,
intresultCode,
Intentdata);
}
Then, in your native library, add the following forwarding functions.
voidJava_com_example_yourapp_YourActivity_nativeOnActivityResult(
JNIEnv*env,
jobjectthiz,
jobjectactivity,
jintrequest_code,
jintresult_code,
jobjectdata){
gpg::AndroidSupport::OnActivityResult(
env,activity,request_code,result_code,data);
}

Public static functions

OnActivityCreated(JNIEnv *env, jobject activity, jobject saved_instance_state)
void
Should be called to forward data from your Java activity's onActivityCreated.
OnActivityDestroyed(JNIEnv *env, jobject activity)
void
Should be called to forward data from your Java activity's OnActivityDestroyed.
OnActivityPaused(JNIEnv *env, jobject activity)
void
Should be called to forward data from your Java activity's OnActivityPaused.
OnActivityResult(JNIEnv *env, jobject activity, jint request_code, jint result_code, jobject result)
void
Should be called to forward data from your Java activity's OnActivityResult.
OnActivityResumed(JNIEnv *env, jobject activity)
void
Should be called to forward data from your Java activity's OnActivityResumed.
OnActivitySaveInstanceState(JNIEnv *env, jobject activity, jobject out_state)
void
Should be called to forward data from your Java activity's OnActivitySaveInstanceState.
OnActivityStarted(JNIEnv *env, jobject activity)
void
Should be called to forward data from your Java activity's OnActivityStarted.
OnActivityStopped(JNIEnv *env, jobject activity)
void
Should be called to forward data from your Java activity's OnActivityStopped.

Public static functions

OnActivityCreated

voidgpg::AndroidSupport::OnActivityCreated(
JNIEnv*env,
jobjectactivity,
jobjectsaved_instance_state
)

Should be called to forward data from your Java activity's onActivityCreated.

Only necessary for Android 2.3.x support.

OnActivityDestroyed

voidgpg::AndroidSupport::OnActivityDestroyed(
JNIEnv*env,
jobjectactivity
)

Should be called to forward data from your Java activity's OnActivityDestroyed.

Only necessary for Android 2.3.x support.

OnActivityPaused

voidgpg::AndroidSupport::OnActivityPaused(
JNIEnv*env,
jobjectactivity
)

Should be called to forward data from your Java activity's OnActivityPaused.

Only necessary for Android 2.3.x support.

OnActivityResult

voidgpg::AndroidSupport::OnActivityResult(
JNIEnv*env,
jobjectactivity,
jintrequest_code,
jintresult_code,
jobjectresult
)

Should be called to forward data from your Java activity's OnActivityResult.

OnActivityResumed

voidgpg::AndroidSupport::OnActivityResumed(
JNIEnv*env,
jobjectactivity
)

Should be called to forward data from your Java activity's OnActivityResumed.

Only necessary for Android 2.3.x support.

OnActivitySaveInstanceState

voidgpg::AndroidSupport::OnActivitySaveInstanceState(
JNIEnv*env,
jobjectactivity,
jobjectout_state
)

Should be called to forward data from your Java activity's OnActivitySaveInstanceState.

Only necessary for Android 2.3.x support.

OnActivityStarted

voidgpg::AndroidSupport::OnActivityStarted(
JNIEnv*env,
jobjectactivity
)

Should be called to forward data from your Java activity's OnActivityStarted.

Only necessary for Android 2.3.x support.

OnActivityStopped

voidgpg::AndroidSupport::OnActivityStopped(
JNIEnv*env,
jobjectactivity
)

Should be called to forward data from your Java activity's OnActivityStopped.

Only necessary for Android 2.3.x support.

Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Last updated 2024年10月28日 UTC.