[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>

[android] 多媒体播放api简介详解手机开发

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/app/5447.html

(0)
上一篇 2021年7月16日 23:48
下一篇 2021年7月16日 23:48

相关推荐

发表回复

登录后才能评论