2012-03-16 12 views
14

मैं Android TextView में इमोजी आइकन प्रदर्शितप्रदर्शन इमोजी/भावना आइकन

पहले के साथ कुछ समस्या है, मैं इमोजी आइकन की एक सूची यूनिकोड में यहां पर पाया: http://www.easyapns.com/category/just-for-fun

दूसरा, मैंने पाया इमोजी आइकन को यहां कैसे प्रदर्शित करें: https://github.com/sharakova/EmojiTextView/blob/master/src/jp/sharakova/android/emoji/EmojiTextView.java

EmojiTextView.java पूर्वनिर्धारित वर्ण को स्वचालित रूप से इमोजी आइकन में परिवर्तित कर सकता है। इसलिए, मैं स्ट्रिंग में इमोजी आइकन की सभी घटनाओं को कुछ पूर्वनिर्धारित चरित्र में बदलना चाहता हूं, और परिणाम को इमोजीटेक्स्टव्यू.जावा पर डाल देना समस्या यह है कि मेरा कोड स्ट्रिंग में इमोजी आइकन को पहचान नहीं सकता है जिसमें इमोजी आइकन है।

यहाँ मेरी कोड स्निपेट है - मैं अगर इनपुट इमोजी आइकन के किसी भी यूनिकोड से मेल खाते हैं खोजने की कोशिश कर रहा हूँ: यूनिकोड तुलना/सम्मेलन में

// Array list of all emoji icon 
private static final String[] ArrayEUnicodeString ={ 
    "\uE415", 
    "\uE056", 
    "\uE057", 
    ... 
} 

// Nothing matched when it receive emoji icon with unicode "\uE415" from iphone. 'input' is message received from XMPP server 
for (int i=0; i < emojiLength; i++) 
{ 

    if (input.getBytes() == ArrayEUnicodeString[i].getBytes()) 
     Log.e("test", "ArrayEUnicodeString found"); 
} 
// Note: iphone can display the emoji icon if I send "\uE415" 

मैं अच्छा नहीं हूँ। कृपया कोई मेरी मदद कर सकता है, धन्यवाद!

+1

यदि आप अपने ऐप में आईफोन इमोजी ग्राफिक्स को एम्बेड करने की योजना बना रहे हैं, तो ध्यान रखें कि यह कॉपीराइट का उल्लंघन है। अगर आप इससे दूर हो जाते हैं तो यह मुझे आश्चर्य नहीं करेगा (एंड्रॉइड मार्केटप्लेस उन ऐप्स से भरा है जो कॉपीराइट का उल्लंघन करते हैं), लेकिन आपको इसके बारे में पता होना चाहिए। – StilesCrisis

+0

सलाह के लिए धन्यवाद। वैसे भी, क्या आप इनपुट स्ट्रिंग और स्ट्रिंग [] ArrayEUnicodeString इनपुट की तुलना कैसे करें? –

+0

@mobileappBeginner आर एंड्रॉइड में \ ue415 दिखाने में सक्षम है? –

उत्तर

1

आप बाइट्स की तुलना करने के बजाय, "[\ ueue1515 ueue56 \ ue057]" नियमित अभिव्यक्ति का उपयोग करके इमोजी को खोजने का भी प्रयास कर सकते हैं।

4

यह ठीक काम करता है अगर आप इस तरह के रूप में एक चार सरणी स्ट्रिंग बदलने और प्रत्येक चार जाँच,:

StringBuilder sb = new StringBuilder(); 
for (char curr : str.toCharArray()) { 
    sb.append((SUPPORTED_EMOJI_SET.contains(curr)) ? convertCharToImgTag(curr) : curr); 
} 

जहां SUPPORTED_EMOJI_SET सिर्फ वर्ण का एक सेट, उदाहरण के लिए है:

new HashSet<Character>() {{ 
    add('\ue415'); 
    add('\ue056'); 
    ... 
}} 

आप इसे रेगेक्स के साथ भी कर सकते हैं लेकिन मेरा मानना ​​है कि उपरोक्त तेजी से दौड़ेंगे।

+1

@esilver क्या आप कृपया मुझे मार्गदर्शन कर सकते हैं कि मैं किसी भी कॉपीराइट का उल्लंघन किए बिना अपने एंड्रॉइड ऐप में इमोजी आइकन का उपयोग कैसे कर सकता हूं। – ajay

5

आप अपने एप्लिकेशन में सुरक्षित ऐप्पल इमोजी छवियों को क्यों एम्बेड करना चाहते हैं?

यूनिकोड मानक 722 इमोजी जो सिर्फ एक EditText क्षेत्र या TextView में यूनिकोड वर्ण दर्ज करके Android के डिफ़ॉल्ट फ़ॉन्ट द्वारा प्रदर्शित किया जा सकता शामिल हैं।

आप, साथ साथ निम्नलिखित पुस्तकालय (फ़ोल्डर "जावा" में) का उपयोग कर सकते अपने आप संगत यूनिकोड इमोजी पर :-) जैसे लोकप्रिय इमोटिकॉन्स कन्वर्ट करने के लिए:

https://github.com/delight-im/Emoji

1

यहाँ, कृपया नीचे के माध्यम से जाना समाधान:

समस्या: अंदर इमोजी, स्ट्रिंग के बजाय TextView \ ue415 \ ue056 \ ue057 showin है जी।

मूल कारण: जावा या एंड्रॉयड में, इमोजी के प्रोग्राम के रूप में स्ट्रिंग प्रतिनिधित्व आप के रूप में \\ \\ ue415 ue056 \\ ue057 मिल जाएगा। लेकिन जब आप कंसोल या लॉगकैट में एक ही स्ट्रिंग को मुद्रित करने का प्रयास करते हैं तो चरित्र से बच निकलें और आपको स्ट्रिंग मिल जाएगी \ ue415 \ ue056 \ ue057 क्योंकि इस समस्या का मूल कारण पता लगाने योग्य नहीं है।

समाधान: इस समस्या को हल करने के लिए, हमें बचने के चरित्र को संभालने की आवश्यकता है। मैंने नीचे दी गई विधि बनाई है जो इस समस्या को हल करती है।

public static String getEmojiFromString(String emojiString) { 

    if (!emojiString.contains("\\u")) { 

     return emojiString; 
    } 
    String emojiEncodedString = ""; 

    int position = emojiString.indexOf("\\u"); 

    while (position != -1) { 

     if (position != 0) { 
      emojiEncodedString += emojiString.substring(0, position); 
     } 

     String token = emojiString.substring(position + 2, position + 6); 
     emojiString = emojiString.substring(position + 6); 
     emojiEncodedString += (char) Integer.parseInt(token, 16); 
     position = emojiString.indexOf("\\u"); 
    } 
    emojiEncodedString += emojiString; 

    return emojiEncodedString; 
}  
संबंधित मुद्दे