안드로이드 스튜디오 예제 서비스(Service) 음악서비스 만들기

 계발에서 개발까지

 

서비스 개요

 

서비스 개요  |  Android 개발자  |  Android Developers

Service는 백그라운드에서 오래 실행되는 작업을 수행할 수 있는 애플리케이션 구성 요소이며 사용자 인터페이스를 제공하지 않습니다. 다른 애플리케이션 구성 요소가 서비스를 시작할 수 있으�

developer.android.com

서비스(Service)

서비스(Service)는 일반적으로 화면 없이 동작하는 프로그램을 말하며, 다른 말로는 데몬(daemon), 또는 백그라운드 프로세스(background process)라고도 한다. 액티비티나 응용 프로그램은 화면이 종료되면 동작하지 않지만 서비스는 백그라운드에서 실행 되므로 화면과 상관없이 계속 동작한다

 

서비스 생명주기

음악 서비스 예제를 다루어 보겠습니다. 버튼 클릭 시 음악 시 시작되며 화면이 종료되어도 음악이 계속 흐르는 서비스를 만들어 보겠습니다. 일단 프로젝트를 하나 생성 후 간단하게 xml를 구성하겠습니다 버튼 두 개를 만들어 시작과 중지를 만들면 되겠습니다.

 

activity_main.xml

<?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"
    android:gravity="center"
    tools:context=".MainActivity">



    <Button
        android:id="@+id/start_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="음악 시작"/>

    <Button
        android:id="@+id/stop_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="음악 중지"/>

</LinearLayout>

화면

 

이런식으로 버튼 두 개를 만들어 음악 시작과 음악 중지를 적으면 되겠습니다. 이제 Service 클래스의 상속을 받는 MusciService 클래스를 정의해보겠습니다. java클래스를 하나 생성해주시면 됩니다.

 

MusicService.java

public class MusicService extends Service {

   private MediaPlayer mediaPlayer;
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate(){
        android.util.Log.i("서비스 테스트","onCreate()");
        super.onCreate();
    }

    @Override
    public void onDestroy() {
        android.util.Log.i("서비스 테스트","onDestroy()");
        mediaPlayer.stop();  //음악 중지
        super.onDestroy();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        android.util.Log.i("서비스 테스트","onStartCommand()");
        mediaPlayer = MediaPlayer.create(this,R.raw.test);  //mp3시작 및 반복
        mediaPlayer.setLooping(true);
        mediaPlayer.start();
        return super.onStartCommand(intent, flags, startId);
    }
}

MusicService.java 클래스에 음악을 시작하고 중지하는 코드를 넣어주면 됩니다. 아 그리고 이 예제를 하기 위해서 onStartCommand() 메서드에 mp3를 추가할 건데 테스트용으로 핸드폰으로 하나 녹음하셔서 넣으시면 됩니다. 그리고 로그를 남기기 위해서 코드에 넣어주면 끝입니다.

 

이제 메인 java코드를 구성하겠습니다 여기서는 intent로 MusicService의 메소드를 가져와 실행하여 버튼에 시작과 중지를 할 수 있게 코딩하겠습니다. 그리고 잘 작동되는지 로그도 남겨 확인해보시면 됩니다.

 

MainActivity.java

public class MainActivity extends AppCompatActivity {
private Intent intent;

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

        intent = new Intent(this,MusicService.class);


        findViewById(R.id.start_btn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startService(intent);
                android.util.Log.i("Music Start Service","StartService()");
            }
        });

        findViewById(R.id.stop_btn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                stopService(intent);
                android.util.Log.i("Music Stop Service","StopService()");
            }
        });


    }
}

 

마지막으로 AndroidManifest를 수정해주시면 됩니다.

AndroidManifest.xml

   <application
  
  <service android:name=".MusicService">

            <intent-filter>
                <action android:name="com.duem.service"/>


            </intent-filter>


        </service>

    </application>

 

 

 

수고하셨습니다 ★

더 많은 정보

 https://deumdroid.tistory.com/ 

 

 

 

 

 

 

 

 

 

댓글

Designed by JB FACTORY