상세 컨텐츠

본문 제목

[안드로이드] 진동기능 예제 및 사용방법 [Vibrator]

안드로이드

by aries574 2020. 5. 23. 22:49

본문


안드로이드에서는 이벤트가 발생했을 때, 소리로 알려주거나, 진동으로 알려줍니다.

진동을 사용하는 방법을 알아보겠습니다. 


1. 진동권한 추가하기

manifests -> AndroidManifest.xml

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


2. 진동기능 메소드 만들기

안드로이드 버전에 따른 진동설정 방법이 다릅니다.

안드로이드 버전 8.0 부터는 진동시간과 진동세기를 조절할 수 있습니다.

그 이전 버전은 시간만 조절합니다. 

/**
* 진동
* @param millisecond 울리는 시간
* @param amplitude 진동세기
*/
public void vibrator(int millisecond, int amplitude){

Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

//안드로이드버전 8.0이상
if(Build.VERSION.SDK_INT >= 26){
vibrator.vibrate(VibrationEffect.createOneShot(millisecond,amplitude)); //시간, 진동세기
Log.d("Main", "26이상");
}else{
vibrator.vibrate(millisecond);
Log.d("Main", "26이하");
}
}

3. 화면 만들기

진동시간과 진동세기를 입력할 수있는 EditText와 기능을 실행 할 버튼을 만들어 줍니다.


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">

<EditText
android:id="@+id/inputMillisecond"
android:layout_marginTop="20dp"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="진동시간"
/>

<EditText
android:id="@+id/inputAmplitude"
android:layout_marginTop="20dp"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="진동세기"
/>

<Button
android:id="@+id/btn1"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="진동"
/>
</LinearLayout>
</LinearLayout>


4. 진동 메소드 사용하기 (예: MainActivity.java)


EditText inputMillisecond;
EditText inputAmplitude;

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

Button btn1 = findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

inputAmplitude = findViewById(R.id.inputAmplitude);
inputMillisecond = findViewById(R.id.inputMillisecond);

int millisecond = Integer.parseInt(inputMillisecond.getText().toString());
int amplitude = Integer.parseInt(inputAmplitude.getText().toString());

vibrator(millisecond*1000, amplitude);
}
});
}


반응형

관련글 더보기

댓글 영역