2016-03-19 4 views
1

Я хочу воспроизвести звук на onclick eddittext. Но я столкнулся с проблемой воспроизведения звука на одном клике edittext. Он работает от второго щелчка. И я не хочу удалять фокус с edittext. Пожалуйста, помогите мне.Как играть звук на клик edittext

<LinearLayout 
    android:id="@+id/res3" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 

<android.support.design.widget.TextInputLayout 
    android:id="@+id/input_layout_mail" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

<EditText 
    android:id="@+id/mail" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:singleLine="true" 
    android:textSize="20sp" 
    android:maxLength="50" 
    android:inputType="textEmailAddress" 
    android:hint="@string/mailid" /> 
</android.support.design.widget.TextInputLayout> 
</LinearLayout> 

Вот мой Java-код

emailid.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      playSound("click.mp3"); 
      return false; 
     } 
    }); 
public void playSound(final String p_fileName) 
    { 
    try 
    { 

     if (m_player != null && m_player.isPlaying()) 
     { 
      m_player.stop(); 
      m_player.release(); 
      m_player = null; 
     } 
     else 
     { 
      m_player.release(); 
     } 

     m_player = new MediaPlayer(); 
     m_player.reset(); 
     AssetFileDescriptor m_descriptor = getAssets().openFd(p_fileName); 
     m_player.setDataSource(m_descriptor.getFileDescriptor(), m_descriptor.getStartOffset(), m_descriptor.getLength()); 
     m_descriptor.close(); 

     m_player.prepare(); 
     m_player.setVolume(1f, 1f); 
     m_player.setLooping(false); 

      m_player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
      @Override 
      public void onCompletion(MediaPlayer mp) { 

      } 
     }); 
     m_player.start(); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 
+0

использовать android: focusable = "false" в edittext –

+0

Если я удаляю фокус, то эффект android.support.design.widget.TextInputLayout не работает. Поэтому я не хочу удалять фокус с edittext. –

+0

Я также пробовал использовать onTouchListener, но не использовал –

ответ

1

Вы можете использовать OnFocusChangeListener для ручки нажмите на EditeText:

emailid.setOnFocusChangeListener(new OnFocusChangeListener() {   

    public void onFocusChange(View v, boolean hasFocus) { 
     if (hasFocus) { 
      playSound("click.mp3"); 
     } 
    } 
}); 
+0

Я попытался использовать OnFocusChangeListener, но все еще не работал. –

0

Является TextInputLayout потребляя первый клик? Попробуйте положить слушателя на TextInputLayout и EditText. Лично я бы также использовал OnClickListener вместо OnTouchListener.