2016-08-28 19 views
9

By mã, tôi có thể làm cho một nút đó chèn các biểu tượng cảm xúc 3 vào văn bản: ⚽️Làm thế nào để phát hiện hỗ trợ biểu tượng cảm xúc trên Android theo mã

Trên nhiều điện thoại khi người dùng nhấp chuột vào nút, tuy nhiên, vấn đề là ⚽️ hiển thị dưới dạng [X] [X] [X]. Hoặc thậm chí tệ hơn, nó chỉ hiển thị ba không gian trống.

Tôi muốn tắt và ẩn bàn phím biểu tượng cảm xúc tích hợp sẵn trên thiết bị Android không hiển thị biểu tượng cảm xúc chính xác. Có ai biết hoặc có mẹo về cách phát hiện trong mã nếu thiết bị có hỗ trợ biểu tượng cảm xúc không?

Tôi đã đọc emoji được hỗ trợ từ Android 4.1, nhưng đó không phải là kinh nghiệm của tôi ....

+0

Tôi nghi ngờ X là từ iPhone hoặc iPad của Apple, v.v. Tôi đã có một chiếc Galaxy trong nhiều năm và mọi người trong gia đình tôi đều có iPhone. Tôi sẽ luôn luôn nhận được tin nhắn và sau đó của X chứ không phải là biểu tượng cảm xúc nó được cho là. – mlegg

+0

Tôi có thể là một vấn đề với iphone vs android emojis, nhưng tôi muốn thử phát hiện sự hỗ trợ của một biểu tượng cảm xúc bằng mã, tôi nghĩ rằng đó sẽ là an toàn nhất. –

+0

Nếu bạn đã kết thúc giải quyết vấn đề của mình, tôi sẽ quan tâm đến việc xem chi tiết về những gì bạn đã làm. – Suragch

Trả lời

8

tôi chỉ thực hiện một giải pháp cho vấn đề này bản thân mình. Điều tuyệt vời với Android là nó là nguồn mở để khi bạn gặp những vấn đề như thế này, có một cơ hội tốt để bạn có thể tìm ra cách tiếp cận để giúp bạn.

Trong dự án mã nguồn mở Android, bạn có thể tìm thấy phương thức mà họ sử dụng Paint.hasGlyph để phát hiện xem phông chữ có tồn tại cho biểu tượng cảm xúc đã cho hay không. Tuy nhiên, vì phương pháp này không có sẵn trước API 23, chúng cũng thực hiện kiểm tra hiển thị và so sánh kết quả với chiều rộng của 'đậu phụ' (ký tự [x] mà bạn đề cập trong bài đăng của mình.)

Có một số lỗi khác với cách tiếp cận này, nhưng nó sẽ là đủ để giúp bạn bắt đầu.

Google nguồn:

+0

cờ/kiểm tra chim cánh cụt này không thành công trên trang 4 của tôi.1 thiết bị, chắc chắn có biểu tượng cảm xúc: ( – djdance

4

Dựa trên Jason Gore trả lời:

Ví dụ tạo boolean canShowFlagEmoji:

private static boolean canShowFlagEmoji() { 
     Paint paint = new Paint(); 
     String switzerland = "\uD83C\uDDE8\uD83C\uDDED"; // Here enter Surrogates of Emoji 
     try { 
      return paint.hasGlyph(switzerland); 
     } catch (NoSuchMethodError e) { 
      // Compare display width of single-codepoint emoji to width of flag emoji to determine 
      // whether flag is rendered as single glyph or two adjacent regional indicator symbols. 
      float flagWidth = paint.measureText(switzerland); 
      float standardWidth = paint.measureText("\uD83D\uDC27"); // U+1F427 Penguin 
      return flagWidth < standardWidth * 1.25; 
      // This assumes that a valid glyph for the flag emoji must be less than 1.25 times 
      // the width of the penguin. 
     } 
    } 

Và sau đó trong mã bất cứ khi nào khi bạn cần phải kiểm tra xem biểu tượng cảm xúc có sẵn:

if (canShowFlagEmoji() == true){ 
    // Code when FlagEmoji is available 
} else { 
    // And when not 
} 

Surrogates của biểu tượng cảm xúc bạn có thể nhận here, khi bạn click vào chi tiết.

+1

Tôi chưa có cơ hội để kiểm tra điều này, nhưng nhận được một số mã thực tế trong câu trả lời chắc chắn là một sự cải tiến chỉ trên các liên kết. – Suragch

+0

Chỉ dành cho api 23 ... – Woz

1

Một lựa chọn thay thế có thể là để bao gồm Android "Emoji Compatibility" thư viện, trong đó sẽ phát hiện và thêm bất kỳ yêu cầu ký tự Emoji vào các ứng dụng chạy trên Android 4.4 (API 19) và sau đó là: https://developer.android.com/topic/libraries/support-library/preview/emoji-compat.html

+0

Cảm ơn bạn nhưng Thư viện đó không thú vị để giải quyết. Bạn phải thực hiện khởi tạo kịp thời đặc biệt thư viện chứ không đề cập đến các mối quan tâm khác – JamisonMan111

Các vấn đề liên quan