浅入浅出Android(005):使用MediaPlayer制作简单的音乐播放器,播放网络音乐
博客专区 > 樂天 的博客 > 博客详情
浅入浅出Android(005):使用MediaPlayer制作简单的音乐播放器,播放网络音乐
樂天 发表于3年前
浅入浅出Android(005):使用MediaPlayer制作简单的音乐播放器,播放网络音乐
  • 发表于 3年前
  • 阅读 1058
  • 收藏 30
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

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()。
共有 人打赏支持
粉丝 133
博文 667
码字总数 147012
作品 3
×
樂天
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: