অ্যান্ড্রয়েড গেম ডেভেলপমেন্ট কিটের গেম অ্যাক্টিভিটি অংশে টেক্সটইনপুট।
GameActivity GameTextInput এর দ্বারা সংহত করে:
- একটি মোড়ক প্রদান
- নতুন পাঠ্য ইনপুট ইভেন্ট উপলব্ধতার জন্য একটি পতাকা তৈরি করা
- সরাসরি টেক্সট বিষয়বস্তুর জন্য GameTextInput এর স্টেট বাফার ব্যবহার করে
নিম্নলিখিত চিত্রে দেখানো হয়েছে, অ্যাপ্লিকেশনগুলি ব্যবহারকারীর পাঠ্য ইনপুট উদ্দেশ্যে বিভিন্ন অভ্যন্তরীণ লজিক্যাল উপাদান ব্যবহার করে:
অন্তর্নির্মিত GameTextInput
লাইব্রেরি ব্যবহার করার জন্য তিনটি বিস্তৃত পদক্ষেপ রয়েছে:
- UI-তে নরম কীবোর্ড নিয়ন্ত্রণ করা হচ্ছে
- নতুন টেক্সট উপলব্ধ যখন জানা
- ব্যবহারকারীর ইনপুট পাঠ্য এবং এর অবস্থা পুনরুদ্ধার করা হচ্ছে
এই নথির বাকি অংশ বিস্তারিতভাবে তাদের বর্ণনা করে। GameActivity
সহ GameTextInput
এর উদাহরণের জন্য, গেমস-নমুনা সংগ্রহস্থল দেখুন।
UI-তে নরম কীবোর্ড নিয়ন্ত্রণ করুন
GameActivity
UI-তে নরম কীবোর্ড নিয়ন্ত্রণ করতে দুটি ফাংশন প্রদান করে:
-
GameActivity_showSoftInput()
নরম কীবোর্ড প্রদর্শন করে। -
GameActivity_hideSoftInput()
নরম কীবোর্ড লুকিয়ে রাখে।
তাদের সংজ্ঞার জন্য API রেফারেন্স ডক্স পড়ুন। কীবোর্ড প্রদর্শিত হওয়ার পরে, অ্যাপ্লিকেশনটির UI নিম্নলিখিতগুলির মতো দেখতে হতে পারে:
পাঠ্য উপলব্ধতার জন্য পরীক্ষা করুন
নরম কীবোর্ড ইভেন্টগুলি জাভা সাইডের GameTextInput
থেকে 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.
}
}
ব্যবহারকারীর ইনপুট পাঠ্য পুনরুদ্ধার করুন
ইনপুট টেক্সট এবং অন্যান্য স্টেটগুলি GameTextInput এর অভ্যন্তরীণ বাফার, GameTextInput::currentState_
এ জমা হয়। অ্যাপ্লিকেশনগুলি এর সামগ্রী পুনরুদ্ধার করতে নিম্নলিখিত উপায়গুলির মধ্যে একটি ব্যবহার করতে পারে:
- GameActivity এর র্যাপার API (প্রস্তাবিত)
- GameTextInput API
GameActivity API সহ TextInput অবস্থা পান
অ্যাপ্লিকেশনগুলি সাধারণ কলব্যাক প্রক্রিয়া সহ বর্তমান পাঠ্য ইনপুট অর্জন করে:
- টেক্সট ইনপুট ইভেন্ট প্রক্রিয়া করতে
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.
);
}
অ্যাপ্লিকেশনগুলি ঐচ্ছিকভাবে GameActivity_setTextInputState()
দিয়ে GameTextInputState
বিষয়বস্তু শুরু করতে পারে।
GameTextInput API এর সাথে TextInput অবস্থা পান
বর্তমান GameTextInputState
পুনরুদ্ধার করতে অ্যাপ্লিকেশনগুলি সরাসরি GameTextInput
API ব্যবহার করতে পারে:
- GameActivity এর অভ্যন্তরীণ
GameTextInput
উদাহরণ পেতেGameActivity_getTextInput()
ব্যবহার করুন। -
GameTextInput
ইনস্ট্যান্স হাতে নিয়ে, একইGameTextInputState
সামগ্রী পেতেGameTextInput_getState()
কল করুন।
আবার, মনে রাখবেন যে অ্যাপ্লিকেশনগুলিকে সরাসরি GameTextInput
শুরু করা উচিত নয়; GameActivity
ইতিমধ্যেই এটি শুরু করার প্রক্রিয়ার সময় করে।
কলব্যাক পদ্ধতিটি GameActivity-এর GameActivity_getTextInputState()
ফাংশন দ্বারা ব্যবহৃত একই রকম।
তথ্যসূত্র
GameActivity
অ্যাপ্লিকেশন তৈরি করার সময় বিকাশকারীরা নিম্নলিখিত সংস্থানগুলিকে সহায়ক মনে করতে পারে:
- গেম অ্যাক্টিভিটি শুরু করুন
- GameTextInput ব্যবহারকারী ডকুমেন্টেশন
- agdkTunnel নমুনা
- গেমঅ্যাক্টিভিটির জন্য জেটপ্যাক রেফারেন্স ডকুমেন্টেশন
- GameTextInput এর জন্য Jetpack রেফারেন্স ডকুমেন্টেশন
- AGDK সোর্স কোড
প্রতিক্রিয়া
GameActivity এবং GameTextInput উভয়ই Jetpack গেম লাইব্রেরির অংশ। যেকোনো সমস্যা এবং প্রশ্নের জন্য, Google IssueTracker-এ একটি বাগ তৈরি করুন।