Android 는 Service 를 통 해 간단 한 음악 재생 을 실현 합 니 다.
안 드 로 이 드 의 4 대 구성 요소 중 하 나 를 사용 합 니 다:Service
메모:서 비 스 는 자체 구성 요소 중 하나 이 므 로 등록 이 필요 합 니 다.
서비스 란 무엇 입 니까?
1.'Service'는'서비스'라 는 뜻 으로 윈도 우즈 의 서비스 처럼 서 비 스 는 백 스테이지 에서 실행 되 며 조용히 사람들의 주목 을 받 지 못 하 는 일 을 맡 고 있다.
2:Service 는 배경 에서 실 행 됩 니 다.보이 지 않 고 인터페이스 가 없 는 프로그램 입 니 다.
3:Service 는 여러 장소 에서 사용 할 수 있 습 니 다.예 를 들 어 멀티미디어 를 재생 할 때 사용자 가 다른 Activity 를 시 작 했 습 니 다.이 럴 때 프로그램 은 배경 에서 계속 재생 해 야 합 니 다.예 를 들 어 SD 카드 에 있 는 파일 의 변 화 를 검사 합 니 다.또한 배경 에 사용자 의 지리 정보 위치 변 화 를 기록 합 니 다.서 비 스 를 시작 해서 어떤 동작 을 계속 듣 거나.
다음은 원본 코드 입 니 다.
MainActivity
/**
* Service
*
*/
public class MainActivity extends AppCompatActivity {
/**
* 、 、
*/
public static final int PLAT_MUSIC=1;
public static final int PAUSE_MUSIC=2;
public static final int STOP_MUSIC=3;
private MyBroadCastReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
receiver=new MyBroadCastReceiver();
IntentFilter filter=new IntentFilter();
filter.addAction("com.complete");
registerReceiver(receiver,filter);
}
public void onClick(View view){
switch (view.getId()){
//
case R.id.btn_startmusic:
playingmusic(PLAT_MUSIC);
break;
//
case R.id.btn_pausemusic:
playingmusic(PAUSE_MUSIC);
break;
//
case R.id.btn_stopmusic:
playingmusic(STOP_MUSIC);
break;
}
}
private void playingmusic(int type) {
// ,
Intent intent=new Intent(this,PlayingMusicServices.class);
intent.putExtra("type",type);
startService(intent);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
}
MyBroadCastReceiver 클래스(방송 수신 자):
/**
* Service
*
*/
public class MainActivity extends AppCompatActivity {
/**
* 、 、
*/
public static final int PLAT_MUSIC=1;
public static final int PAUSE_MUSIC=2;
public static final int STOP_MUSIC=3;
private MyBroadCastReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
receiver=new MyBroadCastReceiver();
IntentFilter filter=new IntentFilter();
filter.addAction("com.complete");
registerReceiver(receiver,filter);
}
public void onClick(View view){
switch (view.getId()){
//
case R.id.btn_startmusic:
playingmusic(PLAT_MUSIC);
break;
//
case R.id.btn_pausemusic:
playingmusic(PAUSE_MUSIC);
break;
//
case R.id.btn_stopmusic:
playingmusic(STOP_MUSIC);
break;
}
}
private void playingmusic(int type) {
// ,
Intent intent=new Intent(this,PlayingMusicServices.class);
intent.putExtra("type",type);
startService(intent);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
}
PlayingMusic Services 클래스:
/**
* Start Service
*/
public class PlayingMusicServices extends Service {
//
private MediaPlayer mediaPlayer;
// ,
private boolean isStop=true;
/**
* onBind, IBinder, Activity
* Bind Service
* @param intent
* @return
*/
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
//
@Override
public void onCreate() {
super.onCreate();
if (mediaPlayer==null){
mediaPlayer=new MediaPlayer();
//
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// MainActivity
Intent intent=new Intent();
intent.setAction("com.complete");
sendBroadcast(intent);
}
});
}
}
/**
* , ,
* @param intent : Activity service , intent
* @param flags :
* @param startId : , id, startid
* @return startservice ,
* START_STICKY: , , intent=null
* START_NOT_STICKY: ,
* START_REDELIVER_INTENT: , , Context intent
*
*/
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
switch (intent.getIntExtra("type",-1)){
case MainActivity.PLAT_MUSIC:
if (isStop){
// mediaplayer
mediaPlayer.reset();
//
mediaPlayer=MediaPlayer.create(this,R.raw.birds);
//
mediaPlayer.start();
//
mediaPlayer.setLooping(false);
isStop=false;
}else if (!isStop&&mediaPlayer.isPlaying()&&mediaPlayer!=null){
mediaPlayer.start();
}
break;
case MainActivity.PAUSE_MUSIC:
// ,
if (mediaPlayer!=null&&mediaPlayer.isPlaying()){
mediaPlayer.pause();
}
break;
case MainActivity.STOP_MUSIC:
if (mediaPlayer!=null){
//
mediaPlayer.stop();
isStop=true;
}
break;
}
return START_NOT_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
마지막 으로 목록 설정 파일 에 서 비 스 를 등록 하 는 것 을 잊 지 마 세 요:
<service android:name=".PlayingMusicServices"
android:exported="true"
android:enabled="true"/>123
res 아래 raw 폴 더 를 새로 만 들 고 미리 다운로드 한 MP3 파일 을 넣 습 니 다.여기 있 는 노래 는 제 가 다운로드 한 것 은 birds.mp3 입 니 다.Android Studio 에서 실행 중 오류 가 없습니다.
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.