2015-06-25 2 views
-1

Это их способ получить событие щелчка клавиатуры в Android? На самом деле я разрабатываю одно приложение и нуждаюсь в событии кликов на клавиатуре. Например, если пользователь нажимает алфавиты «a» с клавиатуры на Android-телефоне, тогда я хочу событие click «a». Недавно я наткнулся на onKeyListener и использовал различные KeyCode, но в итоге это мне не помогло.Как получить событие щелчка клавиатуры в Android?

public class KeyCode { 


    private Context con; 
    private EditText edt; 
    private ArrayList<String> array; 


    public KeyCode(Context con, final ArrayList<String> array, final EditText edt) 
    { 

     // TODO Auto-generated constructor stub 

     this.array=array; 
     this.con=con; 
     this.edt=edt; 


     edt.setOnKeyListener(new View.OnKeyListener() { 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 


       if(keyCode==event.KEYCODE_A) 
       { 
        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(0)); 
        } 
        else 
        { 
         edt.append(array.get(26)); 
        } 
       } 
       if(keyCode==event.KEYCODE_B) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(1)); 
        } 
        else 
        { 
         edt.append(array.get(27)); 
        } 

       } 
       if(keyCode==event.KEYCODE_C) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(2)); 
        } 
        else 
        { 
         edt.append(array.get(28)); 
        } 
       } 
       if(keyCode==event.KEYCODE_D) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(3)); 
        } 
        else 
        { 
         edt.append(array.get(29)); 
        } 
       } 
       if(keyCode==event.KEYCODE_E) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(4)); 
        } 
        else 
        { 
         edt.append(array.get(30)); 
        } 
       } 
       if(keyCode==event.KEYCODE_F) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(5)); 
        } 
        else 
        { 
         edt.append(array.get(31)); 
        } 
       } 
       if(keyCode==event.KEYCODE_G) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(6)); 
        } 
        else 
        { 
         edt.append(array.get(32)); 
        } 
       } 
       if(keyCode==event.KEYCODE_H) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(7)); 
        } 
        else 
        { 
         edt.append(array.get(33)); 
        } 
       } 
       if(keyCode==event.KEYCODE_I) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(8)); 
        } 
        else 
        { 
         edt.append(array.get(34)); 
        } 
       } 
       if(keyCode==event.KEYCODE_J) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(9)); 
        } 
        else 
        { 
         edt.append(array.get(35)); 
        } 
       } 
       if(keyCode==event.KEYCODE_K) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(10)); 
        } 
        else 
        { 
         edt.append(array.get(36)); 
        } 
       } 
       if(keyCode==event.KEYCODE_L) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(11)); 
        } 
        else 
        { 
         edt.append(array.get(37)); 
        } 
       } 
       if(keyCode==event.KEYCODE_M) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(12)); 
        } 
        else 
        { 
         edt.append(array.get(38)); 
        } 
       } 
       if(keyCode==event.KEYCODE_N) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(13)); 
        } 
        else 
        { 
         edt.append(array.get(39)); 
        } 
       } 
       if(keyCode==event.KEYCODE_O) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(14)); 
        } 
        else 
        { 
         edt.append(array.get(40)); 
        } 
       } 
       if(keyCode==event.KEYCODE_P) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(15)); 
        } 
        else 
        { 
         edt.append(array.get(41)); 
        } 
       } 
       if(keyCode==event.KEYCODE_Q) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(16)); 
        } 
        else 
        { 
         edt.append(array.get(42)); 
        } 
       } 
       if(keyCode==event.KEYCODE_R) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(17)); 
        } 
        else 
        { 
         edt.append(array.get(43)); 
        } 
       } 
       if(keyCode==event.KEYCODE_S) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(18)); 
        } 
        else 
        { 
         edt.append(array.get(44)); 
        } 
       } 
       if(keyCode==event.KEYCODE_T) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(19)); 
        } 
        else 
        { 
         edt.append(array.get(45)); 
        } 
       } 
       if(keyCode==event.KEYCODE_U) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(20)); 
        } 
        else 
        { 
         edt.append(array.get(46)); 
        } 
       } 
       if(keyCode==event.KEYCODE_V) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(21)); 
        } 
        else 
        { 
         edt.append(array.get(47)); 
        } 
       } 
       if(keyCode==event.KEYCODE_W) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(22)); 
        } 
        else 
        { 
         edt.append(array.get(48)); 
        } 
       } 
       if(keyCode==event.KEYCODE_X) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(23)); 
        } 
        else 
        { 
         edt.append(array.get(49)); 
        } 
       } 
       if(keyCode==event.KEYCODE_Y) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(24)); 
        } 
        else 
        { 
         edt.append(array.get(50)); 
        } 
       } 
       if(keyCode==event.KEYCODE_Z) 
       { 

        if(event.isCapsLockOn()) 
        { 
         edt.append(array.get(25)); 
        } 
        else 
        { 
         edt.append(array.get(51)); 
        } 
       } 


       if(keyCode==event.KEYCODE_0) 
       { 
        edt.append(array.get(52)); 
       } 
       if(keyCode==event.KEYCODE_1) 
       { 
        edt.append(array.get(53)); 
       } 
       if(keyCode==event.KEYCODE_2) 
       { 
        edt.append(array.get(54)); 
       } 
       if(keyCode==event.KEYCODE_3) 
       { 
        edt.append(array.get(55)); 
       } 
       if(keyCode==event.KEYCODE_4) 
       { 
        edt.append(array.get(56)); 
       } 
       if(keyCode==event.KEYCODE_5) 
       { 
        edt.append(array.get(57)); 
       } 
       if(keyCode==event.KEYCODE_6) 
       { 
        edt.append(array.get(58)); 
       } 
       if(keyCode==event.KEYCODE_7) 
       { 
        edt.append(array.get(59)); 
       } 
       if(keyCode==event.KEYCODE_8) 
       { 
        edt.append(array.get(60)); 
       } 
       if(keyCode==event.KEYCODE_9) 
       { 
        edt.append(array.get(61)); 
       } 

       /*if(keyCode==event.KEYCODE_DEL) 
       { 
        edt.addTextChangedListener(new TextWatcher() { 
         @Override 
         public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

         } 

         @Override 
         public void onTextChanged(CharSequence s, int start, int before, int count) { 

         } 

         @Override 
         public void afterTextChanged(Editable s) { 

          edt.setText(s); 

         } 
        }); 
       }*/ 

       /*if(keyCode==event.KEYCODE_SPACE) 
       { 
        edt.append(" "); 
       }*/ 

       if(keyCode==event.KEYCODE_COMMA) 
       { 
        edt.append(","); 
       } 

       if(keyCode==event.KEYCODE_PERIOD) 
       { 
        edt.append("."); 
       } 

       if(keyCode==event.KEYCODE_EQUALS) 
       { 
        edt.append("="); 
       } 
       if(keyCode==event.KEYCODE_LEFT_BRACKET) 
       { 
        edt.append("("); 
       } 
       if(keyCode==event.KEYCODE_RIGHT_BRACKET) 
       { 
        edt.append(")"); 
       } 
       if(keyCode==event.KEYCODE_SEMICOLON) 
       { 
        edt.append(";"); 
       } 
       if(keyCode==event.KEYCODE_APOSTROPHE) 
       { 
        edt.append("'"); 
       } 
       if(keyCode==event.KEYCODE_GRAVE) 
       { 
        edt.append("~"); 
       } 
       if(keyCode==event.KEYCODE_SLASH) 
       { 
        edt.append("/"); 
       } 
       if(keyCode==event.KEYCODE_NUMPAD_DIVIDE) 
       { 
        edt.append("/"); 
       } 
       if(keyCode==event.KEYCODE_NUMPAD_MULTIPLY) 
       { 
        edt.append("*"); 
       } 
       if(keyCode==event.KEYCODE_NUMPAD_SUBTRACT) 
       { 
        edt.append("-"); 
       } 
       if(keyCode==event.KEYCODE_NUMPAD_ADD) 
       { 
        edt.append("+"); 
       } 



       return true; 
      } 
     }); 

    } 



} 

Это мой класс java. У меня есть массив определенных символов, и я передаю его в этот java-файл, чтобы заменить символы по умолчанию символами, содержащимися в массиве. Символы заменяются, но когда клавиша нажата с клавиатуры ноутбука, а не с клавиатуры телефона Android.

public class ChangeFont extends ActionBarActivity { 

    private EditText edt; 
    private ImageView img1,img2,img3,img4,img5; 
    private ListView lst, savelist; 
    private TextView txtNew,txtSave; 
    private DataBaseHelper data; 
    private ArrayList<String> category; 
    private ArrayList<String> styleArray; 
    private Cursor c; 

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

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setHomeButtonEnabled(true); 
     getSupportActionBar().setTitle("Fonts"); 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 



     data=new DataBaseHelper(this); 
     edt=(EditText)findViewById(R.id.edit_text); 

     img1=(ImageView)findViewById(R.id.image1); 
     img2=(ImageView)findViewById(R.id.image2); 
     img3=(ImageView)findViewById(R.id.image3); 
     img4=(ImageView)findViewById(R.id.image4); 
     img5=(ImageView)findViewById(R.id.image5); 

     lst=(ListView)findViewById(R.id.list); 
     savelist=(ListView)findViewById(R.id.savelist); 

     txtNew=(TextView)findViewById(R.id.textnew); 
     txtSave=(TextView)findViewById(R.id.textsave); 

     category=new ArrayList<String>(); 
     styleArray=new ArrayList<String>(); 

     try { 
      data.createDataBase(); 


     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     c=data.getSample(); 


     if (c.moveToFirst()) 
     { 
      while(!c.isAfterLast()) 
      { 
       String cat = c.getString(c.getColumnIndex(DataBaseUtil.SAMPLE)); 


       category.add(cat); 

       c.moveToNext(); 

      } 
     } 


     /*l=data.getAllLockType(); 

     if (l.moveToFirst()) 
     { 
      while(!l.isAfterLast()) 
      { 

       String cat=l.getString(l.getColumnIndex(DataBaseUtil.LOCK_TYPE)); 

       Log.i("String",""+cat); 
       locktype.add(cat); 

       l.moveToNext(); 

      } 
     } 

     Log.i("Lock Array",""+locktype);*/ 

     SampleStyleAdapter aa=new SampleStyleAdapter(getApplicationContext(), category); 

     lst.setAdapter(aa); 



     lst.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

       data.openDataBase(); 

       InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.showSoftInput(edt, InputMethodManager.SHOW_IMPLICIT); 


       final String stylename = category.get(position).toString(); 

       Toast.makeText(getApplicationContext(), "" + stylename + "position" + position, Toast.LENGTH_SHORT).show(); 

       List<DataBaseModel> sy = data.getStyle(position); 


       styleArray = new ArrayList<String>(); 
       for (DataBaseModel model : sy) { 
        String vimal = model.getStyle(); 

        styleArray.add(vimal); 
       } 

       Log.i("Style Array", "" + styleArray); 


       KeyCode key=new KeyCode(getApplicationContext(),styleArray,edt); 
       //Log.i("Called Key Code","Class"); 



      } 
     }); 

     edt.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       lst.setVisibility(View.GONE); 
       savelist.setVisibility(View.GONE); 
       txtNew.setVisibility(View.VISIBLE); 
       txtSave.setVisibility(View.VISIBLE); 
       edt.requestFocus(); 
       edt.setCursorVisible(true); 
       //InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
       //imm.showSoftInput(edt, InputMethodManager.SHOW_IMPLICIT); 

      } 
     }); 

     img1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) 
      { 
       lst.setVisibility(View.VISIBLE); 
       savelist.setVisibility(View.GONE); 
       txtNew.setVisibility(View.GONE); 
       txtSave.setVisibility(View.GONE); 
       edt.setCursorVisible(false); 
       InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.hideSoftInputFromWindow(edt.getWindowToken(), 0); 

      } 
     }); 

     img2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) 
      { 
       lst.setVisibility(View.GONE); 
       txtNew.setVisibility(View.VISIBLE); 
       txtSave.setVisibility(View.VISIBLE); 
       edt.requestFocus(); 
       edt.setCursorVisible(true); 
       InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.showSoftInput(edt, InputMethodManager.SHOW_IMPLICIT); 


      } 
     }); 

     img3.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       Intent i=new Intent(ChangeFont.this, EmojiTabbed.class); 
       startActivity(i); 

      } 
     }); 

     img4.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       lst.setVisibility(View.GONE); 
       savelist.setVisibility(View.VISIBLE); 
       txtNew.setVisibility(View.GONE); 
       txtSave.setVisibility(View.GONE); 
       edt.setCursorVisible(false); 
       InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.hideSoftInputFromWindow(edt.getWindowToken(), 0); 

      } 
     }); 

     img5.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       Intent i=new Intent(ChangeFont.this, Share.class); 
       startActivity(i); 

      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_change_font, menu); 
     return false; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     switch (item.getItemId()) { 
      // Respond to the action bar's Up/Home button 
      case android.R.id.home: 

       Intent i=new Intent(this, Home.class); 
       NavUtils.navigateUpTo(this, i); 
       return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 


} 

Возможно ли это или нет?

ответ

1

Нажмите событие происходит для мыши или нажмите вниз и вы должны захватить ключ вниз событие, как этот

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
// TODO Auto-generated method stub 
     if (i == KeyEvent.KEYCODE_BACK) { 
      //back button key up 
     } 
return super.onKeyUp(keyCode, event); 
} 

и щелкните событие, вы должны использовать этот

yourControl.setOnClickListener(new OnClickListener() { 
    public void onClick(View view) { 
     // your code 
    } 
}); 

я хмель эту волю помогите вам

+0

К сожалению этой вещи и я пытался, но не помог мне .. @sourabhdevpura –

+0

@VimalDiwani Этого ядра события, если вы используете именно эту ведьму события нажми я отправил I безусловно, будет работать. –

+0

Мне нужно событие щелчка всех алфавитов и номера с клавиатуры Android. @sourabhdevpura –

0

Вы можете получить нажатые ключевые символы по кодам клавиш:

List<Key> keys = getKeyboard().getKeys(); 
      for (Key key : keys) { 

       if (key.codes[0] == 65) { //A 

       } } 

ориентировочных http://www.fampennings.nl/maarten/android/09keyboard/index.htm

+0

Ваш метод getKeyboard() не может быть разрешен. @AnilMeenugu –

Смежные вопросы