
Notification Player
notification player를 한국어로 뭐라고 할지 모르겠어서 그대로 쓴다
아래 사진처럼 알림창에서 조작할 수 있는 음악플레이어를 만들어서 bgm 재생에 사용할 예정이다.

아래 영상 두개를 따라하면서 만들었다
다만 MainActivity가 아닌 WidgetSerivce에서 코드를 작성하여 FloatingWidget에서 음악을 재생하도록 했다
또한 if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O)는 다 빼버렸다 (왜인지 이거 넣으면 안됨...)
https://www.youtube.com/watch?v=D-UsLR-cdwg&t=454s
https://www.youtube.com/watch?v=rRoHBWKQoRE&t=624s
완성샷

다만 컴퓨터쪽 문제인지 Large Icon이 제대로 표시되지 않는 문제가 있었다.
실제 스마트폰에서는 잘 나온다


bgm 재생
사실 위의 알림을 구현하기가 어려웠지 bgm 재생은 꽤나 간단하다
먼저 res/raw에 각각의 mp3파일을 넣어준다

아래 코드는 음악을 재생할 MedaiPlayer을 만든다.
MediaPlayer m;
m = MediaPlayer.create(this, R.raw.vitality);
다음은 onTrack... 함수들에 음악을 재생/중지하거나 음악을 바꾸는 코드를 추가한다
@Override
public void onTrackPrevious() {
position--;
CreateNotification.createNotification(WidgetService.this, tracks.get(position), R.drawable.ic_baseline_pause_24, position, tracks.size() -1);
SelectMusic(tracks.get(position).getTitle()); #추가
}
@Override
public void onTrackPlay() {
CreateNotification.createNotification(WidgetService.this, tracks.get(position), R.drawable.ic_baseline_pause_24, position, tracks.size() -1);
isPlaying = true;
m.start(); #추가
}
@Override
public void onTrackPause() {
CreateNotification.createNotification(WidgetService.this, tracks.get(position), R.drawable.ic_baseline_play_arrow_24, position, tracks.size() - 1);
isPlaying = false;
m.pause(); #추가
}
@Override
public void onTrackNext() {
position++;
CreateNotification.createNotification(WidgetService.this, tracks.get(position), R.drawable.ic_baseline_pause_24, position, tracks.size() -1);
SelectMusic(tracks.get(position).getTitle()); #추가
}
SelectMusic함수는 아래와 같다
void SelectMusic(String title)
{
Log.e("text", title);
switch(title)
{
case "vitality":
m.stop();
m.reset();
m.release();
m = MediaPlayer.create(this, R.raw.vitality);
m.start();
break;
case "epitomize":
m.stop();
m.reset();
m.release();
m = MediaPlayer.create(this, R.raw.epitomize);
m.start();
break;
case "luminescent":
m.stop();
m.reset();
m.release();
m = MediaPlayer.create(this, R.raw.luminescent);
m.start();
break;
case "apropos":
m.stop();
m.reset();
m.release();
m = MediaPlayer.create(this, R.raw.apropos);
m.start();
break;
}
}
NotificationPlayer에서의 동작에 따라 음악 재생/중지, 음악 변경 코드다
함수 이름이 직관적이라 딱히 설명은 필요없을 듯 하다
전체 코드는 깃허브에서 확인가능하다
https://github.com/richardlee-kr/HelltakerM
richardlee-kr/HelltakerM
Helltaker Sticker Mobile. Contribute to richardlee-kr/HelltakerM development by creating an account on GitHub.
github.com
이제 원래 계획했던 기본적인 기능은 구현이 되었기 때문에 beta버전 앱을 만들어서 배포하고
UI나 여러가지 기능들을 추가해서 제대로 마무리할 예정이다.
'프로젝트 > 헬테이커 스티커 M' 카테고리의 다른 글
헬테이커 스티커 M#6 - beta버전 배포 (0) | 2021.06.20 |
---|---|
헬테이커 스티커 M#4 - 캐릭터 선택 (0) | 2021.06.11 |
헬테이커 스티커 M#3 - 프레임 속도 선택 (0) | 2021.06.04 |
헬테이커 스티커 M#2 - 애니메이션 (0) | 2021.05.21 |
헬테이커 스티커 M#1 - Floating Widget 다시 만들기 (1) | 2021.05.14 |