2013-09-06 4 views
10

में एक चरित्र परिवर्तित मैं एक चरित्र है और मैं इसे KeyEvent कीकोड बाधाओं http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_0कीकोड

अगर मैं एक चरित्र है जैसा

में कनवर्ट करना चाहते हैं '0' मैं

कुंजी कोड निरंतर में परिवर्तित करने के वान : '0' कुंजी।

लगातार मूल्य: (0x00000007)

KeyEvent पेज के रूप में विनिर्दिष्ट। ऐसा करने के लिए सबसे अच्छी विधि क्या हो सकती है? क्या ऐसा करने के लिए कोई पूर्वनिर्धारित कार्य है?

+0

क्या आप उस चरित्र को जान लेंगे जिसे परिवर्तित करने की आवश्यकता है? क्या यह स्थिर है या क्या यह उपयोगकर्ता के आधार पर बदल जाएगा? – user2483079

+0

विभिन्न कीबोर्ड विभिन्न स्थिरांक का उपयोग करेंगे ... कहा जा रहा है कि, KEYCODE_0 एक 'सार्वजनिक स्थिर अंतिम int' है, इसलिए आप अपने ऐप के माध्यम से किसी भी संख्या 7 के बजाय उस नाम का आह्वान कर सकते हैं ... व्यक्तिगत रूप से, मेरे भाग्यशाली नंबर KEYCODE_0 और KEYCODE_6 हैं। – Shark

+0

यूप, यही वह है जो मैं उल्लेख करने जा रहा था लेकिन यह स्थिर नहीं है अगर यह काफी आसान नहीं है। – user2483079

उत्तर

2

नहीं, आप इनपुट से "0" अक्षर नहीं पढ़ सकते हैं और इसे KeyEvent.KEYCODE_0 में बदलने के लिए जादुई फ़ंक्शन का उपयोग नहीं कर सकते हैं ... यदि आप करते हैं, तो आपको एक पार्सर लिखना होगा जो पढ़ने वाले पत्र पर स्विच करता है और इन मूल्यों को स्वयं वापस करें।

मुझे पता है कि चरित्र पढ़ने से पहले आपको onKey() में चीज़ को कैप्चर करना चाहिए था। कुंजी आप इस तरह से संभाल करने की जरूरत की संख्या पर निर्भर करता है, एक आभासी एंड्रॉयड कीबोर्ड, अपने ही एकमात्र विकल्प हो सकता है अगर यह बॉयलरप्लेट कोड जावा/Android के लिए चाल

switch(keyPress) 
{ 
    case '0': return KeyEvent.KEYCODE_0; 
    case '1': return ... 
    //... 
    case 'Z': return KeyEvent.KEYCODE_Z; 
} 
2

मैं अभी भी नया कर रहा हूँ ऐसा नहीं करता है, तो मेरा जवाब बॉक्स से बाहर काम नहीं कर सकता है, लेकिन आप अभी भी विचार प्राप्त कर सकते हैं।

import android.view.KeyCharacterMap; 
import android.view.KeyEvent;  
... 
public class Sample { 
    ... 
    public boolean convertStringToKeyCode(String text) { 

     KeyCharacterMap mKeyCharacterMap = 
      KeyCharacterMap.load(KeyCharacterMap.VIRTUAL_KEYBOARD); 

     KeyEvent[] events = mKeyCharacterMap.getEvents(text.toCharArray()); 

     for (KeyEvent event2 : events) { 
      // We get key events for both UP and DOWN actions, 
      // so we may just need one. 
      if (event2.getAction() == 0) { 
       int keycode = event2.getKeyCode(); 
       // Do some work 
      } 
     } 
} 

मैं विचार जब मैं uiautomator ढांचे source code में sendText विधि का कोड पढ़ रहा था मिल गया:

1

बहुत अशिष्ट समाधान लेकिन सबसे पात्रों के लिए काम करता है।

, एक अपरकेस करने के लिए याद रखें अपने पाठ छोटे अक्षरों में शामिल है, तो आप उस मामले में META_SHIFT_ON जोड़ सकते हैं यदि आप तो एक KeyEvent

for (int i = 0; i < text.length(); i++) { 
     final char ch = text.charAt(i); 
     try { 
      dispatch(KeyEvent.class.getField("KEYCODE_" + ch).getInt(null)); 
     } catch (Exception e) { 
      Log.e(_TAG, "Unknown keycode for " + ch); 
     } 
    } 
6

यहाँ भेजने के लिए एक समाधान मैं वेब दृश्य में वर्ण डाल करने के लिए उपयोग करते हैं:

char[] szRes = szStringText.toCharArray(); // Convert String to Char array 

KeyCharacterMap CharMap; 
if(Build.VERSION.SDK_INT >= 11) // My soft runs until API 5 
    CharMap = KeyCharacterMap.load(KeyCharacterMap.VIRTUAL_KEYBOARD); 
else 
    CharMap = KeyCharacterMap.load(KeyCharacterMap.ALPHA); 

KeyEvent[] events = CharMap.getEvents(szRes); 

for(int i=0; i<events.length; i++) 
    MainWebView.dispatchKeyEvent(events[i]); // MainWebView is webview 
संबंधित मुद्दे