android之MP3播放器

布局文件



布局文件中设置了三个按钮分别来进行播放、暂停和继续播放

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="开始播放"
    android:onClick="play"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="暂停播放"
    android:onClick="pause"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="继续播放"
    android:onClick="continuePlay"/>
</LinearLayout>

Activity



在Activity中开启服务, 在服务中实现MP3的播放功能,然后通过一个Binder对象将该功能暴露给Activity。则可以在Activity中调用Service中的方法。

package xidian.dy.com.chujia;

import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

public class MainActivity extends AppCompatActivity {
    IMusic music;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Intent intent = new Intent(this, MusicService.class);
        startService(intent);
        bindService(intent, new MyConnection(), BIND_AUTO_CREATE);
    }

    public void play(View v){
        music.play();
    }

    public void pause(View v){
        music.pause();
    }
    public void continuePlay(View v){
        music.continuePlay();
    }

    class MyConnection implements ServiceConnection{

        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            music = (IMusic) service;
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {

        }
    }
}

Service



在Service中创建一个MediaPlayer来控制音乐播放

package xidian.dy.com.chujia;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.IBinder;
import android.support.annotation.Nullable;

import java.io.IOException;

/**
 * Created by dy on 2016/7/29.
 */
public class MusicService extends Service {
    MediaPlayer player;

    @Override
    public void onCreate() {
        player = new MediaPlayer();
        super.onCreate();
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return new MyBinder();
    }

    public void continuePlay(){
        player.start();
    }

    public void pause(){
        player.pause();
    }

    public void play(){
        player.reset();
        try {
            player.setDataSource("/sdcard/bc.mp3");
            player.prepare();
            player.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        player.stop();
        player.release();
    }

    class MyBinder extends Binder implements IMusic{
        @Override
        public void play() {
            MusicService.this.play();
        }

        @Override
        public void pause() {
            MusicService.this.pause();

        }

        @Override
        public void continuePlay() {
            MusicService.this.continuePlay();
        }
    }
}

IMusic



IMusic是一个接口类,主要是为了能在Activity中调用service中的方法。

package xidian.dy.com.chujia;

/**
 * Created by dy on 2016/7/29.
 */
public interface IMusic {
    void play();
    void pause();
    void continuePlay();
}

清单文件



在清单文件中需要对服务进行注册

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xidian.dy.com.chujia">

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity"
        android:label="主界面">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <service android:name=".MusicService"/>
</application>
</manifest>
时间: 2024-10-07 22:34:39

android之MP3播放器的相关文章

android实现MP3播放器

前一段时间考试,这个做好的项目一直没有时间总结.虽然在做项目的期间,把用到的各种技术都记录下来写成blog了,但还是应该有一个总体上的概括与总结. 这是自己做的第一个比较大型的项目,这个项目也就是mars大大视频第一季里最后介绍的那个项目.但自己坚持做下来,还是收货颇多.自己完完整整的做一个项目,与在视频了看mars大大啪啪啪的键盘打过去是完全不一样的感觉,过程中遇见了无数的困难,自己克服了无数的困难,只有自己做一遍,才真正能够有所体会. 好啦,下面来介绍一下这个简单的MP3播放器. 首先,是画

Android练习项目 Mp3播放器实现(一)

对于Android的学习,需要掌握的东西有点多,需要我们认真,小心,不断的进取.前天突然有个想法,觉得Mp3播放器是一个可以练习的项目,于是在网上搜了下,发现有人已经写了博客,看了他们的博客后,我觉得他们说的一点很对,Mp3播放器基本用到了Android里面的许多知识点,做完这个过后,可能对于Android整个架构有了一定了解,我于是也想尝试下,于是准备边做,编写博客,来记录自己开发的过程,这个也许叫作项目开发日志吧. 第一个我的想法是先做:本地音乐播放器. 于是我用了个粗浅的方法来加载mp3文

android开发之MediaPlayer+Service MP3播放器

http://blog.csdn.net/zzy916853616/article/details/6450753 [java] view plaincopy import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.List; import android.app.ListActivity; import android.apps.service.Player

Android练习项目 Mp3播放器实现(二)

在经过几天的折腾之后,迎来了Mp3播放器的第二篇博客,这篇文章主要将如何实现播放器的播放,下一首,上一首,顺序播放,循环播放,随机播放,单曲循环等操作. 其实操作的过程中主要是通过参数的传递来实现功能的. 在activity里面互相传参有很多中方法,但对于activity和service进行交互有些方法并不适合,通过对Broadcast和BroadcastReceiver等操作,来控制播放的实现. 我们先设定好广播,然后通过发送信号来进行传递数据. 主要在activity里面动态注册广播,通过传

【Android】利用安卓的数据接口、多媒体处理编写内存卡Mp3播放器app

通过调用安卓的MediaPlayer可以直接完成Mp3等主流音频的播放,同时利用ContentResolver与Cursor可以直接读取安卓内在数据库的信息,直接获取当前sdcard中所有音频的列表,无须像<[Android]内存卡图片读取器,图库app>(点击打开链接)一样利用原始的Java代码去遍历整个sdcard卡,直接调用安卓固有的类既便捷又快速.最后,读取出来的Mp3可以通过适配器直接加载到ListView列表,做出如下所示的内存卡Mp3播放器app效果.本app在自己的真实的16G

Android实现音乐播放器(一)

Graphical User Interface 本篇文章记录了我实现Android简单音乐播放器的过程,(一)中介绍了怎么构建音乐播放器的前端页面.首先大家看一下,界面最后是这样的(界面有点粗陋) 音乐文件列表是从SD卡中读取出来的. 首先我们先在Layout里面创建Music Player的GUI,diagram如下图所示: 根据diagram我们在activity_main.xml写出如下代码: <LinearLayout xmlns:android="http://schemas.

[Android应用]音乐播放器

Service是一个不可见的进程在后台执行. Android中的服务,它与Activity不同,它是不能与用户交互的,不能自己启动的,运行在后台的程序,如果我们退出应用时,Service进程并没有结束,它仍然在后台运行,例如我们打开一个音乐播放器来听音乐,在听音乐的同时也想做下其它的事情,比如上网聊Q.或者上网浏览新闻之类的事情.这样的话,我们就需要用到Service服务了.下面我们以一个简单的音乐播放器的实例来说明下Service的生命周期和Service的使用. 下面是音乐播放器Demo的程

安卓MP3播放器开发实例(1)之音乐列表界面

学习安卓开发有一年了,想想这一年的努力,确实也收获了不少.也找到了比較如意的工作. 今天准备分享一个以前在初学阶段练习的一个项目.通过这个项目我真正的找到了开发安卓软件的感觉,从此逐渐步入安卓开发的正规.这个项目是当时借鉴Mars老师的初学视频做的安州手机的MP3播放器.自己又进行了改进,特别在歌词的优化和加入进度条方面的.因为是8个月前做的,水平非常0基础,bug应该非常多,如今自己又懒得再一次改进,仅仅希望可以给初学的朋友们提供一些帮助.或者起到抛砖引玉的效果.那我就心惬意足了. 先整体介绍

Android——简单音乐播放器

使用MediaPlayer做的简单音乐播放器,更多内容请到百度经验查看   http://jingyan.baidu.com/article/60ccbceb63452364cab197f1.html <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:l