Vibrator - 진동 울리기

 

 

안드로이드의 Vibrator 객체를 사용하여,  원하는 패턴의 진동을 만들어 내고, 컨트롤 하는 예제를 만들어 봅니다.

 

Step 1 : Manifect 에 Vibrator 권한을 획득해야 합니다.

Step 2 : Vibrator 객체 획득

Step 3 : vibrate() 메소드로 진동시작,  cancel() 메소드로 진동취소



 

 

1. 퍼미션 설정

<!-- 진동-->
<uses-permission android:name="android.permission.VIBRATE" />

 

 

 

 

2. xml코드

 

 

 

 

3. JAVA코드

진동을 위한 Vibrator라는 SystemService가 제공되기 때문이다.

Vibrator 객체를 획득하여 vibrate() 함수 호출로 간단하게 진동을 울릴 수 있다.

 

 

 

 

 

4. 번외

진동을 여러번 반복해서 울려야 하는 때

vibrate(long[] pattern, int repeat) 사용 하면 된다.

 

진동을 계속 울리게 하려면 매개변수 부분이 중요하다,

첫번째 - 매개변수가 long 형 배열이고, 배열에 값은

홀수번째 값이 대기시간,

짝수번째 값이 진동시간이다

두번째 - 매개변수는 이 패턴으로 진동 울리기를 몇변 반복할 것인가의 설정이다,

0주면 취소 할때까지 무한반복,

-1주면 한번만 패턴대로 진동이 울린다.

이렇게 하면,

처음 진동 울리고 0.5초 대기 후, 1초 진동, 다시 0.5초 대기 후 1초 진동이다.

-1이니깐 반복 안함

 

 

 

 

5. 번외

만약, vibrate() 두번째 매개변수를 0을 주어서 무한반복 상태라고 한다면,

cancel() 을 주어서 멈추면 됩니다.

 

 

 

 

 

6. 전체 코드

public class Delvibrator extends AppCompatActivity {

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

        Button b1 = (Button)findViewById(R.id.button1);
        Button b2 = (Button)findViewById(R.id.button2);
        Button b3 = (Button)findViewById(R.id.button3);
        Button b4 = (Button)findViewById(R.id.button4);

        // 진동
        // 1. 진동 권한을 획득해야한다. AndroidManifest.xml
        // 2. Vibrator 객체를 얻어서 진동시킨다
        final Vibrator vibrator = (Vibrator)getSystemService(VIBRATOR_SERVICE);

        // 5초진동
        b1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                vibrator.vibrate(5000); // 5초
            }
        });

        // 지정한 패턴으로 진동
        b2.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                long[] pattern = {100,300,100,700,300,2000}; // 대기,진동,대기,진동,..
                vibrator.vibrate(pattern,-1); // 진동 패턴, 반복 인덱스
                // 0 : 무한반복, -1: 반복없음,
                // 양의정수 : 진동패턴배열의 해당 인덱스부터 진동 무한반복
            }
        });

        // 무한반복으로 진동
        b3.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                vibrator.vibrate(new long[]{100,1000,100,500,100,500,100,1000}, 0);
            }
        });

        // 진동 취소
        b4.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                vibrator.cancel();
            }
        });
    }
}