GameActivity में Textइनपुट Android गेम डेवलपमेंट किट का हिस्सा.
GameActivity इंटिग्रेट करती है इसके ज़रिए GameTextइनपुट:
- रैपर उपलब्ध करा रही हूँ
- नए टेक्स्ट इनपुट इवेंट की उपलब्धता के लिए फ़्लैग बना रहा है
- टेक्स्ट कॉन्टेंट के लिए GameTextइनपुट के स्टेट बफ़र का इस्तेमाल करके, सीधे तौर पर कॉन्टेंट पोस्ट करना
जैसा कि नीचे दिए गए डायग्राम में दिखाया गया है, ऐप्लिकेशन अलग-अलग इंटरनल लॉजिकल लॉजिकल का इस्तेमाल करते हैं उपयोगकर्ता के टेक्स्ट इनपुट के लिए कॉम्पोनेंट:
पहले से मौजूद GameTextInput
लाइब्रेरी का इस्तेमाल, इन तीन चरणों में किया जा सकता है:
- यूज़र इंटरफ़ेस (यूआई) पर सॉफ़्ट कीबोर्ड को कंट्रोल करना
- नया टेक्स्ट उपलब्ध होने की जानकारी
- उपयोगकर्ता का इनपुट टेक्स्ट और उसकी स्थितियों को हासिल करना
इस दस्तावेज़ के बाकी हिस्से में इनके बारे में पूरी जानकारी दी गई है. उदाहरण के लिए
GameTextInput
को GameActivity
इस्तेमाल करने के लिए, देखें
गेम के सैंपल का डेटा स्टोर करने की जगह.
यूज़र इंटरफ़ेस (यूआई) पर सॉफ़्ट कीबोर्ड को कंट्रोल करना
यूज़र इंटरफ़ेस (यूआई) पर सॉफ़्ट कीबोर्ड को कंट्रोल करने के लिए, GameActivity
में दो फ़ंक्शन मिलते हैं:
GameActivity_showSoftInput()
सॉफ़्ट कीबोर्ड दिखाता है.GameActivity_hideSoftInput()
सॉफ़्ट कीबोर्ड को छिपा देता है.
एपीआई के रेफ़रंस दस्तावेज़ों की जानकारी के लिए उन्हें देखें. इसके बाद कीबोर्ड दिखाई देता है, तो ऐप्लिकेशन का यूज़र इंटरफ़ेस (यूआई) ऐसा दिख सकता है:
देखें कि टेक्स्ट उपलब्ध है या नहीं
सॉफ़्ट कीबोर्ड इवेंट, GameTextInput
से Java की तरफ़
C/C++ की मदद से JNI के ज़रिए, GameActivity के रैपर तक पहुंचें,
android_app::textInputState
फ़्लैग में दिख रहा है
native_app_glue
में लागू किया गया. आवेदन
तय की गई प्रोसेसिंग के लिए, समय-समय पर इस फ़्लैग का पोल करना चाहिए:
- GameActivity सिर्फ़
android_app::textInputState
फ़्लैग सेट करती है. - ऐप्लिकेशन, फ़्लैग को पोल करते हैं और
GameTextInput
के नए इवेंट को मैनेज करते हैं, जैसे कि इनपुट बफ़र में जोड़ा गया नया टेक्स्ट. - ऐप्लिकेशन
android_app::textInputState
को मिटा देते हैं.
ध्यान दें कि android_app::textInputState
, सिंगल
कई टेक्स्ट इनपुट इवेंट होने चाहिए.
आसान उदाहरण के लिए, यह कोड इसके बाद textInputState
फ़्लैग को पोल करता है
ऐप्लिकेशन साइकल के निर्देश, टच इवेंट, और मुख्य इवेंट मैनेज करना:
while (true) {
// Read all pending events.
int events;
struct android_poll_source* source;
while ((ALooper_pollAll(engine.animating ? 0 : -1, nullptr, &events,
(void**)&source)) >= 0) {
// Process this event, etc.
...
// Check if we are exiting.
if (app->destroyRequested != 0) {
engine_term_display(&engine);
return;
}
}
engine_handle_input(app);
// Process text input events if there is any outstanding.
if (app->textInputState) {
// process TextInput events.
...
//reset the textInputState flag
app->textInputState = 0;
}
if (engine.animating) {
// draw frames.
}
}
उपयोगकर्ता का इनपुट टेक्स्ट वापस पाना
इनपुट टेक्स्ट और अन्य स्थितियां GameTextइनपुट के डेटा में इकट्ठा होती हैं
इंटरनल बफ़र, GameTextInput::currentState_
. आवेदन
कॉन्टेंट वापस पाने के लिए, इनमें से किसी एक तरीके का इस्तेमाल कर सकता है:
- GameActivity का रैपर एपीआई (सुझाया गया)
- GameTextइनपुट एपीआई
GameActivity API की मदद से Text Input स्टेट पाएं
ऐप्लिकेशन, सामान्य कॉलबैक सिस्टम से मौजूदा टेक्स्ट इनपुट पाते हैं:
- टेक्स्ट इनपुट इवेंट प्रोसेस करने के लिए,
GameTextInputGetStateCallback
टाइप का कॉलबैक फ़ंक्शन लागू करें. - एक या एक से ज़्यादा नेटवर्क होने पर,
GameActivity_getInputState()
पर कॉल करें बेहतरीन इवेंट. android_app::textInputState
को हटाएं इवेंट प्रोसेस होने के बाद.
पिछले सेक्शन में स्निपेट के साथ जारी रखते हुए, नीचे दिया गया कोड टेक्स्ट इनपुट बफ़र का रेफ़रंस हासिल करता है, उसे प्रोसेस करता है (दिखाया नहीं जाता) और इवेंट फ़्लैग को रीसेट करता है:
extern "C" void GameTextInputGetStateCB(void *ctx, const struct GameTextInputState *state) {
auto* engine = (struct engine*)ctx;
if (!engine || !state) return;
// Process the text event(s).
LOGI("UserInputText: %s", state->text_UTF8);
// Clear the text input flag.
engine->app->textInputState = 0;
}
पिछले सेक्शन में दिखाए गए गेम लूप में, टेक्स्ट की जांच करें और उसे प्रोसेस करें ऊपर दिए गए टेक्स्ट इनपुट हैंडलर के साथ:
if (state->textInputState) {
GameActivity_getTextInputState(
app->activity,
GameTextInputGetStateCB, // App's event handler shown above.
&engine // Context to the GameTextInputGetStateCB function.
);
}
ऐप्लिकेशन, विकल्प के तौर पर GameTextInputState
कॉन्टेंट को इसके साथ शुरू कर सकते हैं
GameActivity_setTextInputState()
.
GameTextइनपुट एपीआई की मदद से Text Input स्टेट पाना
मौजूदा एपीआई को वापस पाने के लिए, ऐप्लिकेशन सीधे तौर पर GameTextInput
API का इस्तेमाल भी कर सकते हैं
GameTextInputState
:
GameActivity_getTextInput()
का इस्तेमाल करें GameActivity का इंटरनलGameTextInput
इंस्टेंस पाने के लिए.GameTextInput
इंस्टेंस उपलब्ध हो. इसके बाद, वहीGameTextInputState
कॉन्टेंट पाने के लिएGameTextInput_getState()
पर कॉल करें.
ध्यान रखें कि ऐप्लिकेशन को GameTextInput
शुरू नहीं करना चाहिए
सीधे; GameActivity
अपनी शुरू करने की प्रोसेस के दौरान ऐसा पहले ही कर देता है.
कॉलबैक का तरीका वही है जो GameActivitys में इस्तेमाल किया जाता है
GameActivity_getTextInputState()
फ़ंक्शन का इस्तेमाल करना होगा.
रेफ़रंस
कॉन्टेंट बनाते समय डेवलपर को इन संसाधनों से मदद मिल सकती है
GameActivity
ऐप्लिकेशन:
- GameActivity शुरू करना
- GameTextइनपुट के उपयोगकर्ता दस्तावेज़
- agdkTunnel सैंपल
- GameActivity के लिए Jeetpack रेफ़रंस दस्तावेज़
- GameTextText के लिए Jeetpack रेफ़रंस दस्तावेज़
- AGDK सोर्स कोड
सुझाव
GameActivity और GameTextText, दोनों Jetpack गेम लाइब्रेरी का हिस्सा हैं. सभी के लिए समस्याओं और सवालों को हल करने के लिए, Google IssueTracker पर गड़बड़ी बनाएं.