티스토리 뷰

알림을 위해 진동과 소리를 제어하는 것과 음악 파일을 제어하는 앱을 구현해보겠습니다.

 

진동을 누르면 진동이 울리고

소리를 누르면 소리가 울리고

음악 재생을 누르면 음악이 재생되고

음악 정지를 누르면 음악이 멈추는데 이때 음악 재생을 누르면 처음부터 재생되고

음악 일시정지는 누르면 음악이 일시정지되어 음악 재생을 누르면 이어서 재생됩니다.

 

<?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">

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="#ffffff"
        android:text="진동" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="#ffffff"
        android:text="소리" />

    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="#ffffff"
        android:text="음악 재생" />

    <Button
        android:id="@+id/button4"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="#ffffff"
        android:text="음악 정지" />

    <Button
        android:id="@+id/button5"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="#ffffff"
        android:text="음악 일시정지" />

</LinearLayout>

xml은 리니어레이아웃을 사용하여 버튼을 5개 만들었습니다.

 

진동을 이용하기 위한 권한을 주고 음악 재생을 위해 음악 파일을 넣겠습니다.

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

AndroidManifest.xml에 진동을 사용하기 위한 권한을 줍니다.

패키지명과 애플리케이션 사이에 배치하면 됩니다.

 

음악파일은 app> res> raw에 넣어두시면 됩니다.

raw폴더가 없으면 res를 마우스 우클릭하고 New에 Resource Directory를 선택 후 Resource type를 raw로 바꾼 후 OK를 눌러주시면 됩니다.

 

package com.ehsehsl.osz;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.media.MediaPlayer;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.VibrationEffect;
import android.os.Vibrator;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    MediaPlayer player;

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

        Button button = findViewById(R.id.button);
        Button button2 = findViewById(R.id.button2);
        Button button3 = findViewById(R.id.button3);
        Button button4 = findViewById(R.id.button4);
        Button button5 = findViewById(R.id.button5);
        setPlayer();    // 음악 설정

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {   // 진동
                Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);  // 진동을 울리기 위한

                if (Build.VERSION.SDK_INT >= 26) {  // 안드로이드 버전에 따른 조건
                    vibrator.vibrate(VibrationEffect.createOneShot(1000, 100));   // 지속시간, 크기
                } else {
                    vibrator.vibrate(1000); // 지속시간
                }
            }
        });
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {   // 소리
                Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); // 소리를 울리기 위한(TYPE_NOTIFICATION를 다른 거로 바꾸면 설정한 벨소리 등 소리 울리게 가능)
                Ringtone ringtone = RingtoneManager.getRingtone(getApplicationContext(), uri);
                ringtone.play();
            }
        });
        button3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                player.start(); // 재생 시작
            }
        });
        button4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                player.stop();  // 음악 정지
                setPlayer();    // 정지하면 재생눌러도 재생이 안되기에 다시 설정하기
            }
        });
        button5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (player.isPlaying()) {   // 재생중인지 체크
                    player.pause(); // 일시정지
                }else{
                    player.start(); // 시작
                }
            }
        });
    }

    public void setPlayer() {
        player = MediaPlayer.create(getApplicationContext(), R.raw.music);  // 음악 설정
        player.setLooping(true);   // 반복 설정
    }
}

진동은 안드로이드 버전에 따라 작동되는게 달라 조건문을 넣어줬습니다.

 

소리는 코드를 따라하면 알림 소리가 들리는데 벨소리가 들리게 하는 등 다른 소리가 들리게 할 수도 있습니다.

 

음악은 재생, 정지, 일시정지(재시작)를 구현하기 위해 3개로 나눴습니다.

 

앱을 처음 시작하면 setPlayer함수를 호출해 넣어둔 음악파일을 받아오고 반복되게 세팅합니다.

 

음악 재생을 누르면 start를 통해 음악이 재생됩니다.

 

음악 정지를 누르면 stop를 통해 음악이 정지됩니다.

이렇게 끝나면 음악이 다시 재생이 되지 않기에 setPlayer을 호출합니다.

이후 재생하면 음악이 처음부터 재생됩니다.

 

일시정지는 조건문을 통해 음악이 재생중이면 일시 정지하고 재생 중이 아니면 재생되게 됩니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함