2010-09-02 50 views
0

我在Android的初学者超过,如何在性格特征极限的EditText超过玩的嘟嘟声,我已经通过设置addTextChangeListener尝试,但它不会让事情发生后超限所以着播放的声音和onKeylistener只适用于物理密钥,所以请给我任何提示以解决问题。蜂鸣声时editext字LIMT在android系统

这是我的代码

private EditText editTextBox; private MediaPlayer mMediaPlayer; private int len; private int limit = 10;

public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    // setContentView(new EditText(this)); 

    setContentView(R.layout.main); 
    editTextBox = (EditText) findViewById(R.id.EditTextBox); 

    editTextBox.addTextChangedListener(new TextWatcher() { 

     public void onTextChanged(CharSequence s, int start, int before, 
       int count) { 
      if (s.length() > 10) { 
       playAudio(); 
      } 
      if (s.length() == limit) { 
       len = limit + 1; 
      } else { 
       len = s.length(); 
      } 
      Log.e("beep", "onTextChanged" + " " + count); 
     } 

     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
      Log.e("beep", "beforeTextChanged"); 
     } 

     public void afterTextChanged(Editable s) { 
      Log.e("beep", "afterTextChanged"); 
     } 
    }); 
    editTextBox.setOnKeyListener(new OnKeyListener() { 

     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      Log.e("beep", "onKeyListener" + " " + len); 
      if (len == limit + 1) { 
       len++; 
      } else { 
       if (len > limit) { 
        if (!(keyCode == KeyEvent.KEYCODE_DEL)) 
         playAudio(); 
       } 
      } 
      Log.e("beep", "onKeyListener"); 
      return false; 
     } 
    }); 

} 

private void playAudio() { 
    try { 

     mMediaPlayer = MediaPlayer.create(this, R.drawable.beep1); 
     mMediaPlayer.setLooping(false); 
     Log.e("beep", "started0"); 
     mMediaPlayer.start(); 
     Log.e("beep", "started1"); 
     mMediaPlayer.setOnCompletionListener(new OnCompletionListener() { 
      public void onCompletion(MediaPlayer arg0) { 
       // finish(); 
       stopAudio(); 
      } 
     }); 
    } catch (Exception e) { 
     Log.e("beep", "error: " + e.getMessage(), e); 
    } 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    stopAudio(); 
} 

private void stopAudio() { 
    if (mMediaPlayer != null) { 
     mMediaPlayer.release(); 
     mMediaPlayer = null; 
    } 
} 

在此先感谢

+0

您可以发布您当前的代码? – Wroclai 2010-09-02 08:18:31

+0

我发布了代码 – Navya 2010-09-02 09:04:20

回答

0

在我看来,像你的编码到多得到声音。会更容易些,实例化的声音一次,不仅仅是使用此行代码中所需要的条件,让声音

mMediaPlayer.start();