프로그래밍(programming)/안드로이드(android)

안드로이드 진동(Vibrate)과 소리내기(Ringtone) (210501)

하빌리즘 2021. 5. 1. 16:51
반응형

(210517 수정)

 

진동과 소리는 앱을 사용하는 사용자에게 무언가를 알려주는 가장 간단한 방법이다.

모바일 게임이나 일상생활에서 자주 사용하는 앱에서 쉽게 알 수 있다.

 

진동 기능을 구현하려면 "바이브 레이터(Vibrator)" 라는 

시스템 서비스 객체를 사용해야한다.

이 객체의 "바이브 레이트(Vibrate)" 메소드로

진동이 울리는 시간과 음량을 설정할 수 있다.

 

먼저 진동이 가능하도록 매니페스트에 사용 권한을 주도록 하겠다.

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

 

이제 기능들을 구현해볼건데

이번에는 딱히 UI에는 신경 쓰지 않겠다.

단순하게 버튼을 누르면 스마트폰에서 진동이 일어나는 기능부터 알아보겠다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        Button vibe = (Button)findViewById(R.id.vibe);
        vibe.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Vibrator vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE); // getSystemService를 이용해서 진동 기능을 가져와 Vibrator 객체를 참조함
 
                if(Build.VERSION.SDK_INT >= 26) { // 안드로이드 버전 26부터 vibrate 메소드의 파라미터가 변경되었으므로 if문으로 최신버전과 과거버전 모두 작성
                    vibrator.vibrate(VibrationEffect.createOneShot(1000, 20)); // 지속시간과 음량
                } else {
                    vibrator.vibrate(1000);
                }
            }
        });
}
}
cs

 

소리 기능을 구현하려면 "링턴(Ringtone)" 객체를 사용해서

API에서 제공하는 기본 소리를 재생할 수 있게 한다.

링턴 객체의 play() 메소드로 소리를 재생하는 것이다.

 

소리도 마찬가지로

버튼을 누르면 스마트폰에서 알람 소리가 나게 구현해볼 것이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        Button sound = (Button)findViewById(R.id.sound);        
        sound.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); // RingtoneManager를 통해 기본 알림 소리를 가져옴
                Ringtone ringtone = RingtoneManager.getRingtone(getApplicationContext(), uri); //  Uri 객체를 전달하면 가져온 소리는 Ringtone객체를 참조함 
                ringtone.play(); // 소리 실행
            }
        });
    }
}
cs

 

정말 간단하지만 본인 스마트폰으로 직접 실행시켜보길 바란다.

 

피드백은 언제나 환영입니다.

 

 

 

반응형