• [android] 多媒体播放api简介


    界面布局,水平方向四个按钮平均分布,使用权重,定义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

    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();
            }
        }
    }
    <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>

  • 相关阅读:
    Express入门
    nodejs入门
    css实现点点点效果
    定时器详解和应用、js加载阻塞、css加载阻塞
    栈内存和堆内存有什么区别?
    webpack入门
    Ubuntu常用命令集合
    HTTP缓存机制
    125. 验证回文字符串
    算法的时间复杂度和空间复杂度(js版)
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5348589.html
Copyright © 2020-2023  润新知