안드로이드 스튜디오 예제 서비스(Service) 음악서비스 만들기
- Android Studio
- 2020. 6. 4.
계발에서 개발까지
서비스(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>
'Android Studio' 카테고리의 다른 글
안드로이드 스튜디오 그라데이션 만들기 (xml) (0) | 2020.06.08 |
---|---|
안드로이드 스튜디오 액티비티(Activity)생명주기 (0) | 2020.06.04 |
안드로이드 스튜디오 Handler, postDelayed 딜레이 주기 (0) | 2020.06.01 |
안드로이드 스튜디오 버튼 클릭 횟수에 따라 카운트 증가 (0) | 2020.06.01 |
안드로이드 스튜디오 버튼 클릭시 ScrollView(스크롤뷰) 상단, 하단 위치 이동하기 (0) | 2020.06.01 |