android_app_NativeActivity.h revision d76b67c340d1564abf8d14d976fdaf83bf2b3320
154a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn/* 254a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn * Copyright (C) 2010 The Android Open Source Project 354a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn * 454a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License"); 554a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn * you may not use this file except in compliance with the License. 654a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn * You may obtain a copy of the License at 754a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn * 854a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn * http://www.apache.org/licenses/LICENSE-2.0 954a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn * 1054a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn * Unless required by applicable law or agreed to in writing, software 1154a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS, 1254a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1354a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn * See the License for the specific language governing permissions and 1454a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn * limitations under the License. 1554a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn */ 1654a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn 17289b9b62372ef52a06113b83dfb870e2c2fb325aDianne Hackborn#ifndef _ANDROID_APP_NATIVEACTIVITY_H 18289b9b62372ef52a06113b83dfb870e2c2fb325aDianne Hackborn#define _ANDROID_APP_NATIVEACTIVITY_H 1954a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn 20d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn#include <ui/InputTransport.h> 21d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 22289b9b62372ef52a06113b83dfb870e2c2fb325aDianne Hackborn#include <android/native_activity.h> 2354a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn 2454a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn#include "jni.h" 2554a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn 2654a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackbornnamespace android { 2754a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn 28289b9b62372ef52a06113b83dfb870e2c2fb325aDianne Hackbornextern void android_NativeActivity_setWindowFormat( 29289b9b62372ef52a06113b83dfb870e2c2fb325aDianne Hackborn ANativeActivity* activity, int32_t format); 30289b9b62372ef52a06113b83dfb870e2c2fb325aDianne Hackborn 31289b9b62372ef52a06113b83dfb870e2c2fb325aDianne Hackbornextern void android_NativeActivity_setWindowFlags( 32289b9b62372ef52a06113b83dfb870e2c2fb325aDianne Hackborn ANativeActivity* activity, int32_t values, int32_t mask); 33289b9b62372ef52a06113b83dfb870e2c2fb325aDianne Hackborn 34d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackbornextern void android_NativeActivity_showSoftInput( 35d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn ANativeActivity* activity, int32_t flags); 36d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 37d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackbornextern void android_NativeActivity_hideSoftInput( 38d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn ANativeActivity* activity, int32_t flags); 3954a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn 4054a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn} // namespace android 4154a181b1a2b1517a9479b21fbf7705a688232fafDianne Hackborn 42d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 43d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn/* 44d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn * NDK input queue API. 45d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn */ 46d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackbornstruct AInputQueue { 47d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackbornpublic: 48d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn /* Creates a consumer associated with an input channel. */ 49d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn explicit AInputQueue(const android::sp<android::InputChannel>& channel, int workWrite); 50d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 51d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn /* Destroys the consumer and releases its input channel. */ 52d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn ~AInputQueue(); 53d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 54d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn void attachLooper(ALooper* looper, ALooper_callbackFunc* callback, void* data); 55d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 56d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn void detachLooper(); 57d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 58d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn int32_t hasEvents(); 59d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 60d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn int32_t getEvent(AInputEvent** outEvent); 61d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 62d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn void finishEvent(AInputEvent* event, bool handled); 63d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 64d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 65d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn // ---------------------------------------------------------- 66d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 67d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn inline android::InputConsumer& getConsumer() { return mConsumer; } 68d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 69d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn void dispatchEvent(android::KeyEvent* event); 70d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 71d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn android::KeyEvent* consumeUnhandledEvent(); 72d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 73d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn int mWorkWrite; 74d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 75d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackbornprivate: 76d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn void doDefaultKey(android::KeyEvent* keyEvent); 77d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 78d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn android::InputConsumer mConsumer; 79d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn android::PreallocatedInputEventFactory mInputEventFactory; 80d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn android::sp<android::PollLoop> mPollLoop; 81d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 82d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn int mDispatchKeyRead; 83d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn int mDispatchKeyWrite; 84d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 85d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn // This is only touched by the event reader thread. It is the current 86d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn // key events that came out of the mDispatchingKeys list and are now 87d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn //�delivered to the app. 88d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn android::Vector<android::KeyEvent*> mDeliveringKeys; 89d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 90d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn android::Mutex mLock; 91d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn android::Vector<android::KeyEvent*> mPendingKeys; 92d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn android::Vector<android::KeyEvent*> mDispatchingKeys; 93d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn}; 94d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn 95289b9b62372ef52a06113b83dfb870e2c2fb325aDianne Hackborn#endif // _ANDROID_APP_NATIVEACTIVITY_H 96