`
wtrlay
  • 浏览: 23015 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Service实例-播放mp3音乐

阅读更多
1.在main.xml中加入如下四个按钮
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
     <Button android:layout_width="fill_parent" 
    android:layout_height="wrap_content" android:id="@+id/button1"
    android:text="开启音乐播放服务"/>
    
     <Button android:layout_width="fill_parent" 
    android:layout_height="wrap_content" android:id="@+id/button2"
    android:text="停止音乐播放服务"/>
    
     <Button android:layout_width="fill_parent" 
    android:layout_height="wrap_content" android:id="@+id/button3"
    android:text="绑定音乐播放服务"/>
    
     <Button android:layout_width="fill_parent" 
    android:layout_height="wrap_content" android:id="@+id/button4"
    android:text="解绑定音乐播放服务"/>


2.在res目录下新建raw目录,并拷入mp3文件,我的是www.mp3
创建如下Service

public class HelloService extends Service {

	MediaPlayer mp;//定义音乐播放器变量
	private final static String TAG = "HelloService";

	@Override
	//绑定服务     通过  bindService 方法启动服务时调用
	public IBinder onBind(Intent intent) {
		Toast.makeText(this, "onBind(Intent intent)",Toast.LENGTH_SHORT).show();
		mp.start();
		return null;
	}

	@Override
	//解绑定服务   通过  unbindService 方法解绑定服务时调用
	public boolean onUnbind(Intent intent) {
		Toast.makeText(this, "onUnbind(Intent intent)",Toast.LENGTH_SHORT).show();
		
		mp.stop();
		return false;
	}

	@Override
	//创建服务    该服务不存在需要被创建时被调用,不管startService()还是bindService()都会在启动时调用该方法 
	public void onCreate() {
		Toast.makeText(this, "onCreate()",Toast.LENGTH_SHORT).show();
		//创建一个音乐播放器对象
		mp = MediaPlayer.create(this.getApplicationContext(), R.raw.www);
		 //设置可以重复播放
		mp.setLooping(true);
	}

	@Override  
	//停止服务服务   通过  onDestroy 方法停止服务时调用
	public void onDestroy() {
		Toast.makeText(this, "onDestroy()",Toast.LENGTH_SHORT).show();
		mp.stop();

	}

	@Override
	//开始服务    通过  onStart 方法开始服务时调用
	public void onStart(Intent intent, int startId) {
		Toast.makeText(this, "onStart",Toast.LENGTH_SHORT);
		mp.start();

	}

}

3.在AndroidManifest.xml文件中注册Service
	<application android:icon="@drawable/icon" android:label="@string/app_name">
		<activity android:name=".MainActivity" android:label="@string/app_name">
			<intent-filter>
				<action android:name="android.intent.action.MAIN" />
				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</activity>
        <!-- 注册Service -->
		<service android:name=".service.HelloService"></service>
	</application>


4.Activity中的代码

public class MainActivity extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		// 获取页面组件
		Button button1 = (Button) this.findViewById(R.id.button1);
		Button button2 = (Button) this.findViewById(R.id.button2);
		Button button3 = (Button) this.findViewById(R.id.button3);
		Button button4 = (Button) this.findViewById(R.id.button4);

		// 定义服务链接对象 -要启动哪个服务
		final ServiceConnection sc = new ServiceConnection() {

			@Override
			public void onServiceDisconnected(ComponentName name) {
				Toast.makeText(MainActivity.this,
						"ServiceConnection onServiceDisconnected",
						Toast.LENGTH_SHORT).show();

			}

			@Override
			public void onServiceConnected(ComponentName name, IBinder service) {
				Toast.makeText(MainActivity.this,
						"ServiceConnection onServiceConnected",
						Toast.LENGTH_SHORT).show();

			}
		};
		// 定义监听事件
		OnClickListener ocl = new OnClickListener() {

			//在意图中指定服务
			Intent intent = new Intent(MainActivity.this, HelloService.class);

			@Override
			public void onClick(View v) {
				switch (v.getId()) {
				case R.id.button1:
					startService(intent);
					break;
				case R.id.button2:
					stopService(intent);
					break;
				case R.id.button3:
					// 绑定启动要指定服务链接对象,绑定的操作选项
					bindService(intent, sc, Context.BIND_AUTO_CREATE);
					break;
				case R.id.button4:
					unbindService(sc);
					break;
				}

			}
		};
		//为按钮加点击事件
		button1.setOnClickListener(ocl);
		button2.setOnClickListener(ocl);
		button3.setOnClickListener(ocl);
		button4.setOnClickListener(ocl);
	}
}


5.从这个例子中我们可以体会到Context.startService()方法和Context.bindService()方法的区别
在模拟器中点击开启音乐播放服务后,播放音乐,此时点击右侧的回退按钮,音乐仍然播放。但是通过绑定音乐播放服务启动的音乐,在点击回退按钮后,音乐也停止了播放,说明通过这种方式启动的服务是与Context绑定的。
分享到:
评论

相关推荐

    Android 中级教程之------Android MediaPlayer播放mp3的实例

    了解这个知识点对于Android开发者来说至关重要,特别是对于那些希望构建音乐播放器或者需要在应用中集成音频播放功能的开发者。 首先,我们来看一下MediaPlayer的基本使用步骤: 1. 初始化MediaPlayer对象:通常,...

    android实例源代码-Android MP3播放器,带卡拉OK字幕.zip

    这个"android实例源代码-Android MP3播放器,带卡拉OK字幕.zip"的压缩包显然提供了一个完整的实现案例,可以供学习者研究和参考。下面我们将详细探讨这个项目可能涵盖的一些核心技术和知识点。 1. **媒体播放框架**...

    Android保活之循环播放无声音乐

    开发者可以通过`MediaPlayer`创建实例,设置无声音频源,调用`setLooping(true)`使其循环播放,并使用`start()`方法启动播放。 4. **BroadcastReceiver** 为了监控音乐播放服务的状态,开发者通常会创建一个`...

    安卓MP3播放器开发实例

    在MP3播放器中,活动通常用于用户界面交互,服务则负责后台音乐播放。 接下来,我们需要使用MediaPlayer类来处理音频播放。MediaPlayer是安卓SDK提供的一个强大工具,支持多种音频格式,包括MP3。初始化MediaPlayer...

    android studio手机MP3音乐播放器

    【Android Studio 手机MP3音乐播放器】是一款基于Android Studio开发的应用程序,它允许用户在他们的智能手机上播放MP3格式的音乐文件。这个项目涵盖了Android应用开发的基础知识,包括UI设计、媒体处理、文件操作...

    android中播放音乐的实例

    本实例将深入探讨如何在Android应用中实现音乐播放功能。我们将主要关注以下几个方面: 1. **MediaPlayer类** Android系统提供了一个名为`MediaPlayer`的内置类,用于播放音频和视频文件。它是Android SDK中的核心...

    本地Mp3音乐播放器app源码(android).rar

    本篇文章将深入探讨一个名为"本地Mp3音乐播放器app源码(android).rar"的项目,该源码提供了一个基本的框架,帮助开发者理解如何在Android应用中实现音乐播放功能。 首先,让我们了解项目的结构。在解压后的文件中...

    android开发实例大全_王东华

    实例099: 播放一个指定的MP3文件 346 实例100: 调节手机音量的大小 350 实例101: 实现相机预览和拍照功能 353 实例102: 在手机中播放影片 360 实例103: 手机录音系统 363 实例104: 设置手机中的铃声 368 实例...

    java_Applecation程序(,可以播放MP3)

    同时,描述中的“按钮的巧妙转化”暗示了可能有事件监听器设置在按钮上,当用户点击按钮时,会触发播放音乐的操作。 关于“巧妙地设计思想”,这可能是指程序的架构或者交互方式具有创新性。例如,程序可能采用了...

    Android参考源码-音乐播放器源码.zip

    创建一个`Foreground Service`可以保证即使用户离开应用,音乐也能持续播放,同时提供通知栏控制,让用户能随时操作音乐播放。 4. **通知栏控制**:通过`Notification`类,开发者可以创建在通知中心显示的音乐控制...

    Android通过startService播放背景音乐

    `onCreate()` 方法在Service实例化时只调用一次,用于初始化Service。在本例中,`MediaPlayer` 对象在此处创建,准备播放音乐文件。`MediaPlayer.create()` 方法用于加载音乐资源,这里是从 `/res/raw` 目录下的 `...

    MediaPlayer_Service

    【MediaPlayer_Service】是一个基于Android平台的MP3音乐播放器应用的源码实例,它专注于从用户的外部存储(如SD卡)加载并播放MP3音频文件。这个应用为用户提供了一个简单的用户界面,包括播放、暂停、上一首和下一...

    android 音频播放MP3 audio

    10. **Service 使用**: 对于长时间运行的音乐播放,建议使用`Service`,这样即使用户离开应用,音乐仍能持续播放。`Binder`可以用于在Activity和服务之间进行通信。 11. **通知栏控制**: 对于后台播放,通常会在...

    面向对象课程设计-Android手机音乐播放器.doc

    2. 后台播放:创建Service,将音乐播放逻辑放入其中。 3. 页面跳转:通过Intent实例化目标Activity并启动。 4. 电话监听:注册BroadcastReceiver,监听ACTION_PHONE_STATE广播。 5. 文件过滤读取:遍历SD卡目录,...

    android 播放背景音乐

    在Android平台上实现背景音乐播放是开发游戏或应用时常见的需求,它可以为用户提供更沉浸式的体验...例如,可以使用服务(Service)来在后台持续播放音乐,或者使用音乐播放库(如ExoPlayer)以获得更好的性能和控制。

    mp3音乐播放器

    【标题】"mp3音乐播放器"是一款基于MFC(Microsoft Foundation Classes)开发的简易音频播放软件,专门针对MP3格式的音乐文件设计。MFC是微软提供的C++类库,用于构建Windows应用程序,它提供了丰富的用户界面组件和...

    Android播放音乐APP

    在实现音乐播放功能时,我们需要创建`MediaPlayer`实例,设置数据源(可能是本地文件路径或URL),然后调用`prepare()`方法进行初始化,最后通过`start()`启动播放。 2. **歌曲歌词显示**: 要实现在播放音乐时...

    android 后台音乐播放器

    创建一个`MediaPlayer`实例,设置数据源(如本地存储的MP3文件),然后调用`prepare()`和`start()`方法来准备并开始播放音乐。 4. **BroadcastReceiver**:为了响应系统事件(如耳机插拔、来电等),音乐播放器通常...

    android 实现流媒体播放远程mp3文件代码pdf

    `StreamingMediaPlayer`类继承自`Service`,用于在后台运行音频播放逻辑。它通过逐步下载远程音频文件并将其暂时存储在本地,然后播放这部分已下载的数据,从而实现了流式播放的效果。 ##### 3.2 重要成员变量 - `...

    音乐播放器源码实例下载

    例如,使用Service来保持音乐播放,同时利用WakeLock防止设备休眠,但又要合理控制以节省电量。 综上所述,“音乐播放器源码实例下载”涵盖的IT知识点包括:音频处理(AudioTrack和MediaPlayer),文件系统操作,...

Global site tag (gtag.js) - Google Analytics