【android开发-22】android中音频和视频用法详解

2023-12-15 10:27:16

1,播放音频

MediaPlayer是Android中用于播放音频和视频的类。它提供了许多方法来控制播放,例如播放、暂停、停止、释放等。下面是一个简单的MediaPlayer用法详解和参考代码例子。

首先,确保在布局文件中添加了一个MediaPlayer控件,例如:

<mediaplayer  
    android:id="@+id/media_player"  
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content" />

然后,在Java代码中初始化MediaPlayer对象,并设置音频或视频源:

MediaPlayer mediaPlayer = new MediaPlayer();  
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);  
mediaPlayer.setDataSource(audioFilePath); // audioFilePath是音频文件路径  
mediaPlayer.prepare();  
mediaPlayer.start(); // 开始播放

如果要播放视频,可以使用类似的方法,只需将音频源更改为视频源即可。

在播放过程中,可以使用MediaPlayer对象的方法来控制播放,例如:

pause():暂停播放
start():开始播放
stop():停止播放
reset():重置播放器,清除所有状态和数据源
release():释放资源,结束播放器
seekTo():跳转到指定位置(以毫秒为单位)
getCurrentPosition():获取当前播放位置(以毫秒为单位)
getDuration():获取音频或视频总时长(以毫秒为单位)
isPlaying():判断是否正在播放音频或视频
getAudioSessionId():获取音频会话ID,用于与AudioTrack、AudioRecord等音频会话进行区分和管理。

例如,要在播放过程中暂停音频,可以使用以下代码:

if (mediaPlayer.isPlaying()) {  
    mediaPlayer.pause();  
}

要恢复播放,可以使用以下代码:

if (!mediaPlayer.isPlaying()) {  
    mediaPlayer.start();  
}

完整的使用代码:

import android.media.MediaPlayer;  
import android.os.Bundle;  
import androidx.appcompat.app.AppCompatActivity;  
import android.view.View;  
import android.widget.Button;  
  
public class MediaPlayerActivity extends AppCompatActivity {  
  
    private MediaPlayer mediaPlayer;  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
  
        // 获取MediaPlayer控件和按钮对象  
        Button playButton = findViewById(R.id.play_button);  
        Button stopButton = findViewById(R.id.stop_button);  
  
        // 设置按钮点击事件监听器  
        playButton.setOnClickListener(new View.OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                if (mediaPlayer == null) {  
                    mediaPlayer = MediaPlayer.create(MediaPlayerActivity.this, R.raw.music_file); // 设置音频文件路径,可以从资源文件中读取或从文件中直接读取  
                    mediaPlayer.start(); // 开始播放音频  
                } else {  
                    mediaPlayer.start(); // 继续播放音频  
                }  
            }  
        });  
  
        stopButton.setOnClickListener(new View.OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                if (mediaPlayer != null) { // 如果MediaPlayer对象不为空,则停止播放音频并释放资源  
                    mediaPlayer.stop(); // 停止播放音频  
                    mediaPlayer.release(); // 释放资源,以便再次使用MediaPlayer时重新设置数据源和回调接口等参数  
                    mediaPlayer = null; // 将MediaPlayer对象置为空,以便再次使用时重新创建对象并设置数据源和回调接口等参数  
                } else { // 如果MediaPlayer对象为空,则不执行任何操作,保持当前状态不变。如果需要再次播放音频,可以再次调用playButton的点击事件来创建并启动MediaPlayer对象。

2,播放视频

以下是一个简单的Android VideoView示例,它显示了如何使用VideoView播放一个视频文件。

首先,在布局文件(例如:activity_main.xml)中添加VideoView控件:

<VideoView  
    android:id="@+id/videoView"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent" />

然后在对应的Activity中初始化VideoView并设置视频路径:

import android.os.Bundle;  
import androidx.appcompat.app.AppCompatActivity;  
  
public class MainActivity extends AppCompatActivity {  
  
    private VideoView videoView;  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
  
        videoView = findViewById(R.id.videoView);  
        videoView.setVideoURI(Uri.parse("path/to/your/video.mp4")); // 设置视频路径,可以从资源文件中读取或从文件中直接读取  
        videoView.start(); // 开始播放视频  
    }  
}

这个例子中的"path/to/your/video.mp4"需要替换为你的视频文件的实际路径。如果你的视频文件在资源文件夹的raw目录下,你可以像这样设置:videoView.setVideoURI(Uri.parse(“android.resource://your.package.name/” + R.raw.your_video))。记住,你需要将"your_video"替换为你的视频文件名(不包含扩展名)。

注意,这是一个非常基础的例子。在实际使用中,你可能需要处理更多的情况,例如错误处理、视频播放的控制(暂停、继续、停止等),以及适应不同的屏幕尺寸和分辨率。

VideoView和MediaPlayer的用法非常相似,主要有以下常用方法:
在这里插入图片描述

文章来源:https://blog.csdn.net/jiangchaobing_2017/article/details/134880998
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。