native_activity.h revision 08d5b8fad8d46ccb64db2fdcb4d66972ec87bf48
169969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn/*
269969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn * Copyright (C) 2010 The Android Open Source Project
369969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn *
469969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License");
569969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn * you may not use this file except in compliance with the License.
669969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn * You may obtain a copy of the License at
769969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn *
869969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn *      http://www.apache.org/licenses/LICENSE-2.0
969969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn *
1069969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn * Unless required by applicable law or agreed to in writing, software
1169969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS,
1269969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1369969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn * See the License for the specific language governing permissions and
1469969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn * limitations under the License.
1569969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn */
1669969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn
1769969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn
1869969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn#ifndef ANDROID_NATIVE_ACTIVITY_H
1969969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn#define ANDROID_NATIVE_ACTIVITY_H
2069969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn
2169969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn#include <stdint.h>
2269969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn#include <sys/types.h>
2369969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn
2469969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn#include <jni.h>
2569969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn
266cce32b6adbb3a9725fc730ba0e0068a74657e60Christopher Tate#include <android/asset_manager.h>
27a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn#include <android/input.h>
2854a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn#include <android/native_window.h>
29a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
3069969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn#ifdef __cplusplus
3169969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackbornextern "C" {
3269969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn#endif
3369969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn
342e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornstruct ANativeActivityCallbacks;
3569969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn
3674323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn/**
3774323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn * This structure defines the native side of an android.app.NativeActivity.
3874323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn * It is created by the framework, and handed to the application's native
3974323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn * code as it is being launched.
4074323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn */
412e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborntypedef struct ANativeActivity {
4274323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn    /**
4374323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * Pointer to the callback function table of the native application.
4474323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * You can set the functions here to your own callbacks.  The callbacks
4574323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * pointer itself here should not be changed; it is allocated and managed
4674323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * for you by the framework.
4774323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     */
482e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn    struct ANativeActivityCallbacks* callbacks;
4969969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn
5074323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn    /**
512e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn     * The global handle on the process's Java VM.
522e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn     */
532e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn    JavaVM* vm;
542e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn
552e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn    /**
562e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn     * JNI context for the main thread of the app.  Note that this field
572e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn     * can ONLY be used from the main thread of the process; that is, the
582e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn     * thread that calls into the ANativeActivityCallbacks.
5974323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     */
6069969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn    JNIEnv* env;
612e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn
6274323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn    /**
6374323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * The NativeActivity Java class.
6474323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     */
6569969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn    jobject clazz;
6669969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn
6774323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn    /**
68682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn     * Path to this application's internal data directory.
69682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn     */
70682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn    const char* internalDataPath;
71682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn
72682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn    /**
73682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn     * Path to this application's external (removable/mountable) data directory.
74682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn     */
75682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn    const char* externalDataPath;
76682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn
77682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn    /**
78682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn     * The platform's SDK version code.
79682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn     */
80682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn    int32_t sdkVersion;
81682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn
82682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn    /**
8374323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * This is the native instance of the application.  It is not used by
8474323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * the framework, but can be set by the application to its own instance
8574323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * state.
8674323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     */
8769969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn    void* instance;
886cce32b6adbb3a9725fc730ba0e0068a74657e60Christopher Tate
896cce32b6adbb3a9725fc730ba0e0068a74657e60Christopher Tate    /**
906cce32b6adbb3a9725fc730ba0e0068a74657e60Christopher Tate     * Pointer to the Asset Manager instance for the application.  The application
916cce32b6adbb3a9725fc730ba0e0068a74657e60Christopher Tate     * uses this to access binary assets bundled inside its own .apk file.
926cce32b6adbb3a9725fc730ba0e0068a74657e60Christopher Tate     */
936cce32b6adbb3a9725fc730ba0e0068a74657e60Christopher Tate    AAssetManager* assetManager;
942e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn} ANativeActivity;
9569969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn
9674323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn/**
9774323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn * These are the callbacks the framework makes into a native application.
9874323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn * All of these callbacks happen on the main thread of the application.
9974323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn * By default, all callbacks are NULL; set to a pointer to your own function
10074323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn * to have it called.
10174323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn */
1022e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborntypedef struct ANativeActivityCallbacks {
10374323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn    /**
10474323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * NativeActivity has started.  See Java documentation for Activity.onStart()
10574323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * for more information.
10674323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     */
1072e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn    void (*onStart)(ANativeActivity* activity);
10874323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn
10974323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn    /**
11074323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * NativeActivity has resumed.  See Java documentation for Activity.onResume()
11174323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * for more information.
11274323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     */
1132e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn    void (*onResume)(ANativeActivity* activity);
11474323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn
11574323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn    /**
11674323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * Framework is asking NativeActivity to save its current instance state.
11774323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * See Java documentation for Activity.onSaveInstanceState() for more
11874323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * information.  The returned pointer needs to be created with malloc();
11974323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * the framework will call free() on it for you.  You also must fill in
12074323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * outSize with the number of bytes in the allocation.  Note that the
12174323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * saved state will be persisted, so it can not contain any active
12274323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * entities (pointers to memory, file descriptors, etc).
12374323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     */
1242e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn    void* (*onSaveInstanceState)(ANativeActivity* activity, size_t* outSize);
12574323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn
12674323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn    /**
12774323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * NativeActivity has paused.  See Java documentation for Activity.onPause()
12874323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * for more information.
12974323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     */
1302e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn    void (*onPause)(ANativeActivity* activity);
13174323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn
13274323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn    /**
13374323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * NativeActivity has stopped.  See Java documentation for Activity.onStop()
13474323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * for more information.
13574323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     */
1362e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn    void (*onStop)(ANativeActivity* activity);
13774323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn
13874323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn    /**
13974323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * NativeActivity is being destroyed.  See Java documentation for Activity.onDestroy()
14074323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * for more information.
14174323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     */
1422e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn    void (*onDestroy)(ANativeActivity* activity);
14369969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn
14474323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn    /**
14574323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * Focus has changed in this NativeActivity's window.  This is often used,
14674323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * for example, to pause a game when it loses input focus.
14774323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     */
1482e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn    void (*onWindowFocusChanged)(ANativeActivity* activity, int hasFocus);
14974323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn
15074323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn    /**
15154a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn     * The drawing window for this native activity has been created.  You
15254a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn     * can use the given native window object to start drawing.
15374323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     */
15454a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn    void (*onNativeWindowCreated)(ANativeActivity* activity, ANativeWindow* window);
15574323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn
15674323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn    /**
157d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn     * The drawing window for this native activity has been resized.  You should
158d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn     * retrieve the new size from the window and ensure that your rendering in
159d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn     * it now matches.
160d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn     */
161d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn    void (*onNativeWindowResized)(ANativeActivity* activity, ANativeWindow* window);
162d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn
163d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn    /**
164d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn     * The drawing window for this native activity needs to be redrawn.  To avoid
165d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn     * transient artifacts during screen changes (such resizing after rotation),
166d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn     * applications should not return from this function until they have finished
167d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn     * drawing their window in its current state.
168d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn     */
169d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn    void (*onNativeWindowRedrawNeeded)(ANativeActivity* activity, ANativeWindow* window);
170d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn
171d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn    /**
17254a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn     * The drawing window for this native activity is going to be destroyed.
17354a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn     * You MUST ensure that you do not touch the window object after returning
17454a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn     * from this function: in the common case of drawing to the window from
17574323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * another thread, that means the implementation of this callback must
17674323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * properly synchronize with the other thread to stop its drawing before
17774323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * returning from here.
17874323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     */
17954a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn    void (*onNativeWindowDestroyed)(ANativeActivity* activity, ANativeWindow* window);
180a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
181a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    /**
182a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn     * The input queue for this native activity's window has been created.
183a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn     * You can use the given input queue to start retrieving input events.
184a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn     */
1852e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn    void (*onInputQueueCreated)(ANativeActivity* activity, AInputQueue* queue);
186a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
187a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    /**
188a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn     * The input queue for this native activity's window is being destroyed.
189a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn     * You should no longer try to reference this object upon returning from this
190a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn     * function.
191a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn     */
1922e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn    void (*onInputQueueDestroyed)(ANativeActivity* activity, AInputQueue* queue);
19374323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn
19474323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn    /**
195d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn     * The rectangle in the window in which content should be placed has changed.
196d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn     */
197d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn    void (*onContentRectChanged)(ANativeActivity* activity, const ARect* rect);
198d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn
199d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn    /**
20008d5b8fad8d46ccb64db2fdcb4d66972ec87bf48Dianne Hackborn     * The current device AConfiguration has changed.  The new configuration can
20108d5b8fad8d46ccb64db2fdcb4d66972ec87bf48Dianne Hackborn     * be retrieved from assetManager.
20208d5b8fad8d46ccb64db2fdcb4d66972ec87bf48Dianne Hackborn     */
20308d5b8fad8d46ccb64db2fdcb4d66972ec87bf48Dianne Hackborn    void (*onConfigurationChanged)(ANativeActivity* activity);
20408d5b8fad8d46ccb64db2fdcb4d66972ec87bf48Dianne Hackborn
20508d5b8fad8d46ccb64db2fdcb4d66972ec87bf48Dianne Hackborn    /**
20674323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * The system is running low on memory.  Use this callback to release
20774323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * resources you do not need, to help the system avoid killing more
20874323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     * important processes.
20974323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn     */
2102e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn    void (*onLowMemory)(ANativeActivity* activity);
2112e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborn} ANativeActivityCallbacks;
21269969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn
21374323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn/**
21474323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn * This is the function that must be in the native code to instantiate the
21574323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn * application's native activity.  It is called with the activity instance (see
21674323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn * above); if the code is being instantiated from a previously saved instance,
21708d5b8fad8d46ccb64db2fdcb4d66972ec87bf48Dianne Hackborn * the savedState will be non-NULL and point to the saved data.  You must make
21808d5b8fad8d46ccb64db2fdcb4d66972ec87bf48Dianne Hackborn * any copy of this data you need -- it will be released after you return from
21908d5b8fad8d46ccb64db2fdcb4d66972ec87bf48Dianne Hackborn * this function.
22074323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn */
2212e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackborntypedef void ANativeActivity_createFunc(ANativeActivity* activity,
22269969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn        void* savedState, size_t savedStateSize);
22369969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn
22474323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn/**
22574323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn * The name of the function that NativeInstance looks for when launching its
22674323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn * native code.
22774323fd1ab8eb11beea286d5c213c63e4b803141Dianne Hackborn */
2282e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornextern ANativeActivity_createFunc ANativeActivity_onCreate;
22969969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn
230289b9b62372ef52a06113b83dfb870e2c2fb325aDianne Hackbornvoid ANativeActivity_setWindowFormat(ANativeActivity* activity, int32_t format);
231289b9b62372ef52a06113b83dfb870e2c2fb325aDianne Hackborn
232289b9b62372ef52a06113b83dfb870e2c2fb325aDianne Hackbornvoid ANativeActivity_setWindowFlags(ANativeActivity* activity,
233289b9b62372ef52a06113b83dfb870e2c2fb325aDianne Hackborn        uint32_t addFlags, uint32_t removeFlags);
234289b9b62372ef52a06113b83dfb870e2c2fb325aDianne Hackborn
235d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn/**
236d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn * Flags for ANativeActivity_showSoftInput; see the Java InputMethodManager
237d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn * API for documentation.
238d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn */
239d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackbornenum {
240d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn    ANATIVEACTIVITY_SHOW_SOFT_INPUT_IMPLICIT = 0x0001,
241d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn    ANATIVEACTIVITY_SHOW_SOFT_INPUT_FORCED = 0x0002,
242d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn};
243d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn
244d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackbornvoid ANativeActivity_showSoftInput(ANativeActivity* activity, uint32_t flags);
245d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn
246d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn/**
247d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn * Flags for ANativeActivity_hideSoftInput; see the Java InputMethodManager
248d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn * API for documentation.
249d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn */
250d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackbornenum {
251d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn    ANATIVEACTIVITY_HIDE_SOFT_INPUT_IMPLICIT_ONLY = 0x0001,
252d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn    ANATIVEACTIVITY_HIDE_SOFT_INPUT_NOT_ALWAYS = 0x0002,
253d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn};
254d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn
255d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackbornvoid ANativeActivity_hideSoftInput(ANativeActivity* activity, uint32_t flags);
256d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn
25769969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn#ifdef __cplusplus
25869969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn};
25969969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn#endif
26069969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn
26169969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn#endif // ANDROID_NATIVE_ACTIVITY_H
26269969e48f2bca9339662dddfacff0bbf6374ed7fDianne Hackborn
263