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 에서 실행 중 오류 가 없습니다.
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기