buzzer버튼을 생성 후
이 버튼을 누르고 있으면 계속 이벤트가 발생(소리가 지속되는)하는 방법이 궁금합니다
현재 ACTION_DOWN을 이용해서 코드를 만들어봤는데
누르고 있어도 OnClick처럼 한번만 소리가 나더라구요
그래서 while(true)를 사용해 봤는데 실패했습니다.
다른방법으로 ACTION_MOVE를 이용하니 되긴하는데
잡음이 많이 들리고(소리가 깨끗하지못함) , 버튼을 벗어나도 소리가가 지속되더라구요
방법 좀 알려주세요 ㅠㅠ
*코드* (res에 raw라는 파일을 생성하고 음악파일을 넣어야 실행이 됩니다.)
MainActivity.java
package com.example.touch;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
public class MainActivity extends ActionBarActivity {
private SoundPool sound_pool;
private int sound_correct;
private OnTouchListener mTouchListener=null;
public void sound(){
sound_pool.play(sound_correct, 1.0f, 1.0f, 0, 0, 1.0f);
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sound_pool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
sound_correct = sound_pool.load(getBaseContext(), R.raw.buzzer, 1);
Button buzzer = (Button)findViewById(R.id.buzzer);
buzzer.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN){
sound();
if(event.getAction()==MotionEvent.ACTION_UP){
}
}
return true;}
});
}}
activity_main.xml
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.touch.MainActivity" >
<Button
android:id="@+id/buzzer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:text="Buzzer" />
</RelativeLayout>