Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

एंड्रॉइड ऐप में इमोजी कीबोर्ड कैसे इंटीग्रेट करें?

एंड्रॉइड ऐप में इमोजी कीबोर्ड इंटीग्रेशन

यह ट्यूटोरियल पॉपुलर SuperNova-Emoji लाइब्रेरी का उपयोग करके इमोजी कीबोर्ड जोड़ने का तरीका दिखाता है, साथ ही मॉडर्न विकल्प भी।

निर्भरताएं (build.gradle)

// Project-level build.gradle
repositories {
    maven { url 'https://jitpack.io' }
}

// Module-level build.gradle
dependencies {
    // SuperNova-Emoji (लिगेसी लेकिन काम करता है)
    implementation 'com.github.hani-momanii:SuperNova-Emoji:1.1'
    
    // या मॉडर्न विकल्प:
    // implementation "com.google.android.material:material:1.10.0" // Material इमोजी सपोर्ट
    // implementation "io.github.rockerhieu:emojicon:1.4.0" // Emojicon लाइब्रेरी
}

लेआउट (activity_main.xml)

<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:emojicon="https://schemas.android.com/apk/res-auto"
    android:id="@+id/root_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFF"
    android:padding="16dp">

    <!-- इमोजी डिस्प्ले एरिया -->
    <hani.momanii.supernova_emoji_library.Helper.EmojiconTextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_marginTop="26dp"
        android:lineSpacingExtra="17sp"
        android:text="नमस्ते इमोजी! 😀🎉"
        android:textAppearance="@style/TextAppearance.AppCompat.Large"
        android:textColor="#000000"
        emojicon:emojiconAlignment="bottom" />

    <!-- इमोजी इनपुट एरिया -->
    <hani.momanii.supernova_emoji_library.Helper.EmojiconEditText
        android:id="@+id/emojicon_edit_text2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@id/emojicon_edit_text"
        android:imeOptions="actionSend"
        android:inputType="text"
        emojicon:emojiconSize="28sp" />

    <hani.momanii.supernova_emoji_library.Helper.EmojiconEditText
        android:id="@+id/emojicon_edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_toLeftOf="@id/submit_btn"
        android:layout_toRightOf="@id/emoji_btn"
        android:imeOptions="actionSend"
        android:inputType="text"
        emojicon:emojiconSize="28sp" />

    <ImageView
        android:id="@+id/emoji_btn"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:padding="4dp"
        android:src="@drawable/ic_emoji" />

    <ImageView
        android:id="@+id/submit_btn"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:padding="4dp"
        android:src="@android:drawable/ic_menu_send" />

    <CheckBox
        android:id="@+id/use_system_default"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/textView"
        android:layout_centerHorizontal="true"
        android:text="सिस्टम डिफ़ॉल्ट इमोजी उपयोग करें?" />
</RelativeLayout>

MainActivity.java

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
import hani.momanii.supernova_emoji_library.Actions.EmojIconActions;
import hani.momanii.supernova_emoji_library.Helper.EmojiconEditText;
import hani.momanii.supernova_emoji_library.Helper.EmojiconTextView;

public class MainActivity extends AppCompatActivity {
    private EmojiconEditText emojiconEditText, emojiconEditText2;
    private EmojiconTextView textView;
    private ImageView emojiButton, submitButton;
    private View rootView;
    private EmojIconActions emojIcon;
    private CheckBox useSystemDefault;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initViews();
        setupEmojiKeyboard();
        setupListeners();
    }

    private void initViews() {
        rootView = findViewById(R.id.root_view);
        emojiButton = findViewById(R.id.emoji_btn);
        submitButton = findViewById(R.id.submit_btn);
        useSystemDefault = findViewById(R.id.use_system_default);
        emojiconEditText = findViewById(R.id.emojicon_edit_text);
        emojiconEditText2 = findViewById(R.id.emojicon_edit_text2);
        textView = findViewById(R.id.textView);
    }

    private void setupEmojiKeyboard() {
        emojIcon = new EmojIconActions(this, rootView, emojiconEditText, emojiButton);
        emojIcon.ShowEmojIcon();
        
        // अतिरिक्त EditText के लिए इमोजी इनेबल करें
        emojIcon.addEmojiconEditTextList(emojiconEditText2);
        
        // कीबोर्ड लिस्टनर
        emojIcon.setKeyboardListener(new EmojIconActions.KeyboardListener() {
            @Override
            public void onKeyboardOpen() {
                Log.d("EmojiKeyboard", "खुला");
            }
            @Override
            public void onKeyboardClose() {
                Log.d("EmojiKeyboard", "बंद");
            }
        });
    }

    private void setupListeners() {
        // सिस्टम डिफ़ॉल्ट इमोजी टॉगल
        useSystemDefault.setOnCheckedChangeListener((buttonView, isChecked) -> {
            emojIcon.setUseSystemEmoji(isChecked);
            textView.setUseSystemDefault(isChecked);
        });

        // भेजें बटन
        submitButton.setOnClickListener(v -> {
            String newText = emojiconEditText.getText().toString();
            textView.setText(newText);
        });
    }
}

मॉडर्न विकल्प: EmojiCompat (AndroidX)

लाइब्रेरी के बिना सिस्टम इमोजी सपोर्ट के लिए:

build.gradle

dependencies {
    implementation "androidx.emoji2:emoji2:1.2.0"
    implementation "androidx.emoji2:emoji2-bundled:1.2.0" // बंडल्ड फॉन्ट
}

Application क्लास में इनिशियलाइज़ेशन

import android.app.Application;
import androidx.emoji2.text.EmojiCompat;
import androidx.emoji2.bundled.BundledEmojiCompatConfig;

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        EmojiCompat.init(new BundledEmojiCompatConfig(this));
    }
}

XML में उपयोग (ऑटोमैटिक)

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="नमस्ते 😀🎉🚀" />

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="इमोजी टाइप करें" />

तुलना

समाधान पक्ष विपक्ष
SuperNova-Emoji कस्टम इमोजी कीबोर्ड UI, कस्टम इमोजी सपोर्ट मेंटेन नहीं, बड़ा APK साइज़
EmojiCompat (AndroidX) ऑफिशियल, लाइटवेट, ऑटो-अपडेट, कोई UI नहीं चाहिए केवल रेंडरिंग, कीबोर्ड UI नहीं
Emojicon / EmojiOne कस्टम इमोजी सेट्स, कीबोर्ड UI थर्ड-पार्टी निर्भरता

बेस्ट प्रैक्टिस

अधिकांश मॉडर्न ऐप्स के लिए: EmojiCompat (bundled) का उपयोग करें रेंडरिंग के लिए, और सिस्टम कीबोर्ड पर भरोसा करें इमोजी इनपुट के लिए। कस्टम कीबोर्ड UI केवल विशेष आवश्यकताओं के लिए बनाएं।

  1. एंड्रॉइड ऐप में TextToSpeech कैसे बनाएं? एंड्रॉइड ऐप में TextToSpeech कैसे बनाएं?

    एंड्रॉइड ऐप में टेक्स्ट-टू-स्पीच (TTS) लागू करना यह उदाहरण दिखाता है कि एंड्रॉइड ऐप में TextToSpeech फीचर कैसे जोड़ा जाता है, जिससे ऐप लिखे गए टेक्स्ट को आवाज़ में बदल सके। चरण 1: नया प्रोजेक्ट बनाएं Android Studio खोलें, File → New Project चुनें और आवश्यक विवरण भरकर नया प्रोजेक्ट बनाएं। चरण 2: ले

  1. Facebook पर Android ऐप कैसे बनाएं? Facebook पर Android ऐप कैसे बनाएं?

    Facebook Developer Console पर ऐप बनाकर App ID प्राप्त करने की चरण-दर-चरण प्रक्रिया। चरण 1: Facebook Developer Console पर ऐप बनाएं developers.facebook.com पर जाएं My Apps → Create App चुनें ऐप नाम और ईमेल दर्ज करें Create App ID पर क्लिक करें चरण 2: Android Studio में SDK जोड़ें प्रोजेक्ट-लेवल bu

  1. एंड्रॉइड ऐप में टेक्स्ट फ़ाइल कैसे पढ़ें (raw रिसोर्स से) एंड्रॉइड ऐप में टेक्स्ट फ़ाइल कैसे पढ़ें (raw रिसोर्स से)

    res/raw फोल्डर से टेक्स्ट फ़ाइल पढ़ने का पूरा उदाहरण एंड्रॉइड में res/raw/ फोल्डर में रखी टेक्स्ट फ़ाइलों को InputStream और BufferedReader के माध्यम से पढ़ा जा सकता है। यह रॉ रिसोर्सेज एपीके में अनकंप्रेस्ड रहते हैं और रनटाइम पर एक्सेसिबल होते हैं। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में प्रो