前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[android] 多媒体播放api简介

[android] 多媒体播放api简介

作者头像
唯一Chat
发布2019-09-10 11:55:00
1.1K0
发布2019-09-10 11:55:00
举报
文章被收录于专栏:陶士涵的菜地陶士涵的菜地

界面布局,水平方向四个按钮平均分布,使用权重,定义android:layout_width=”0dp”,定义layout_weight=”1”这个属性全都一致就是平均分布

获取File对象,通过new File()来实现

判断文件是否存在,File对象的exists()方法,File对象的length()必须大于0

获取MediaPlayer对象,通过new出来

开始播放

调用MediaPlayer对象的setAudioStreamType()方法,设置音频流类型,参数:AudioManager.STREAM_MUSIC

调用MediaPlayer对象的setDataSource()方法,设置数据源,参数:String文件路径,也可以是http的

调用MediaPlayer对象的prepare()方法,准备

调用MediaPlayer对象的start()方法,播放

调用播放按钮的setEnable()方法,设置按钮为不可点击,参数:false

当播放完毕后应设置按钮可点击

调用MediaPlayer对象的setOnCompletionListener()方法,设置完成监听器,参数:OnCompletionListener接口,使用匿名内部类实现接口,重写方法onCompletion()方法,在这个方法里面调用播放按钮的setEnable(true)

停止播放

判断MediaPlayer对象不为空,并且MediaPlayer对象isPlaying()为真

调用MediaPlayer对象的stop()方法,停止播放

调用MediaPlayer对象的release()方法,是否

设置MediaPlayer对象为null

重新播放

判断MediaPlayer对象不为空,并且MediaPlayer对象isPlaying()为真

调用MediaPlayer对象seekTo()方法,设置播放进度,参数:0就可以

如果不存在,那么直接调用上面的播放函数

暂停播放

判断MediaPlayer对象不为空,并且MediaPlayer对象isPlaying()为真

调用MediaPlayer对象的pause()方法,暂停播放

调用暂停按钮的setText()方法,设置文字成:继续

在这个点击事件里判断文字是否为”继续”,如果是,就继续播放

调用MediaPlayer对象的start()方法

调用暂停安妮的setText()方法,设置文字成:暂停

MainActivity.java

代码语言:javascript
复制
package com.tsh.tshplayer;

import java.io.File;
import java.io.IOException;

import android.app.Activity;
import android.content.SharedPreferences.Editor;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {
    private EditText et_music;
    private Button bt_play, bt_pause, bt_stop, bt_replay;
    private MediaPlayer player;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_music = (EditText) findViewById(R.id.et_music);
        bt_play = (Button) findViewById(R.id.bt_play);
        bt_pause = (Button) findViewById(R.id.bt_pause);
        bt_stop = (Button) findViewById(R.id.bt_stop);
        bt_replay = (Button) findViewById(R.id.bt_replay);
        bt_play.setOnClickListener(this);
        bt_pause.setOnClickListener(this);
        bt_stop.setOnClickListener(this);
        bt_replay.setOnClickListener(this);
    }

    // 点击事件
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        // 播放
        case R.id.bt_play:
            play();
            break;
        // 暂停
        case R.id.bt_pause:
            pause();
            break;
        // 重播
        case R.id.bt_replay:
            replay();
            break;
        // 停止
        case R.id.bt_stop:
            stop();
            break;
        }
    }
    //停止播放
    private void stop() {
        if(player!=null&&player.isPlaying()){
            player.stop();
            bt_play.setEnabled(true);
        }
    }

    //重播音乐
    private void replay() {
        if(player!=null&&player.isPlaying()){
            player.seekTo(0);
        }
    }

    //暂停音乐
    private void pause() {
        if(player!=null&&player.isPlaying()){
            player.pause();
            bt_pause.setText("继续");
        }else if(bt_pause.getText().toString().trim().equals("继续")){
            player.start();
            bt_pause.setText("暂停");
        }
    }

    // 播放音乐
    private void play() {
        String music = et_music.getText().toString().trim();
        File file = new File(music);
        if (file.exists() && file.length() > 0) {
            try {
                player = new MediaPlayer();
                player.setAudioStreamType(AudioManager.STREAM_MUSIC);
                player.setDataSource(music);
                player.prepare();
                player.start();
                // 设置按钮
                bt_play.setEnabled(false);
                //音乐完成回调
                player.setOnCompletionListener(new OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mp) {
                        bt_play.setEnabled(true);
                    }
                });
            } catch (Exception e) {
                e.printStackTrace();
                Toast.makeText(this, "播放音乐失败", 0).show();
            }
        } else {
            Toast.makeText(this, "音乐文件不存在", 0).show();
        }
    }
}
代码语言:javascript
复制
<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:orientation="vertical"
    tools:context="${relativePackage}.${activityClass}" >

    <EditText
        android:id="@+id/et_music"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="音乐路径" />
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button 
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="播放"
            android:id="@+id/bt_play"/>
        <Button 
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="暂停"
            android:id="@+id/bt_pause"/>
        <Button 
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="重播"
            android:id="@+id/bt_replay"/>
        <Button 
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="停止"
            android:id="@+id/bt_stop"/>
    </LinearLayout>

</LinearLayout>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-04-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档