गेमटेक्स्ट इनपुट Android गेम डेवलपमेंट किट का हिस्सा.
GameTextInput
लाइब्रेरी का इस्तेमाल करने पर
यह एक फ़ुल-स्क्रीन Android ऐप्लिकेशन लिखने का आसान विकल्प है.
लेख इनपुट के लिए कीबोर्ड.
GameTextInput
सॉफ़्ट को दिखाने या छिपाने के लिए एक आसान एपीआई उपलब्ध कराता है
टेक्स्ट को कीबोर्ड की मदद से सेट कर सकते हैं, मौजूदा बदलाव किया गया टेक्स्ट सेट कर सकते हैं या उसे पा सकते हैं, और जब
तो टेक्स्ट बदल जाता है. यह पूरी तरह से डेवलप किए गए टेक्स्ट एडिटर ऐप्लिकेशन के लिए नहीं है. हालांकि,
में सामान्य उपयोग के उदाहरणों के लिए अब भी चुनने और लिखने की सुविधा दी जाती है
गेम. साथ ही, यह लाइब्रेरी बेहतर इनपुट विधि संपादक का समर्थन करती है
(IME) सुविधाएं, जैसे कि स्पेल-
पूरा हो चुका है, और एक से ज़्यादा कुंजी वाले वर्ण शामिल हैं.
इंटरनल तौर पर, GameTextInput
, इनपुट टेक्स्ट को इकट्ठा करता है. साथ ही, यह
संबंधित स्थिति) को इंटरनल बफ़र GameTextInput::currentState_
में सेव करता है और सूचना देता है
किसी भी बदलाव पर लागू होता है. इसके बाद, ऐप्लिकेशन अपनी
रजिस्टर किए गए कॉलबैक फ़ंक्शन.
उपलब्धता
GameTextInput
का इस्तेमाल इन तरीकों से किया जा सकता है:
GameActivity के साथ: GameActivity ने GameTextइनपुट को इंटिग्रेट किया है. GameActivity का इस्तेमाल करने वाले ऐप्लिकेशन, Android के साथ इंटिग्रेट की गई GameTextइनपुट. इस्तेमाल करने से जुड़े निर्देशों के बारे में पूरी जानकारी दी गई है गेम ऐक्टिविटी पेज पर जाएं. GameActivity और GameTextText इंटिग्रेशन का सैंपल है. इसके बारे में ज़्यादा जानने के लिए, गेम के सैंपल का डेटा स्टोर करने की जगह. इस्तेमाल का यह मॉडल इस गाइड के दायरे में नहीं आता.
स्टैंडअलोन लाइब्रेरी के तौर पर: बाकी गाइड में इस्तेमाल के चरणों के बारे में बताया गया है.
ध्यान दें कि ऊपर दिए गए दोनों तरीके म्युचुअली एक्सक्लूसिव हैं.
GameTextInput
की औपचारिक रिलीज़ इन चैनलों पर उपलब्ध हैं:
- Google Maven में Jetpack गेम लाइब्रेरी रिलीज़
- एजीडीके डाउनलोड पेज पर ज़िप फ़ाइल रिलीज़
इस गाइड में, इस्तेमाल के पहले उदाहरण के बारे में बताया गया है. ज़िप फ़ाइल रिलीज़ का इस्तेमाल करने के लिए, पैकेज में शिप किए गए निर्देश देखें.
अपना बिल्ड सेट अप करें
GameTextInput
को Android संग्रह (AAR) के तौर पर डिस्ट्रिब्यूट किया जाता है. इस एएआर में Java क्लास और
C सोर्स कोड, GameTextInput
की नेटिव सुविधाओं को लागू करता है. आपने लोगों तक पहुंचाया मुफ़्त में
के द्वारा इन स्रोत फ़ाइलों को आपकी बिल्ड प्रोसेस के भाग के रूप में शामिल करना होगा
Prefab
जो आपके CMake प्रोजेक्ट या NDK बिल्ड में नेटिव लाइब्रेरी और सोर्स कोड दिखाता है.
इसके लिए, Jetpack Android Games पेज पर जाकर
GameTextInput
लाइब्रेरी डिपेंडेंसी आपके गेम कीbuild.gradle
फ़ाइल पर निर्भर करती है. नोट जोड़ें अगर आपके ऐप्लिकेशन GameActivity का इस्तेमाल कर रहे हैं, तो वे स्टैंडअलोनGameTextInput
लाइब्रेरी.पक्का करें कि
gradle.properties
में ये लाइनें शामिल हों:# Tell Android Studio we are using AndroidX. android.useAndroidX=true # Use Prefab 1.1.2 or higher, which contains a fix for "header only" libs. android.prefabVersion=1.1.2 # Required only if you're using Android Studio 4.0 (4.1 is recommended). # android.enablePrefab=true
game-text-input
पैकेज इंपोर्ट करें और इसे अपने टारगेट में जोड़ें प्रोजेक्ट कीCMakeLists.txt
फ़ाइल:find_package(game-text-input REQUIRED CONFIG) ... target_link_libraries(... game-text-input::game-text-input)
अपने गेम की किसी एक
.cpp
फ़ाइल में, शामिल करने के लिए यह लाइन जोड़ेंGameTextInput
को लागू करने की प्रक्रिया:#include <game-text-input/gametextinput.cpp>
GameTextInput
C API का इस्तेमाल करने वाली सोर्स फ़ाइलों में, हेडर शामिल करें फ़ाइल:#include <game-text-input/gametextinput.h>
ऐप्लिकेशन को कंपाइल करें और चलाएं. अगर CMake से जुड़ी गड़बड़ियां हैं, तो एएआर की पुष्टि करें और
build.gradle
फ़ाइलें सही तरीके से सेट अप हैं. अगर#include
फ़ाइल नहीं मिला, अपनीCMakeLists.txt
कॉन्फ़िगरेशन फ़ाइल सत्यापित करें.
अपने बिल्ड को इंटिग्रेट करें
आपके उस C थ्रेड से जो पहले से ही JVM या ऐप्लिकेशन के मुख्य एलिमेंट से अटैच है थ्रेड,
GameTextInput_init
पर कॉल करोJNIEnv
पॉइंटर के साथ.static GameTextInput* gameTextInput = nullptr; extern "C" JNIEXPORT void JNICALL Java_com_gametextinput_testbed_MainActivity_onCreated(JNIEnv* env, jobject this) { { if(!gameTextInput) gameTextInput = GameTextInput_init(env); ... }
इसके ऐक्सेस के साथ एक
InputEnabledTextView
Java क्लास बनाएंInputConnection
.public class InputEnabledTextView extends View implements Listener { public InputConnection mInputConnection; public InputEnabledTextView(Context context, AttributeSet attrs) { super(context, attrs); } public InputEnabledTextView(Context context) { super(context); } public void createInputConnection(int inputType) { EditorInfo editorInfo = new EditorInfo(); editorInfo.inputType = inputType; editorInfo.actionId = IME_ACTION_NONE; editorInfo.imeOptions = IME_FLAG_NO_FULLSCREEN; mInputConnection = new InputConnection(this.getContext(), this, new Settings(editorInfo, true) ).setListener(this); } @Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { if (outAttrs != null) { GameTextInput.copyEditorInfo(mInputConnection.getEditorInfo(), outAttrs); } return mInputConnection; } // Called when the IME input changes. @Override public void stateChanged(State newState, boolean dismissed) { onTextInputEventNative(newState); } @Override public void onImeInsetsChanged(Insets insets) { // handle Inset changes here } private native void onTextInputEventNative(State softKeyboardEvent); }
बनाए गए
InputEnabledTextView
को यूज़र इंटरफ़ेस (यूआई) लेआउट में जोड़ें. उदाहरण के लिए,activity_main.xml
में नीचे दिया गया कोड, इसे सबसे नीचे रख सकता है: स्क्रीन:<com.android.example.gametextinputjava.InputEnabledTextView android:id="@+id/input_enabled_text_view" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" />
अपनी Java गतिविधि में इस नई
InputEnabledTextView
क्लास को वापस पाएं. यह है व्यू बाइंडिंग का इस्तेमाल करने पर, डेटा को आसानी से मेज़र किया जा सकता है:public class MainActivity extends AppCompatActivity { ... private ActivityMainBinding binding; private InputEnabledTextView inputEnabledTextView; private native void setInputConnectionNative(InputConnection c); @Override protected void onCreate(Bundle savedInstanceState) { ... binding = ActivityMainBinding.inflate(getLayoutInflater()); inputEnabledTextView = binding.inputEnabledTextView; inputEnabledTextView.createInputConnection(InputType.TYPE_CLASS_TEXT); setInputConnectionNative(inputEnabledTextView.mInputConnection); }
अपनी C लाइब्रेरी में,
inputConnection
को पास करेंGameTextInput_setInputConnection
. कॉलबैक का अनुरोध सबमिट करेंGameTextInput_setEventCallback
C स्थिति निर्देशGameTextInputState
के तौर पर इवेंट की सूचना पाने के लिए.extern "C"JNIEXPORT void JNICALL Java_com_gametextinput_testbed_MainActivity_setInputConnectionNative( JNIEnv *env, jobject this, jobject inputConnection) { GameTextInput_setInputConnection(gameTextInput, inputConnection); GameTextInput_setEventCallback(gameTextInput,[](void *ctx, const GameTexgtInputState *state) { if (!env || !state) return; // process the newly arrived text input from user. __android_log_print(ANDROID_LOG_INFO, "TheGreateGameTextInput", state->text_UTF8); }, env); }
अपनी C लाइब्रेरी में, इस नंबर पर कॉल करें
GameTextInput_processEvent
, जो पिछले चरण में रजिस्टर किए गए कॉलबैक को अंदरूनी तौर पर कॉल करता है आपका ऐप्लिकेशन, स्थिति बदलने पर इवेंट हैंडल करे.extern "C" JNIEXPORT void JNICALL Java_com_gametextinput_testbed_InputEnabledTextView_onTextInputEventNative( JNIEnv* env, jobject this, jobject soft_keyboard_event) { GameTextInput_processEvent(gameTextInput, soft_keyboard_event); }
यूटिलिटी फ़ंक्शन
GameTextInput
लाइब्रेरी में यूटिलिटी फ़ंक्शन शामिल हैं. इनकी मदद से, इनका फ़ॉर्मैट बदला जा सकता है
जावा स्टेट ऑब्जेक्ट और C स्टेट स्ट्रक्चर के बीच में. शो दिखाने से जुड़ी सुविधाओं का ऐक्सेस
GameTextInput_showIme
के ज़रिए IME को छिपाता है
और GameTextInput_hideIme
फ़ंक्शन.
रेफ़रंस
Family Link की मदद से ऐप्लिकेशन बनाते समय, डेवलपर को ये चीज़ें मददगार लग सकती हैं
GameTextInput
:
- GameTextइनपुट के टेस्ट ऐप्लिकेशन
- GameActivity के साथ GameTextइनपुट का इस्तेमाल करना
- GameTextइनपुट रेफ़रंस दस्तावेज़
- GameTextइनपुट का सोर्स कोड
सुझाव
GameTextInput
से जुड़ी किसी भी समस्या और सवाल के लिए, बनाएं
Google IssueTracker पर गड़बड़ी.