一、只用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"> <TextView
android:layout_width="match_parent"
android:layout_height="40sp"
android:text="播放状态"
android:textSize="20sp"
android:gravity="center_horizontal"
android:id="@+id/tv_1"/> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"> <Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="播放"
android:onClick="play_onclick"/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="暂停"
android:onClick="pause_onclick"/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="停止"
android:onClick="stop_onclick"/>
<Button
android: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;
@Override
protected 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的静态方法create
mediaPlayer = 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;
@Override
protected 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() {
} @Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
private MediaPlayer mediaPlayer; @Override
public 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

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

效果:

Android——用Activity和Service实现简单的音乐播放器的更多相关文章

  1. 简单的音乐播放器(VS 2010 + Qt 4.8.5)

    昨天历经千辛万苦,配置好了VS 2010中的Qt环境(包括Qt for VS插件),今天决定浅浅地品味一下将两者结合进行编程的魅力. 上网查了一些资料,学习了一些基础知识,决定做一个简单的音乐播放器, ...

  2. swift3.0 简单直播和简单网络音乐播放器

    本项目采用swift3.0所写,适配iOS9.0+,所有界面均采用代码布局. 第一个tab写的是简单直播,传统MVC模式,第二个tab写的是简单网络音乐播放器.传说MVVM模式(至于血统是否纯正我就不 ...

  3. 使用Service组件实现简单的音乐播放器功能 --Android基础

    1.本例利用Service实现简单的音乐播放功能,下面是效果图.(点击开始播放开启服务,音乐播放,点击“停止播放”关闭服务,音乐停止播放.) 2.核心代码: MusicService.java: pa ...

  4. Android学习笔记_24_多媒体MediaPlayer对象之音乐播放器与SoundPool声音池

    一.MediaPlayer对象常用方法介绍: MediaPlayer mediaPlayer = new MediaPlayer(); if (mediaPlayer.isPlaying()) { m ...

  5. 用PHP+H5+Boostrap做简单的音乐播放器(进阶版)

    前言:之前做了一个音乐播放器(纯前端),意外的受欢迎,然后有人建议我把后台一起做了,正好也想学习后台,所以学了两天php(不要吐槽我的速度,慢工出细活嘛~)然后在之前的基础上也又完善了一些功能,所以这 ...

  6. Android课程---简单的音乐播放器

    第一个:用Activity实现 activity_music_play1.xml <?xml version="1.0" encoding="utf-8" ...

  7. 用H5+Boostrap做简单的音乐播放器

    前言:这个是综合一下我最近在学的东西做的小Demo,到实际使用还有距离,但是用来练手巩固知识点还是不错的,最近在二刷JS书和Boostrap.css的源码,做完这个Demo也算是暂告一段落,接下来是j ...

  8. HTML5+CSS3+jquery实现简单的音乐播放器

    ...最近天热的,感觉就像煎饼...然后别人在把妹子的时候,只有偶们这帮苦逼的程序员在那边撸代码...我日哦! 然后今天晒的是偶早年写的一个播放器...看上去是不是很有感觉的样子!一番宝物,Lisa唱 ...

  9. Android 音视频深入 十三 OpenSL ES 制作音乐播放器,能暂停和调整音量(附源码下载)

    项目地址https://github.com/979451341/OpenSLAudio OpenSL ES 是基于NDK也就是c语言的底层开发音频的公开API,通过使用它能够做到标准化, 高性能,低 ...

随机推荐

  1. 如何给mysql用户分配权限

    1,Mysql下创建新的用户 语法: 1.create user 用户名 identified by '密码'; 例:create user xiaogang identified by '12345 ...

  2. [转]Java的文件读写操作

    file(内存)----输入流---->[程序]----输出流---->file(内存) 当我们读写文本文件的时候,采用Reader是非常方便的,比如FileReader,InputStr ...

  3. 挖财大牛讲 Springboot工作流程

    转 Spring Boot Rock'n'Roll FuqiangWang - fujohnwang AT gmail DOTA com 2015-07-09 1 SpringBoot Intro 2 ...

  4. mysql数据库,创建只读用户

    数据库当前只有一个root用户,需要创建一个只读帐户给其他使用,因使用者是使用数据库管理工具在其他主机访问,所以还要开户远程访问权限,操作步骤如下. 1. 使用现有的root用户登录到Mysql. m ...

  5. mysql 多个字段 order by

    mysql中,我们可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列. 默认情况下,它是按升序排列. order by 后可加2个字段,用英文逗号隔开, 如A用升序, B降序,SQ ...

  6. FIR定点提高精度的trick_02

    作者:桂. 时间:2018-02-05  19:36:08 链接:http://www.cnblogs.com/xingshansi/p/8419182.html 一.概述 本文简要记录FIR的小tr ...

  7. supervisor 完整安装步骤

    Supervisorhttp://www.jianshu.com/p/bf2b3f4dec73http://www.jianshu.com/p/9abffc905645http://blog.csdn ...

  8. xcode6 怎样下载ios7模拟器

    1. 怎样下载ios7模拟器 点击xcode.选择"Preferences".选择"downloads",就能够看见IOS 7.1,只是下载有点慢. 2. 怎样 ...

  9. 分享:三种取消选中单选框radio的方法

    三种取消选中radio的方式,本文依赖于jQuery,其中第一种,第二种方式是使用jQuery实现的,第三种方式是基于JS和DOM实现的. <!DOCTYPE HTML> <html ...

  10. Atitit gui控件定位解决方案

    Atitit gui控件定位解决方案 1.1. 但是AUTOIT没有找图功能..可以请大侠们写一份这个UDF出来吗?1 1.2. ahk1 1.3. Java +opencv 模板匹配2 1.1. 但 ...