【Android入门到项目实战-- 7.4】—— 如何播放音频和视频

这篇具有很好参考价值的文章主要介绍了【Android入门到项目实战-- 7.4】—— 如何播放音频和视频。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、播放音频

 MediaPlayer的工作流程

具体代码实现

二、播放视频

具体代码实现


        学完本篇文章可以收获如何播放音频和视频。

一、播放音频

        播放音频需要使用MediaPlayer类实现,它对各种格式的音频文件提供了全面的控制方法,下面是MediaPlayer类较为常用的控制方法。

【Android入门到项目实战-- 7.4】—— 如何播放音频和视频

 MediaPlayer的工作流程

        首先创建一个MediaPlayer对象,然后调用setDataSource()方法来设置音频文件的路径,再调用prepare()方法使MediaPlayer进入到准备状态,然后调用start()方法就可以开始播放音频,调用pause()方法就会暂停播放,调用reset()方法就会停止播放。

具体代码实现

新建一个PlayAudioTest项目。

修改activity_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="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/play"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Play" />

    <Button
        android:id="@+id/pause"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Pause" />

    <Button
        android:id="@+id/stop"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Stop" />

</LinearLayout>

然后修改MainActivity代码,如下:

        首先创建一个MediaPlayer实例,然后在onCreate()方法里进行运行时权限处理,动态申请WRITE_EXTERNAL_STORAGE权限,这是因为我们将在SD卡中设置一个音频文件,为了播放这个文件必须访问SD卡的权限。

        用户同意授权后调用initMediaPlayer()方法为MediaPlayer对象进行初始化操作,在initMediaPlayer()方法中,先通过创建一个File对象来指定音频文件路径,需要提前在SD卡的根目录下放置一个名为music.mp3的音频文件。

        最后在onDestroy()方法中,分别调用stop()方法和release()方法,将与MediaPlayer相关的资源释放掉。

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private MediaPlayer mediaPlayer = new MediaPlayer();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button play = (Button) findViewById(R.id.play);
        Button pause = (Button) findViewById(R.id.pause);
        Button stop = (Button) findViewById(R.id.stop);
        play.setOnClickListener(this);
        pause.setOnClickListener(this);
        stop.setOnClickListener(this);
        if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{ Manifest.permission. WRITE_EXTERNAL_STORAGE }, 1);
        } else {
            initMediaPlayer(); // 初始化MediaPlayer
        }
    }

    private void initMediaPlayer() {
        try {
            File file = new File(Environment.getExternalStorageDirectory(), "music.mp3");
            mediaPlayer.setDataSource(file.getPath()); // 指定音频文件的路径
            mediaPlayer.prepare(); // 让MediaPlayer进入到准备状态
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case 1:
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    initMediaPlayer();
                } else {
                    Toast.makeText(this, "拒绝权限将无法使用程序", Toast.LENGTH_SHORT).show();
                    finish();
                }
                break;
            default:
        }
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.play:
                if (!mediaPlayer.isPlaying()) {
                    mediaPlayer.start(); // 开始播放
                }
                break;
            case R.id.pause:
                if (mediaPlayer.isPlaying()) {
                    mediaPlayer.pause(); // 暂停播放
                }
                break;
            case R.id.stop:
                if (mediaPlayer.isPlaying()) {
                    mediaPlayer.reset(); // 停止播放
                    initMediaPlayer();
                }
                break;
            default:
                break;
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (mediaPlayer != null) {
            mediaPlayer.stop();
            mediaPlayer.release();
        }
    }

}

最后在AndroidManifest.xml中声明权限,daima 如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

.............

二、播放视频

        播放视频使用VideoView类实现,主要有以下使用方法:

【Android入门到项目实战-- 7.4】—— 如何播放音频和视频

具体代码实现

新建PlayVideoTest项目。

修改activity_main.xml代码如下:

        三个按钮分别用于播放、暂停和重新播放。VideoView用于显示视频。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/play"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Play" />

        <Button
            android:id="@+id/pause"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Pause" />

        <Button
            android:id="@+id/replay"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Replay" />

    </LinearLayout>

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

</LinearLayout>

修改MainActivity代码,如下:

        和前面的播放音频代码类似,注意需要先在SD卡的根目录下放置一个名为movie.mp4的视频文件。

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private VideoView videoView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        videoView = (VideoView) findViewById(R.id.video_view);
        Button play = (Button) findViewById(R.id.play);
        Button pause = (Button) findViewById(R.id.pause);
        Button replay = (Button) findViewById(R.id.replay);
        play.setOnClickListener(this);
        pause.setOnClickListener(this);
        replay.setOnClickListener(this);
        if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{ Manifest.permission. WRITE_EXTERNAL_STORAGE }, 1);
        } else {
            initVideoPath(); // 初始化MediaPlayer
        }
    }

    private void initVideoPath() {
        File file = new File(Environment.getExternalStorageDirectory(), "movie.mp4");
        videoView.setVideoPath(file.getPath()); // 指定视频文件的路径
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case 1:
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    initVideoPath();
                } else {
                    Toast.makeText(this, "拒绝权限将无法使用程序", Toast.LENGTH_SHORT).show();
                    finish();
                }
                break;
            default:
        }
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.play:
                if (!videoView.isPlaying()) {
                    videoView.start(); // 开始播放
                }
                break;
            case R.id.pause:
                if (videoView.isPlaying()) {
                    videoView.pause(); // 暂停播放
                }
                break;
            case R.id.replay:
                if (videoView.isPlaying()) {
                    videoView.resume(); // 重新播放
                }
                break;
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (videoView != null) {
            videoView.suspend();
        }
    }

}

效果如下:

【Android入门到项目实战-- 7.4】—— 如何播放音频和视频

 文章来源地址https://www.toymoban.com/news/detail-430212.html

到了这里,关于【Android入门到项目实战-- 7.4】—— 如何播放音频和视频的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android音视频处理技术:音频混音与播放

    作者:禅与计算机程序设计艺术 在现代生活中,我们都会听到各种各样的声音。但是有的声音会相互抵消影响我们的正常生活,而有的声音则会增加我们的情绪快乐。人类为了能够真正体验到声音带来的快感,需要将不同类型的声音合并,再将它们再传达给大脑。音频混音与

    2024年02月08日
    浏览(42)
  • Vue中如何进行音频与视频播放?

    在Vue中,我们可以使用HTML5的 audio 和 video 标签来实现音频和视频的播放。Vue本身并没有提供专门的音频或视频播放组件,但是可以使用Vue的数据绑定和生命周期钩子来控制音频和视频的播放。 在Vue中,我们可以使用 audio 标签来嵌入音频文件。下面是一个简单的例子: 这个例

    2024年02月10日
    浏览(48)
  • HarmonyOS实战开发-录音机、如何实现音频录制和播放的功能

    本示例使用audio相关接口实现音频录制和播放的功能,使用mediaLibrary实现音频文件的管理。 相关概念: AudioRecorder:音频录制的主要工作是捕获音频信号,完成音频编码并保存到文件中,帮助开发者轻松实现音频录制功能。它允许调用者指定音频录制的采样率、声道数、编码

    2024年04月17日
    浏览(103)
  • 【Android入门到项目实战--4.8】—— 如何查看数据库?(adb)

    目录 什么是adb? 配置adb 使用adb 本文使用adb shell来查看数据库。         adb是Android SDK中自带的一个调试工具,可以直接对连接在电脑上的手机或模拟器进行调试操作,它存放在sdk的platform-tools目录里,如果想在命令行中使用,先把它的路径配置到环境变量里。       

    2024年02月15日
    浏览(35)
  • 【Android入门到项目实战-- 7.3】—— 如何调用手机摄像头和相册

    目录 一、调用摄像头拍照 二、打开相册选择照片         学完本篇文章可以收获如何调用手机的摄像头和打开手机相册选择图片功能。 先新建一个CameraAlbumTest项目。 修改activity_main.xml,代码如下:         按钮打开摄像头,ImageView将拍到的图片显示出来。 下面编写调用

    2024年02月10日
    浏览(63)
  • Android webrtc实战(一)录制本地视频并播放,附带详细的基础知识讲解

    目录 一、创建PeerConnectionFactory 初始化 构建对象 二、创建AudioDeviceModule AudioDeviceModule JavaAudioDeviceModule 构建对象 setAudioAttributes setAudioFormat setAudioSource 创建录制视频相关对象 创建VideoSource 创建VideoCapturer 创建VideoTrack 播放视频 切换前后置摄像头 别忘了申请权限 完整代码 本系列

    2024年02月16日
    浏览(51)
  • vue项目如何播放m3u8格式视频

    在node_modeols里面找到@easydarwin下的dist/compent/EasyPlayer-lib.min.js和EasyPlayer.wasm两个文件复制到pubilc目录下 引入 在components中 在模板中

    2024年02月15日
    浏览(51)
  • Flutter(十) 音频+视频播放

    在Flutter中,我们有各种插件可供使用,从而实现音频和视频的播放功能。 例如,可以使用“text_to_speech”插件来将文字转换为语音,使用内置的“video_player”插件轻松地实现视频播放,或者使用“audioplayers”插件实现音频播放。 对于仅需要简单播放器功能的情况,也可以使

    2024年02月03日
    浏览(40)
  • 【UE】场景内播放视频、音频

    实现目标:游戏运行时能够播放视频和音频,音频会随着玩家接近播放源的远近调整音量大小 一、播放视频 向UE工程中导入一个mp4文件 新建一个媒体播放器 勾选“视频输出媒体纹理” 此时可以发现自动创建了一个媒体纹理 我们先打开“媒体播放器”查看是否能正常播放视

    2024年02月11日
    浏览(41)
  • 音频视频自动播放解决方案

    1.1、使用背景 公司项目需要用到音频自动播放的功能,首先想到的就是autoplay属性。 想让内容自动播放的最简单方法是将autoplay属性添加到元素,并将autoplay属性设置为 true ,当 autoplay 的属性为 true 时,媒体元素将在发生以下情况后尽快自动开始播放: 页面允许使用自动播放

    2023年04月14日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包