728x90
service : 백그라운드에서 돌아가는 일종의 프로세스
핸들러랑 스레드랑 비슷한 개념
서비스의 용도는 main에서 무언가를 해줄때에도 다른곳에서 작업 처리해주는거
일단 여기에 들어가줌
https://studio.youtube.com/channel/UCLppeb1YDr6e-HP3lvRkgAg/music
원하는 음악 다운로드
멜론과 같은 음악 프로그램 처럼
홈버튼을 누르고 나가도 계속 실행될 수 있게 하는 프로젝트 해보기!
service java만들어줌
extends Service 하고 alt+enter 해서 implement methods 해주면 됨
mediaplayer변수 만들어주고,
res폴더에 android resource directory 클릭해서 resource type 을raw로 설정해서 폴더 생성
노래 복사해서 붙여넣어줌
raw폴더는 노래같은걸 넣어주는 폴더인데, 대문자가 포함되어있으면 안됨.
@Override
public void onCreate() {
super.onCreate();
mediaPlayer = MediaPlayer.create(this,R.raw.serenity)
}
서비스 만들면 manifest에서 선원해줘야함.
<applicaiton>태그 안에
<service android:name=".MusicService"/>
넣어주깅!
Mainactivity.js
package com.example.serviceexample;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button btn_start, btn_stop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//아이디값 찾아오기
btn_start= (Button)findViewById(R.id.btn_start);
btn_stop= (Button)findViewById(R.id.btn_stop);
//시작버튼
btn_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startService(new Intent(getApplicationContext(),MusicService.class));
}
});
//종료버튼
btn_stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
stopService(new Intent(getApplicationContext(),MusicService.class));
}
});
}
}
activity.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"
tools:context=".MainActivity">
<Button
android:id="@+id/btn_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="서비스 시작"/>
<Button
android:id="@+id/btn_stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="서비스 종료"/>
</LinearLayout>
service.js
package com.example.serviceexample;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.provider.MediaStore;
import androidx.annotation.Nullable;
public class MusicService extends Service {
MediaPlayer mediaPlayer;
//얘는 걍 내비둬
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
//서비스 시작될때 초기화
@Override
public void onCreate() {
super.onCreate();
mediaPlayer = MediaPlayer.create(this,R.raw.serenity);
//반복재생 유무 (false = 안함)
mediaPlayer.setLooping(false);
}
//시작
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mediaPlayer.start();
return super.onStartCommand(intent, flags, startId);
}
//서비스 종료
@Override
public void onDestroy() {
super.onDestroy();
mediaPlayer.stop();
}
}
manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.serviceexample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.ServiceExample">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".MusicService"/>
</application>
</manifest>
앱이 자꾸 중지되어서 logcat으로 원인 error찾아봤는데,
음악파일넣을때 .mp3붙였더니 해결됨
소리는 작을 수 있음(도서관에서 해서..)
728x90
'✍2021,2022 > app(android studio)' 카테고리의 다른 글
앱만들기.18(FCM푸시알림) (0) | 2021.07.19 |
---|---|
앱만들기. 17(MediaRecorder)동영상 녹화 (0) | 2021.07.19 |
앱만들기. 15(Dialog) (0) | 2021.07.17 |
앱만들기. 14(Thread & Handler ) (0) | 2021.07.17 |
앱만들기.13(Log출력,주석다는법) (0) | 2021.07.17 |