文档章节

浅入浅出Android(005):使用MediaPlayer制作简单的音乐播放器,播放网络音乐

樂天
 樂天
发布于 2014/05/11 16:37
字数 643
阅读 1088
收藏 30

MediaPlayer类支持MP3、3GP等音乐格式。使用该类可以制作一个简单的音乐播放器。下面的示例展示了如何播放网络中的一首歌曲,为了方面,这个歌曲服务器可以在自己的机器上搭建。笔者使用的是android4。

1、创建项目

不作赘述。

2、修改AndroidManifest.xml,添加INTERNET权限


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.HelloWorld"
          android:versionCode="1"
          android:versionName="1.0">
    <uses-sdk android:minSdkVersion="14"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
        <activity android:name="MyActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
</manifest>

3、修改布局文件layout\main.xml:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        >
    <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="这是一个音乐播放器"
            />
    <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="暂停"
            android:id="@+id/button_pause"/>
    <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="播放"
            android:id="@+id/button_play"/>
    <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="重新播放"
            android:id="@+id/button_replay"/>

</LinearLayout>
这里使用了LinearLayout布局,三个按钮的作用如其属性android:text所言。效果图如下:


4、主要Java代码:

package com.example.HelloWorld;

import android.app.Activity;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.io.IOException;

public class MyActivity extends Activity {

    private MediaPlayer mp;
    private String url = "http://example.com/songs/test/love-story.mp3";

    /**
     * Called when the activity is first created.
     */

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final Button playButton = (Button) findViewById(R.id.button_play);
        final Button replayButton = (Button) findViewById(R.id.button_replay);
        final Button pauseButton = (Button) findViewById(R.id.button_pause);

        mp = MediaPlayer.create(this, Uri.parse(this.url));

        playButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp.start();
            }
        });
        pauseButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mp.isPlaying()) {
                    mp.pause();
                } else {
                    Toast.makeText(MyActivity.this, "您还没播放呢", Toast.LENGTH_SHORT).show();
                }
            }
        });
        replayButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp.reset();
                try {
                    mp.setDataSource(MyActivity.this, Uri.parse(url));
                    mp.prepare();
                    mp.start();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        });

    }

    @Override
    protected void onDestroy() {
        if (mp.isPlaying()) {
            mp.stop();
        }
        mp.release();
        super.onDestroy();
    }
}





其中,
mp = MediaPlayer.create(this, Uri.parse(this.url));



创建 MediaPlayer对象并装载了网络上的一个音频,当然也可以指定为手机上存储的一个音频。

点击“播放”按钮时会调用 start()方法开始播放音乐。

点击“暂停“按钮时,先检查有没有在播放,若播放了在使用pause()暂停播放,否则提示”您还没播放呢“。

而点击”重新播放“按钮时先依次使用reset()和setDataSource()方法重置要播放的音乐。在start()之前需要prepare()。即在使用setDataSource()方法装载音频后必须使用prepare()方法,这才算是真正的装载。

另外在重写的onDestroy()方法中,检查了音乐是否在播放,播放的话就暂停音乐,并release()。

© 著作权归作者所有

共有 人打赏支持
樂天
粉丝 136
博文 673
码字总数 147433
作品 3
深圳
程序员
小白学phoneGap《构建跨平台APP:phoneGap移动应用实战》连载三(通过实例来体验生命周

4.1.2 通过实例来亲身体验Activity的生命周期 上一小节介绍了Activity生命周期中的各个过程,本小节将以一个简单的实例来使读者亲身体验到Activity生命周期中的各个事件。 在Eclipse中新建一...

woiwoi
2014/10/29
0
2
利用MEDIAPLAYER制作ANDROID播放器

ndroid可以播放手机内存中的音乐和存储卡上的音乐,播放声音主要是利用android.media.MediaPlayer类播放各种声音。下面是利用这个类完成的一个简陋的播放器: 点击开始能够播放声音,停止可以...

迷途d书童
2012/04/26
1K
0
写android简易播放音乐遇到的问题

在android模拟器中开发简易的音乐播放器是遇到了两个问题: 1, 启动模拟器时发生Installation error: INSTALLFAILEDINSUFFICIENT_STORAGE 2, 即使先prepare()后start(),依然不能正常播放音乐...

找寻
2011/07/03
0
1
Android MediaPlayer

MediaPlayer 这个类主要是播放视频类. AudioManager 这个类管理在一个设备上的音频资源和音频输出流. Manifest声明 1.网络声明 <uses-permission android:name="android.permission.INTERNET...

程序袁_绪龙
2015/01/29
0
4
Android MVC实现一个音乐播放器

MVCPlayer 我尝试在android上使用MVC模式来开发一个音乐播放器。GitHub地址:https://github.com/skyhacker2/MVCPlayer 什么是MVC 来自维基百科 控制器 Controller - 负责转发请求,对请求进...

Nov_Eleven
2015/05/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下单接口调优实战,性能提高10倍

概述 最近公司的下单接口有些慢,老板担心无法支撑双11,想让我优化一把,但是前提是不允许大改,因为下单接口太复杂了,如果改动太大,怕有风险。另外开发成本和测试成本也非常大。对于这种...

Sam哥哥聊技术
16分钟前
1
0
rabbitMQ的安装和配置

在Windows下进行rabbitMQ的安装 第一步:软件下载 在安装rabbitMQ之前,需要先安装Erlang。 Erlang官网:http://www.erlang.org/downloads rabbitMQ官网:http://www.rabbitmq.com/download....

狼王黄师傅
36分钟前
2
0
SAP产品的Field Extensibility

SAP开发人员的工作职责,除了实现软件的功能性需求外,还会花费相当的精力实现一些非功能性需求,来满足所谓的SAP Product Standard(产品标准)。这些产品标准,包含在SAP项目实施中大显身手...

JerryWang_SAP
41分钟前
1
0
Vue-Element-Upload

记录一下文件上传封装Js 代码示例 封装:uploadFile.vue <template> <el-upload v-model="attachment" ref="upload" class="upload-demo" :action="uploadUrl" ......

华山猛男
48分钟前
2
0
AWVS破解及使用手册

1.安装 因为是windows软件,比较简单,此部分略: 破解插件下载: 链接: https://pan.baidu.com/s/1x9LK9F3KvqDgTvXDjoSZnQ 提取码: 7k4u 2.创建扫描目标 2-1.Targets->Add Target 2-2.对话框...

硅谷课堂
51分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部