Android——用Activity和Service实现简单的音乐播放器
一、只用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实现简单的音乐播放器相关推荐
- Android初步学习BroadCast与Service实现简单的音乐播放器
ctivity代码 view sourceprint? 001.package com.siyehuazhilian.musicplay; 002. 003.import java.util.Arr ...
- android 简单的音乐播放器
在项目开发过程中需要一个简单的音频播放的功能,需求很简单,只需要能够播放一个指定文件夹的全部mp3和wav音频文件就可以,谷歌给我们提供了一套比较完整的API,使得我们可以很简单的写出一个简易的音乐播 ...
- android 简单的音乐播放器实现播放模式的切换
以前写过一篇简单的音乐播放器,但是这个播放器没有实现播放模式的切换,在项目中要实现两个播放模式,循环播放和随机播放,经过这两天的努力搞定了,界面比较粗糙.可以先看一下前面的简单音乐播放器,详细的就不说 ...
- 一个基于Android开发的简单的音乐播放器
一个基于Android开发的简单的音乐播放器 记得当时老师让我们写因为播放器时,脑子一头雾水,网上杂七杂八的资料也很少有用,因此索性就自己写一篇,希望对有缘人有用. 因为有好多人问我要源码,所以附上g ...
- android 存放音频文件夹里,Android 实现简单的音乐播放器效果(音频文件的三种存放)...
Android 实现简单的音乐播放器效果(音频文件的三种存放).三种方法主要使用到的类 MediaPlayer.create() getAssets() new Mediaplayer() - 几个控 ...
- Android开发做一个简单的音乐播放器
Android开发如何做一个简单的音乐播放器,首先我们先要知道用到的知识点有哪些. 1.MediaPlayer:可以播放本地资源.sd卡内存资源以及网络uri资源,在这里我们播放sd卡上的音乐资源. ...
- 自制一个简单的音乐播放器
这两天刚学完了contentprovider和service组件,就综合下所学的,自制了一个简单的音乐播放器. 代码如下: 主activity代码 public class MainActivity ...
- 好程序员前端分享使用JS开发简单的音乐播放器
好程序员前端分享使用JS开发简单的音乐播放器,最近,我们在教学生使用JavaScript,今天就带大家开发一款简单的音乐播放器.首先,最终效果如图所示: 首先,我们来编写html界面index.htm ...
- 用Qt写一个简单的音乐播放器(三):增加界面(播放跳转与音量控制)
一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...
最新文章
- 盛夏海边,用Python分析青岛哪些景点性价比高
- Web Service 之WSDL文档简介
- C语言比较法排大小,c语言 比较法排序区别
- 使用LinkedHashMap实现LRU算法
- 64位windows7配置32位odbc
- 百余名欧洲议会议员发函 呼吁英国留在欧盟
- python中random库_python标准库之random模块
- C#LeetCode刷题之#167-两数之和 II - 输入有序数组(Two Sum II - Input array is sorted)
- 出现问题Debug Assertion Failed!
- c语言sizeof输出单位,急,求大神!C语言中sizeof问题
- linux .net环境变量,Linux编程 系统环境变量位置, 环境变量持久化
- 点赞功能java_jquery点赞功能实现代码 点个赞吧!
- cacti mysql 压缩 备份_CactiEZ备份和恢复
- HTTP缓存 Last-Modified
- python 录屏_《自拍教程70》Python adb一键录屏
- 关于苏宁易购的好坏与网购的心酸苦逼史,有同感的请继续顶起
- ipados 蓝牙 android,iPadOS13.4对于无线或蓝牙鼠标的兼容性… - Apple 社区
- hp微型计算机装打印机,hp打印机如何安装 hp打印机安装步骤及注意事项【详解】...
- 2019 HZNU Winter Training Day 13 Comprehensive Training
- 解决ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
热门文章
- Objective-C MacOS以管理员权限运行程序
- s3c2440启动文件详细分析
- 在Windows上使用VSCode远程链接到Linux上开发并调试C++程序
- 【C++】字符串中运算符的重载问题
- linux diff命令_Linux diff命令示例
- C 语言 普通基本数据类型 以及 其储存形式
- [BUUCTF-pwn]——ciscn_2019_en_2
- 使用静态库分享共同的模块
- linux中的shell脚本case,【shell】Linux shell 之 case 详解
- android4.0 菜单,Android 4.0.4系统曝光 增新Power菜单