一、只用Activity 容易出现问题

xml

<?xml version="1.0" encoding="utf-8"?>
<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: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.chenshuai.myapplication.ActivityMusic"android:orientation="vertical"><TextViewandroid:layout_width="match_parent"android:layout_height="40sp"android:text="播放状态"android:textSize="20sp"android:gravity="center_horizontal"android:id="@+id/tv_1"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="播放"android:onClick="play_onclick"/><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="暂停"android:onClick="pause_onclick"/><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="停止"android:onClick="stop_onclick"/><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="退出"android:onClick="exit_onclick"/></LinearLayout></LinearLayout>

java

package com.example.chenshuai.myapplication;import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;public class ActivityMusic extends AppCompatActivity {TextView tv_1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_activity_music);tv_1 = (TextView)findViewById(R.id.tv_1);tv_1.setText("播放状态:停止播放。。。");}//媒体播放器 定义成员变量private MediaPlayer mediaPlayer;public void play_onclick(View view){if (mediaPlayer == null) {//调用MediaPlayer的静态方法createmediaPlayer = MediaPlayer.create(this, R.raw.tangren);}mediaPlayer.start();tv_1.setText("播放状态:正在播放。。。");}public void stop_onclick(View view){if (mediaPlayer != null) {mediaPlayer.stop();//停止mediaPlayer.reset();//重置mediaPlayer.release();//释放资源mediaPlayer = null;//重新赋值为空
        }tv_1.setText("播放状态:停止播放。。。");}public void pause_onclick(View view){if (mediaPlayer != null && mediaPlayer.isPlaying()){mediaPlayer.pause();tv_1.setText("播放状态:暂停播放。。。");}}public void exit_onclick(View view){stop_onclick(view);finish();}
}

效果:

二、用Service实现

同一个xml

ActivityMusicservice.java
package com.example.chenshuai.myapplication;import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;public class ActivityMusicservice extends AppCompatActivity {TextView tv_1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_activity_music);tv_1 = (TextView)findViewById(R.id.tv_1);tv_1.setText("播放状态11:停止播放。。。");}public void play_onclick(View view){Intent intent = new Intent(this,MyServiceMusic.class);intent.putExtra("action","play");startService(intent);tv_1.setText("播放状态11:正在播放。。。");}public void stop_onclick(View view){Intent intent = new Intent(this,MyServiceMusic.class);intent.putExtra("action","stop");startService(intent);tv_1.setText("播放状态11:停止播放。。。");}public void pause_onclick(View view){Intent intent = new Intent(this,MyServiceMusic.class);intent.putExtra("action","pause");startService(intent);tv_1.setText("播放状态11:暂停播放。。。");}public void exit_onclick(View view){stop_onclick(view);finish();}
}

MyServiceMusic.java
package com.example.chenshuai.myapplication;import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;public class MyServiceMusic extends Service {public MyServiceMusic() {}@Overridepublic IBinder onBind(Intent intent) {// TODO: Return the communication channel to the service.throw new UnsupportedOperationException("Not yet implemented");}private MediaPlayer mediaPlayer;@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {//获取意图传递的信息String action = intent.getStringExtra("action");switch (action){case "play":if (mediaPlayer == null){mediaPlayer = MediaPlayer.create(this,R.raw.onceagain);}mediaPlayer.start();break;case "stop":if (mediaPlayer !=null){mediaPlayer.stop();mediaPlayer.reset();mediaPlayer.release();mediaPlayer = null;}break;case "pause":if (mediaPlayer !=null && mediaPlayer.isPlaying()){mediaPlayer.pause();}break;}return super.onStartCommand(intent, flags, startId);}
}

minifest.xml

<serviceandroid:name=".MyServiceMusic"android:enabled="true"android:exported="true" />

效果:

转载于:https://www.cnblogs.com/Chenshuai7/p/5426092.html

Android——用Activity和Service实现简单的音乐播放器相关推荐

  1. Android初步学习BroadCast与Service实现简单的音乐播放器

    ctivity代码 view sourceprint? 001.package com.siyehuazhilian.musicplay; 002.  003.import java.util.Arr ...

  2. android 简单的音乐播放器

    在项目开发过程中需要一个简单的音频播放的功能,需求很简单,只需要能够播放一个指定文件夹的全部mp3和wav音频文件就可以,谷歌给我们提供了一套比较完整的API,使得我们可以很简单的写出一个简易的音乐播 ...

  3. android 简单的音乐播放器实现播放模式的切换

    以前写过一篇简单的音乐播放器,但是这个播放器没有实现播放模式的切换,在项目中要实现两个播放模式,循环播放和随机播放,经过这两天的努力搞定了,界面比较粗糙.可以先看一下前面的简单音乐播放器,详细的就不说 ...

  4. 一个基于Android开发的简单的音乐播放器

    一个基于Android开发的简单的音乐播放器 记得当时老师让我们写因为播放器时,脑子一头雾水,网上杂七杂八的资料也很少有用,因此索性就自己写一篇,希望对有缘人有用. 因为有好多人问我要源码,所以附上g ...

  5. android 存放音频文件夹里,Android 实现简单的音乐播放器效果(音频文件的三种存放)...

    Android 实现简单的音乐播放器效果(音频文件的三种存放).三种方法主要使用到的类 MediaPlayer.create() getAssets() new Mediaplayer() - 几个控 ...

  6. Android开发做一个简单的音乐播放器

    Android开发如何做一个简单的音乐播放器,首先我们先要知道用到的知识点有哪些. 1.MediaPlayer:可以播放本地资源.sd卡内存资源以及网络uri资源,在这里我们播放sd卡上的音乐资源. ...

  7. 自制一个简单的音乐播放器

    这两天刚学完了contentprovider和service组件,就综合下所学的,自制了一个简单的音乐播放器. 代码如下: 主activity代码 public class MainActivity ...

  8. 好程序员前端分享使用JS开发简单的音乐播放器

    好程序员前端分享使用JS开发简单的音乐播放器,最近,我们在教学生使用JavaScript,今天就带大家开发一款简单的音乐播放器.首先,最终效果如图所示: 首先,我们来编写html界面index.htm ...

  9. 用Qt写一个简单的音乐播放器(三):增加界面(播放跳转与音量控制)

    一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...

最新文章

  1. 盛夏海边,用Python分析青岛哪些景点性价比高
  2. Web Service 之WSDL文档简介
  3. C语言比较法排大小,c语言 比较法排序区别
  4. 使用LinkedHashMap实现LRU算法
  5. 64位windows7配置32位odbc
  6. 百余名欧洲议会议员发函 呼吁英国留在欧盟
  7. python中random库_python标准库之random模块
  8. C#LeetCode刷题之#167-两数之和 II - 输入有序数组(Two Sum II - Input array is sorted)
  9. 出现问题Debug Assertion Failed!
  10. c语言sizeof输出单位,急,求大神!C语言中sizeof问题
  11. linux .net环境变量,Linux编程 系统环境变量位置, 环境变量持久化
  12. 点赞功能java_jquery点赞功能实现代码 点个赞吧!
  13. cacti mysql 压缩 备份_CactiEZ备份和恢复
  14. HTTP缓存 Last-Modified
  15. python 录屏_《自拍教程70》Python adb一键录屏
  16. 关于苏宁易购的好坏与网购的心酸苦逼史,有同感的请继续顶起
  17. ipados 蓝牙 android,iPadOS13.4对于无线或蓝牙鼠标的兼容性… - Apple 社区
  18. hp微型计算机装打印机,hp打印机如何安装 hp打印机安装步骤及注意事项【详解】...
  19. 2019 HZNU Winter Training Day 13 Comprehensive Training
  20. 解决ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

热门文章

  1. Objective-C MacOS以管理员权限运行程序
  2. s3c2440启动文件详细分析
  3. 在Windows上使用VSCode远程链接到Linux上开发并调试C++程序
  4. 【C++】字符串中运算符的重载问题
  5. linux diff命令_Linux diff命令示例
  6. C 语言 普通基本数据类型 以及 其储存形式
  7. [BUUCTF-pwn]——ciscn_2019_en_2
  8. 使用静态库分享共同的模块
  9. linux中的shell脚本case,【shell】Linux shell 之 case 详解
  10. android4.0 菜单,Android 4.0.4系统曝光 增新Power菜单