android使用service

Posted hemeiwolong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android使用service相关的知识,希望对你有一定的参考价值。

运行效果:一开始app调用service播放音乐,点击左上角的音量按钮会停止播放音乐。

          

结构目录图:

 

 

activity_main.xml:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:app="http://schemas.android.com/apk/res-auto"
 4     xmlns:tools="http://schemas.android.com/tools"
 5     android:layout_width="match_parent"
 6     android:layout_height="match_parent"
 7     android:background="@drawable/bg"
 8     tools:context=".MainActivity">
 9 
10     <ImageButton
11         android:id="@+id/btn_play"
12         android:src="@drawable/play"
13         android:layout_width="wrap_content"
14         android:layout_height="wrap_content" />
15 
16 </RelativeLayout>

 

MainActivity:
 1 package com.mingrisoft.serveicmusicplayer;
 2 
 3 import android.content.Intent;
 4 import android.support.v7.app.AppCompatActivity;
 5 import android.os.Bundle;
 6 import android.view.View;
 7 import android.widget.ImageButton;
 8 
 9 public class MainActivity extends AppCompatActivity {
10 
11     @Override
12     protected void onCreate(Bundle savedInstanceState) {
13         super.onCreate(savedInstanceState);
14         setContentView(R.layout.activity_main);
15 
16         final Intent intent = new Intent(MainActivity.this, MusicService.class);
17 
18         ImageButton btn_play = findViewById(R.id.btn_play); //获取“播放/停止”按钮
19         //启动service与停止service,实现播放背景音乐与停止播放背景音乐
20         btn_play.setOnClickListener(new View.OnClickListener() {
21             @Override
22             public void onClick(View v) {
23                 if (MusicService.isplay == false) { //判断音乐播放状态
24                     //启动service,从而实现播放背景音乐
25                     startService(intent);
26                     //更换播放背景音乐图标
27                     ((ImageButton) v).setImageDrawable(getResources().getDrawable(R.drawable.play, null));
28                 } else {
29                     //停止service,从而实现停止播放背景音乐
30                     stopService(intent);
31                     //更换停止背景音乐图标
32                     ((ImageButton) v).setImageDrawable(getResources().getDrawable(R.drawable.stop, null));
33                 }
34             }
35         });
36     }
37 
38     @Override
39     protected void onStart() {  //实现进入界面时,启动背景音乐service
40         //启动service,从而实现播放背景音乐
41         startService(new Intent(MainActivity.this, MusicService.class));
42 
43         super.onStart();
44     }
45 }

 

 

MusicService:
 1 package com.mingrisoft.serveicmusicplayer;
 2 
 3 import android.app.Service;
 4 import android.content.Intent;
 5 import android.media.MediaPlayer;
 6 import android.os.IBinder;
 7 
 8 public class MusicService extends Service {
 9     static boolean isplay;  //定义当前播放状态
10     MediaPlayer player; //MediaPlayer对象
11 
12     public MusicService() {
13     }
14 
15     @Override
16     public IBinder onBind(Intent intent) {  //必须实现的绑定方法
17         // TODO: Return the communication channel to the service.
18         throw new UnsupportedOperationException("Not yet implemented");
19     }
20 
21     @Override
22     public void onCreate() {    //创建MediaPlayer对象并加载播放的音乐文件
23         player = MediaPlayer.create(this, R.raw.music);
24 
25         super.onCreate();
26     }
27 
28     @Override
29     public int onStartCommand(Intent intent, int flags, int startId) {
30         if (!player.isPlaying()) {  //如果没有播放音乐
31             player.start(); //播放音乐
32             isplay = player.isPlaying();    //当前状态正在播放音乐
33         }
34 
35         return super.onStartCommand(intent, flags, startId);
36     }
37 
38     @Override
39     public void onDestroy() {   //停止音乐的播放
40         player.stop();  //停止音频的播放
41         isplay = player.isPlaying();    //当前状态没有播放音乐
42         player.release();   //释放资源
43 
44         super.onDestroy();
45     }
46 }

 

 

manifests:
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.mingrisoft.serveicmusicplayer">
 4 
 5     <application
 6         android:allowBackup="true"
 7         android:icon="@mipmap/ic_launcher"
 8         android:label="@string/app_name"
 9         android:roundIcon="@mipmap/ic_launcher_round"
10         android:supportsRtl="true"
11         android:theme="@style/AppTheme">
12         <activity android:name=".MainActivity">
13             <intent-filter>
14                 <action android:name="android.intent.action.MAIN" />
15 
16                 <category android:name="android.intent.category.LAUNCHER" />
17             </intent-filter>
18         </activity>
19 
20         <service
21             android:name=".MusicService"
22             android:enabled="true"
23             android:exported="true"></service>
24     </application>
25 
26 </manifest>

 

以上是关于android使用service的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Android 片段?

What's the difference between @Component, @Repository & @Service annotations in Spring?(代码片段

Android 使用两个不同的代码片段获取当前位置 NULL

如何使用Android片段管理器传递变量[重复]

Android 从 Service 到 Client 的通信

如何从Android中的片段单击按钮打开片段