一.Kotlin语言普通写法
package com.ywjh.playmusicdemo
import android.media.MediaPlayer
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
class MainActivity : AppCompatActivity(), View.OnClickListener {
private var btn_main_play: Button? = null
private var btn_main_pause: Button? = null
private var btn_main_stop: Button? = null
private var btn_main_exit: Button? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn_main_play = findViewById(R.id.btn_main_play) as Button
btn_main_pause = findViewById(R.id.btn_main_pause) as Button
btn_main_stop = findViewById(R.id.btn_main_stop) as Button
btn_main_exit = findViewById(R.id.btn_main_exit) as Button
btn_main_play!!.setOnClickListener(this)
btn_main_pause!!.setOnClickListener(this)
btn_main_stop!!.setOnClickListener(this)
btn_main_exit!!.setOnClickListener(this)
}
override public fun onClick(v: View?) {
if(btn_main_play==v)
playMusic()
else if (btn_main_pause==v)
pauseMusic()
else if(btn_main_stop==v)
stopMusic()
else if(btn_main_exit==v)
exitMusic()
}
private var player : MediaPlayer?=null
//退出,停止,,并退出应用
private fun exitMusic() {
stopMusic()
finish()
}
//停止音乐,肯定不为空,可能正在播放,也可能暂停
private fun stopMusic() {
if(player!=null)
{
player?.stop()//停止
player?.reset()//重置
player?.release()//释放资源(内存空间)
player=null;
}
}
private fun pauseMusic() {
if(player!=null && player!!.isPlaying())
{//若player不为空,且正在播放,才会暂停
player?.pause()
}
}
private fun playMusic() {
if (player==null)
{//如果为空,才会创建
player= MediaPlayer.create(this,R.raw.a_bright_future)
}
player?.start()
}
}
二.使用service服务 需在AndroidManifest注册
<service android:name="com.ywjh.playmusicdemo.MusicService"></service>
1.MusicService
package com.ywjh.playmusicdemo
import android.app.Service
import android.content.Intent
import android.media.MediaPlayer
import android.os.IBinder
class MusicService : Service() {
//这个onBind绑定service事件 用于返回Service实例
override fun onBind(p0: Intent?): IBinder? {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
return null
}
private var player : MediaPlayer?=null
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
// var action:String=intent.getStringExtra("action")
val action = intent?.getStringExtra("action")
if ("play".equals(action))
{
playMusic()
}else if ("stop".equals(action))
{
stopMusic()
}else if ("pause".equals(action))
{
pauseMusic()
}else if ("exit".equals(action))
{
onDestroy()
}
return super.onStartCommand(intent, flags, startId)
}
//停止音乐,肯定不为空,可能正在播放,也可能暂停
private fun stopMusic() {
if(player!=null)
{
player?.stop()//停止
player?.reset()//重置
player?.release()//释放资源(内存空间)
player=null;
}
}
private fun pauseMusic() {
if(player!=null && player!!.isPlaying())
{//若player不为空,且正在播放,才会暂停
player?.pause()
}
}
private fun playMusic() {
if (player==null)
{//如果为空,才会创建
player= MediaPlayer.create(this,R.raw.a_bright_future)
}
player?.start()
}
override fun onDestroy() {
super.onDestroy()
//在死亡之前停止音乐
stopMusic()
}
}
2.MainActivity
package com.ywjh.playmusicdemo
import android.content.Intent
import android.media.MediaPlayer
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
class MainActivity : AppCompatActivity(), View.OnClickListener {
private var btn_main_play: Button? = null
private var btn_main_pause: Button? = null
private var btn_main_stop: Button? = null
private var btn_main_exit: Button? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//layout findbyid返回的是View对象将其向下转换成button对象
btn_main_play = findViewById(R.id.btn_main_play) as Button
btn_main_pause = findViewById(R.id.btn_main_pause) as Button
btn_main_stop = findViewById(R.id.btn_main_stop) as Button
btn_main_exit = findViewById(R.id.btn_main_exit) as Button
btn_main_play!!.setOnClickListener(this)
btn_main_pause!!.setOnClickListener(this)
btn_main_stop!!.setOnClickListener(this)
btn_main_exit!!.setOnClickListener(this)
}
override public fun onClick(v: View?) {
//java :Intent intent=new(this,MusicService.class)
val intent = Intent(this, MusicService::class.java)
if(btn_main_play==v) {
intent.putExtra("action","play") //用于识别做的是哪一个操作
startService(intent)//开启服务 并加入标识符
}
else if (btn_main_pause==v){
intent.putExtra("action","pause") //用于识别做的是哪一个操作
startService(intent)
}
else if(btn_main_stop==v){
intent.putExtra("action","stop") //用于识别做的是哪一个操作
startService(intent)
}
else if(btn_main_exit==v){
//停止服务
stopService(intent)
//结束应用
finish()
}
}
}
三.java语言
1.MusicService
package com.example.playmusicdemo;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
public class MusicService extends Service {
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
private MediaPlayer player;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
String action=intent.getStringExtra("action");
if ("play".equals(action))
{
playMusic();
}else if("stop".equals(action))
{
stopMusic();
}else if("pause".equals(action))
{
pauseMusic();
}
return super.onStartCommand(intent, flags, startId);
}
//停止音乐,肯定不为空,也可能正在播,也可能暂停
private void stopMusic() {
if(player!=null)
{
player.stop();
player.reset();
player.release();
player=null;
}
}
//暂停音乐
private void pauseMusic() {
if(player!=null && player.isPlaying())
{//若player不为空,且正在播放,才去暂停
player.pause();
}
}
//播放音乐
private void playMusic() {
if(player==null)
{//如果为空,才去创造
player=MediaPlayer.create(this,R.raw.music);
}
player.start();
}
@Override
public void onDestroy() {
super.onDestroy();
//在死亡之前停止音乐
stopMusic();
}
}
2.MainActivity
package com.example.playmusicdemo;
import android.app.Activity;
import android.content.Intent;
import android.drm.DrmStore.Playback;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity implements OnClickListener {
private Button btn_main_play;
private Button btn_main_pause;
private Button btn_main_stop;
private Button btn_main_exit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_main_play=(Button) findViewById(R.id.btn_main_play);
btn_main_pause=(Button) findViewById(R.id.btn_main_pause);
btn_main_stop=(Button) findViewById(R.id.btn_main_stop);
btn_main_exit=(Button) findViewById(R.id.btn_main_exit);
btn_main_play.setOnClickListener(this);
btn_main_pause.setOnClickListener(this);
btn_main_stop.setOnClickListener(this);
btn_main_exit.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent=new Intent(this,MusicService.class);
if(btn_main_play==v)
{
intent.putExtra("action", "play");//用于识别做的是哪一个操作
startService(intent);
}else if(btn_main_pause==v){
intent.putExtra("action", "pause");
startService(intent);
}else if(btn_main_stop==v){
intent.putExtra("action", "stop");
startService(intent);
}else if(btn_main_exit==v){
//停止服务
stopService(intent);
//结束应用
finish();
}
}
}