使用Service组件实现简单的音乐播放器功能 --Android基础
1、本例利用Service实现简单的音乐播放功能,下面是效果图。(点击开始播放开启服务,音乐播放,点击“停止播放”关闭服务,音乐停止播放。)
2、核心代码:
MusicService.java:
package thonlon.example.cn.servicedemo; import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.IBinder; import java.io.IOException; /**
* 绑定服务的时候被调用
*/
public class MusicService extends Service {
private MediaPlayer mediaPlayer; @Override
public IBinder onBind(Intent intent) {
return null;
} /**
* Service被创建后被调用
*/
@Override
public void onCreate() {
// 播放本地资源的音乐
// mediaPlayer = MediaPlayer.create(this, R.raw.snh);
// 播放文件系统的音乐
// File file = new File(Environment.getExternalStorageDirectory(), "zshyn.mp3");
// mediaPlayer = new MediaPlayer();
// try {
// mediaPlayer.setDataSource(file.getAbsolutePath());//通过获取绝对路径来设置播放源头
// } catch (IOException e) {
// e.printStackTrace(); // 播放网络中的音乐
mediaPlayer = new MediaPlayer();
Uri uri = Uri.parse("http://www.nxl123.cn/snh.mp3");
try {
mediaPlayer.setDataSource(this, uri);//或者直接mediaPlayer.setDataSource("http://www.nxl123.cn/snh.mp3");
} catch (IOException e) {
e.printStackTrace();
}
} /**
* Service被开始后调用
*/
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mediaPlayer.prepareAsync();//准备资源,可能阻塞主线程,所以要在子线程调用。在这里使用prepareAsync函数就可以了
//防止资源还没有准备完毕就播放音乐,所以要设置准备资源监听器
//表示当准备资源完成后,调用监听器中onPrepare方法
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();//开始播放音乐
}
});
//MediaPlayer实例是由create方法创建的,那么第一次启动播放前不需要再调用prepare()了,因为create方法里已经调用过了。
return super.onStartCommand(intent, flags, startId);
} /**
* Service被停止后调用
*/
@Override
public void onDestroy() {
mediaPlayer.stop();//停止播放
mediaPlayer.release();//释放准备的资源,如果还需要用到此对象则可先不销毁
}
}
MainActivity.java:
package thonlon.example.cn.servicedemo;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View; public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(this, MusicService.class);
switch (v.getId()) {
case R.id.btn_start_service:
startService(intent);
break;
case R.id.btn_stop_service:
stopService(intent);
break;
}
}
}
使用Service组件实现简单的音乐播放器功能 --Android基础的更多相关文章
- 简单的音乐播放器(VS 2010 + Qt 4.8.5)
昨天历经千辛万苦,配置好了VS 2010中的Qt环境(包括Qt for VS插件),今天决定浅浅地品味一下将两者结合进行编程的魅力. 上网查了一些资料,学习了一些基础知识,决定做一个简单的音乐播放器, ...
- swift3.0 简单直播和简单网络音乐播放器
本项目采用swift3.0所写,适配iOS9.0+,所有界面均采用代码布局. 第一个tab写的是简单直播,传统MVC模式,第二个tab写的是简单网络音乐播放器.传说MVVM模式(至于血统是否纯正我就不 ...
- 用PHP+H5+Boostrap做简单的音乐播放器(进阶版)
前言:之前做了一个音乐播放器(纯前端),意外的受欢迎,然后有人建议我把后台一起做了,正好也想学习后台,所以学了两天php(不要吐槽我的速度,慢工出细活嘛~)然后在之前的基础上也又完善了一些功能,所以这 ...
- Android——用Activity和Service实现简单的音乐播放器
一.只用Activity 容易出现问题 xml <?xml version="1.0" encoding="utf-8"?> <LinearL ...
- Android课程---简单的音乐播放器
第一个:用Activity实现 activity_music_play1.xml <?xml version="1.0" encoding="utf-8" ...
- 用H5+Boostrap做简单的音乐播放器
前言:这个是综合一下我最近在学的东西做的小Demo,到实际使用还有距离,但是用来练手巩固知识点还是不错的,最近在二刷JS书和Boostrap.css的源码,做完这个Demo也算是暂告一段落,接下来是j ...
- HTML5+CSS3+jquery实现简单的音乐播放器
...最近天热的,感觉就像煎饼...然后别人在把妹子的时候,只有偶们这帮苦逼的程序员在那边撸代码...我日哦! 然后今天晒的是偶早年写的一个播放器...看上去是不是很有感觉的样子!一番宝物,Lisa唱 ...
- Android开发6:Service的使用(简单音乐播放器的实现)
前言 啦啦啦~各位好久不见啦~博主最近比较忙,而且最近一次实验也是刚刚结束~ 好了不废话了,直接进入我们这次的内容~ 在这篇博文里我们将学习Service(服务)的相关知识,学会使用 Service ...
- Android开发实战之简单音乐播放器
最近开始学习音频相关.所以,很想自己做一个音乐播放器,于是,花了一天学习,将播放器的基本功能实现了出来.我觉得学习知识点还是蛮多的,所以写篇博客总结一下关于一个音乐播放器实现的逻辑.希望这篇博文对你的 ...
随机推荐
- 从客户端(XXX)中检测到有潜在危险的Request.Form 值
aspx 页面出现 [HttpRequestValidationException (0x80004005):从客户端(TextBox1="<?xml version="1. ...
- Python3 tkinter基础 Label compound 图片上显示文字 fg字体颜色 font字体大小
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- 二进制枚举例题|poj1222,poj3279,poj1753
poj1222,poj3279,poj1753 听说还有 POJ1681-画家问题 POJ1166-拨钟问题 POJ1054-讨厌的青蛙
- dajie项目的坑
1.首先IDEA巨坑无比的地方是引入时,只要哪怕一个依赖下载不到,就会长期阻塞,删除.重新引入都没用!! 2.注释掉项目及其子项目中所有pom.xml中引用的spring仓库,否则即使maven配置阿 ...
- hihoCoder week227 Longest Subsequence
题目链接 https://hihocoder.com/contest/hiho227/problem/1 题目详解 https://hihocoder.com/discuss/question/558 ...
- 【Mybatis】--配置SqlMapConfig文件中的几个注意事项
一.别名 如果设置别名后,就可以在Mapper.xml 文件中使用设置的别名 <typeAliases> <!-- 单个别名定义 --> <typeAlias alias ...
- MongoDB 基本语法笔记
MongoDB常识 MongoDB Shell是MongoDB自带的交互式Javascript shell,所以可直接执行JS脚本,用来对MongoDB进行操作和管理的交互式环境. ObjectId: ...
- Anaconda 安装后配置环境变量
Anaconda 安装后在 cmd 中运算 python 无效, 是环境变量没有生效.正常安装需要有三个,配置好就行. D:\xwapp\ProgramData\Anaconda3 D:\xwapp\ ...
- 网络通信 & 初识socket
本节主要内容: 1.客户短\服务端架构 2.网络通信的流程 3.初识socket 一.客户端\服务端架构 客户端\服务端架构: 即Client/Server (C/S) 结构,是大家熟知的软件系统体系 ...
- .Net MVC关于子页面引用js库问题
layout页面中的配置: @RenderSection("scripts", required: false) @RenderSection("Styles" ...