Background 에서 음원 재생하기
1. 사용할 음원 넣기
2. 서비스 생성
3. 서비스 시작하기 및 종료하기
1.
res 밑에 raw 폴더를 생성 후 사용할 음원, 효과음을 넣어준다.
2. 서비스 생성
Service 의 라이프 사이클
onCreate -> onStartCommand -> onDestroy
주의!!
이렇게 만들 경우는 AndroidManifest에 자동으로 등록을 해줍니다.
하지만, 그냥 클레스로 만들거나 했을 경우는 Manifest에 등록이 필요하다.(밑에 코드를 등록 해야함)
<service
android:name=".BackGroundSound"
android:enabled="true"
android:exported="true"></service>
그리고 생성한 BackGroundSound파일 코드 작성
(위에 코드임)
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
public class BackGroundSound extends Service {
static String MESSAGE_KEY = ""; // intent로 넘어오는 값
MediaPlayer mediaPlayer;
public BackGroundSound() {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) { // 설정값의 on, off에 따라 재생, 정지시키게 만듬
boolean message = intent.getExtras().getBoolean(BackGroundSound.MESSAGE_KEY); // 넘어오는 값으로 message 세팅
if (message) {
mediaPlayer = MediaPlayer.create(this, R.raw.backsound3);
mediaPlayer.setLooping(true); // true 연속재생, false 한번 재생
mediaPlayer.start(); // 음원 재생
} else {
mediaPlayer.stop(); // 음원 정지
mediaPlayer.release(); // 시스템 자원 해제
}
return START_NOT_STICKY; // 시스템에 의해 종료되면 서비스를 다시 실행하지 않음
// START_STICKY -> 시스템에 의해 종료되도 서비스를 다시 실행
// START_REDELIVER_INTENT -> START_REDELIVER_INTENT를 반환 후에 시스템이 해당 서비스를 강제 종료 했다면, 서비스를 재생성하고 이어서 onStartCommand를 호출
// START_STICKY_COMPATIBILITY -> 이전 버전과의 호환성을 위해 제공????
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
}
3. 서비스 시작하기 및 종료하기
서비스를 실행하는 곳에서 StartService하기
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
Intent intent = new Intent(OptionActivity.this, BackGroundSound.class);
if (b == true) {
intent.putExtra(BackGroundSound.MESSAGE_KEY, true); // 설정에서 true로 바꿈과 동시에 재생 시작
Log.d("true 로 전환", "<=========");
} else {
intent.putExtra(BackGroundSound.MESSAGE_KEY, false); // 설정에서 false로 바꿈과 동시에 정지
Log.d("false 로 전환", "<=========");
}
startService(intent);
}
'■ Android > Tip' 카테고리의 다른 글
[Android] 레트로핏(Retrofit) 이란? - (설명) (0) | 2020.06.07 |
---|---|
[Android] 음악 - 3.배경음악 연속 재생 방법(여러개 재생 방법) (0) | 2020.04.28 |
[Android] 음악 - 1.SoundPool(효과음, 노래(음악) 넣기) (0) | 2020.04.27 |
[Android] 버전 바꾸기 - Properites탭 위치, Bulid Tools Version 바꾸기 (0) | 2020.04.26 |
[Android] 위험 권한 부여 - 사용법 (0) | 2020.04.25 |