728x90
반응형
안드로이드: Vibrator (진동) 사용 예제
안드로이드의 Vibrator 객체를 사용하여, 원하는 패턴의 진동을 만들어 내고, 컨트롤 하는 예제를 만들어 봅니다.
Step 1 : Manifect 에 Vibrator 권한을 획득해야 합니다.
Step 2 : Vibrator 객체 획득
Step 3 : vibrate() 메소드로 진동시작, cancel() 메소드로 진동취소
[AndroidManifest.xml]
우선 안드로이드 메니페스트 파일 에 Vibrator 사용권한을 얻어옵니다.
상단에 한줄만 추가하면 됩니다
<uses-permission android:name="android.permission.VIBRATE"/>
[activity_main.xml]
간단하게 테스트할 액티비티 하나 만들어 보죠
버튼 4개만 만들어서 몇가지 패턴의 진동을 테스트 해볼겁니다.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="진동1" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="진동2" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="진동3" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="진동4" />
</LinearLayout>
[MainActiviy.java]
다음으로 메인 액티비티 클래스 파일입니다. (노란색 부분에 주목)
- 먼저 Vibrator 객체를 getSystemService() 를 통해 얻어오고
- vibrate() 메소드를 통해 진동을 시작합니다. 이때 매개변수로 전달되는 long 타입 값은 millisecond (1/1000 초) 단위입니다.
- long[] 배열을 통해 원하는 진동 패턴을 만들어 줄수 있습니다. 배열값은 대기시간 - 진동시간 - 대기시간 - 진동시간... 순...
- cancel() 메소드로 언제든지 진동취소 합니다.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
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(Context.VIBRATOR_SERVICE);
b1.setText("1초진동");
b1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
vibrator.vibrate(1000); // miliSecond, 지정한 시간동안 진동
}
});
b2.setText("지정한 패턴으로 진동");
b2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
long[] pattern = {100,300,100,700,300,2000}; // miliSecond
// 대기,진동,대기,진동,....
// 짝수 인덱스 : 대기시간
// 홀수 인덱스 : 진동시간
vibrator.vibrate(pattern, // 진동 패턴을 배열로
-1); // 반복 인덱스
// 0 : 무한반복, -1: 반복없음,
// 양의정수 : 진동패턴배열의 해당 인덱스부터 진동 무한반복
}
});
b3.setText("무한반복으로 진동");
b3.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
vibrator.vibrate(
new long[]{100,1000,100,500,100,500,100,1000}
, 0);
}
});
b4.setText("진동 취소");
b4.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
vibrator.cancel(); // 진동취소
}
});
} // end of onCreate
} // end of class
출처: http://bitsoul.tistory.com/129 [Happy Programmer~]
출처: http://bitsoul.tistory.com/129 [Happy Programmer~]
출처: http://bitsoul.tistory.com/129 [Happy Programmer~]
728x90
반응형
'Android' 카테고리의 다른 글
어댑터 안에서 다른 액티비티로 인텐트 보내기 (0) | 2018.05.25 |
---|---|
안드로이드 jar 라이브러리 추가 (0) | 2018.05.22 |
안드로이드 jar 파일 추가하기 (0) | 2018.05.21 |
스피너 어댑터 설정 (0) | 2018.05.21 |
안드로이드 http 통신 (0) | 2018.05.17 |