使用服务开启关闭暂停音乐
2016-01-17 21:58
411 查看
效果图
xml界面代码
xml配置文件
MainActivity.java
MusicService
package com.example.musicservice;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
public class MusicService extends Service {
// 安卓自带音乐播放器对象
private MediaPlayer mediaPlayer;
private boolean isPlaying;
private boolean isPause;
private boolean isRelease;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
/**
* 开启服务的方法
*/
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
String action = intent.getStringExtra("action");
if (action.equals("start")) {
start();
} else if (action.equals("pause")) {
pause();
} else if (action.equals("stop")) {
stop();
}
return super.onStartCommand(intent, flags, startId);
}
/**
* 关闭服务的方法
*/
@Override
public void onDestroy() {
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.stop();
}
}
public void start() {
if (!isPlaying) {
mediaPlayer = MediaPlayer.create(MusicService.this, R.raw.aaa);
mediaPlayer.start();
isPlaying = true;
isRelease=false;
isPause=false;
}
}
public void pause() {
if (mediaPlayer != null && !isRelease) {
if (!isPause) {
mediaPlayer.pause();
isPause = true;
isPlaying = false;
} else {
mediaPlayer.start();
isPause = false;
isPlaying=true;
}
isRelease=false;
}
}
public void stop() {
if (mediaPlayer != null && isPlaying) {
if (!isRelease) {
mediaPlayer.stop();
mediaPlayer.release();
isRelease = true;
}
isPlaying = false;
isPause=false;
}
}
}
xml界面代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.musicservice.MainActivity" > <Button android:id="@+id/main_start" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="开启" /> <Button android:id="@+id/main_stop" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="关闭" /> <Button android:id="@+id/main_pause" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="暂停"/> </LinearLayout>
xml配置文件
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.musicservice" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <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 android:name="com.example.musicservice.MusicService"> <intent-filter> <action android:name="com.etc.lhm"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </service> </application> </manifest>
MainActivity.java
package com.example.musicservice; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity implements OnClickListener { private Button start, stop, pause; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); start = (Button) findViewById(R.id.main_start); stop = (Button) findViewById(R.id.main_stop); pause = (Button) findViewById(R.id.main_pause); start.setOnClickListener(this); stop.setOnClickListener(this); pause.setOnClickListener(this); } @Override public void onClick(View v) { Intent intent = new Intent("com.etc.lhm"); switch (v.getId()) { case R.id.main_start: intent.putExtra("action", "start"); startService(intent);// 启动 break; case R.id.main_stop: intent.putExtra("action", "stop"); startService(intent);// 关闭 break; case R.id.main_pause: intent.putExtra("action", "pause"); startService(intent); break; default: break; } } }
MusicService
package com.example.musicservice;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
public class MusicService extends Service {
// 安卓自带音乐播放器对象
private MediaPlayer mediaPlayer;
private boolean isPlaying;
private boolean isPause;
private boolean isRelease;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
/**
* 开启服务的方法
*/
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
String action = intent.getStringExtra("action");
if (action.equals("start")) {
start();
} else if (action.equals("pause")) {
pause();
} else if (action.equals("stop")) {
stop();
}
return super.onStartCommand(intent, flags, startId);
}
/**
* 关闭服务的方法
*/
@Override
public void onDestroy() {
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.stop();
}
}
public void start() {
if (!isPlaying) {
mediaPlayer = MediaPlayer.create(MusicService.this, R.raw.aaa);
mediaPlayer.start();
isPlaying = true;
isRelease=false;
isPause=false;
}
}
public void pause() {
if (mediaPlayer != null && !isRelease) {
if (!isPause) {
mediaPlayer.pause();
isPause = true;
isPlaying = false;
} else {
mediaPlayer.start();
isPause = false;
isPlaying=true;
}
isRelease=false;
}
}
public void stop() {
if (mediaPlayer != null && isPlaying) {
if (!isRelease) {
mediaPlayer.stop();
mediaPlayer.release();
isRelease = true;
}
isPlaying = false;
isPause=false;
}
}
}
相关文章推荐
- POJ 2676/2918 数独(dfs)
- MyBatis (一)configuration.xml的配置/mapper持久类的映射/sqlSession的获取/基础的select,insert,delete,update
- 【Linux】和【Mac】下修改终端提示文字和主机名的方法
- xmpp整理笔记:xmppFramework框架的导入和介绍
- 154 Find Minimum in Rotated Sorted Array II
- 安装PredictionIO-0.9.1
- typescript[4] - function
- Leetcode 242 Valid Anagram 字符串处理
- codevs 1743 反转卡片
- PHP安装编译教程
- windows下Elasticsearch+Logstash+Kibana日志收集分析系统安装教程
- TCP/IP illustrated 阅读笔记(四) UDP协议和IP分段
- Codeforces 616D Longest k-Good Segment(双指针)
- challenge(二)闪屏和引导页
- mysql之函数【整理】
- HDOJ2454(Degree Sequence of Graph G)(Havel-Hakimi定理判断所给序列是否可化成简单图)
- Recognizing and Localizing Endangered Right Whales with Extremely Deep Neural Networks
- android 微信朋友圈效果(附完整注释)
- C++编程对缓冲区的理解
- python100例(一)