android使用MediaPlayer播放raw目录下的mp3

这篇具有很好参考价值的文章主要介绍了android使用MediaPlayer播放raw目录下的mp3。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用android自带的 MediaPlayer 播放 mp3 时,需要注意的几个点:

1. 使用:

——>初始化:

MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.example_song);

——>播放:

mediaPlayer.start();

——>释放:

mediaPlayer.stop();
mediaPlayer.release();

2. 增加播放监听:

——> 错误监听:

mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        // 当MediaPlayer发生错误时调用此方法
        // 在此处可以进行适当的错误处理,例如弹出错误提示框等
        return false;
    }
});

tip:当MediaPlayer发生错误时,onError方法将被调用。在此处可以进行适当的错误处理,例如弹出错误提示框等。返回值为false表示该错误不会被MediaPlayer处理,而是由调用者自己处理。如果返回true,则表示MediaPlayer将处理该错误并继续执行

——>准备就绪:

mediaPlayer.setOnPreparedListener(new MediaPlayer.onPreparedListener(){
        @Override
        public void onPrepared(MediaPlayer mp) { LogUtils.e("MP3Player————onPrepared"); 
             mp.start();
        }
});

——>播放完成:

mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        // 当MediaPlayer播放完毕时调用此方法
        // 在此处可以执行一些相关操作,如更新UI界面等
    }
});

3. 关于释放

在setOnCompletionListener监听器中,不需要手动调用mediaPlayer.stop()、mediaPlayer.release()方法。

setOnCompletionListener方法会在MediaPlayer播放完成后自动调用,并且在该方法中调用stop()和release()方法可能会导致不可预知的问题。

当MediaPlayer播放完毕时,它会自动停止,并处于已停止状态。如果您仍然需要使用MediaPlayer,可以选择再次调用MediaPlayer.create()方法创建一个新的MediaPlayer对象来播放其他音频文件。如果不再需要使用MediaPlayer,可以在合适的时候调用release()方法来释放它所占用的资源。

4. 关于初始化

MediaPlayer.create()和new MediaPlayer()的区别在于它们创建MediaPlayer对象的方式不同。

MediaPlayer.create()是一个静态方法,它可以直接从资源文件或文件路径创建MediaPlayer对象,并自动完成MediaPlayer的一些初始化工作,例如设置数据源、缓冲区大小等。具体来说,MediaPlayer.create()方法接受两个参数:上下文和资源ID或文件路径,它会自动调用MediaPlayer类的构造方法并设置数据源等参数,最终返回一个已经准备好的MediaPlayer对象。

而使用new MediaPlayer()则需要手动设置MediaPlayer的数据源、缓冲区大小等参数,这需要花费额外的代码来完成。例如,您需要调用setDataSource()方法设置数据源,调用prepare()方法来准备MediaPlayer等等。需要注意的是,如果您选择使用new MediaPlayer()方法创建MediaPlayer对象,则需要在适当的时候调用release()方法来释放它所占用的资源。

因此,如果您需要快速、简单地创建一个MediaPlayer对象并播放音频文件,可以使用MediaPlayer.create()方法。但如果您需要更多的控制和自定义,例如处理播放过程中的缓冲问题、设置特定的播放模式等,则需要使用new MediaPlayer()方法来创建MediaPlayer对象并手动配置参数。

5. 重复初始化:

在调用MediaPlayer.create()方法时,系统会为每个调用创建一个新的MediaPlayer对象,并在调用完成后自动释放与该对象相关的资源。因此,多次调用MediaPlayer.create()方法并不会导致性能问题。

但是,需要注意的是,每个MediaPlayer对象都会占用一定的内存资源,因此如果您在应用程序中频繁地创建和释放MediaPlayer对象,则可能会对系统的内存资源造成一定的影响,从而导致应用程序的性能问题。如果您需要频繁地播放不同的音频文件,可以考虑使用单个MediaPlayer对象,并在需要播放不同文件时调用setDataSource()方法来设置不同的数据源。

另外,需要注意的是,如果多个MediaPlayer对象同时存在并播放音频文件,则可能会导致多个音频文件同时播放,从而造成混乱和不良的用户体验。因此,在应用程序中,建议使用单个MediaPlayer对象来播放音频文件,并且在需要切换音频文件时,先调用reset()方法来清除之前的状态,然后再调用setDataSource()方法设置新的数据源,并重新调用prepare()方法来准备MediaPlayer对象。

6. 关于播放不完整:

网上说播放不完整是由于在播放过程中,MediaPlayer对象可能被回收了,需要将对象申明为成员变量,经测试,可以相当程度的降低播放不完整率,但并不能完全避免。

如果有知道,还望留言告知文章来源地址https://www.toymoban.com/news/detail-547933.html

到了这里,关于android使用MediaPlayer播放raw目录下的mp3的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • android原生MediaPlayer播放本地的m3u8

    遇到某个需求,需要播放百度网盘的视频。但是通过百度网盘的sdk获取到的视频url是由若干个ts片段组成的m3u8播放源。然后把这个m3u8的播放源放在本地,也就是说m3u8是一个本地播放源。那么如何去播放呢?这边引进一个http轻量级的服务器NanoHttpd。 目前市场上流行的播放器,

    2024年02月06日
    浏览(45)
  • 使用 adb 命令修改 Android/data 目录下的文件(给碧蓝档案国服吃布丁)

    本文记录如何使用 adb 命令修改 Android/data 目录下的文件,然后给国服的碧蓝档案打上布丁🍮~ 今天下午刷着刷着微博就看到国服 BA 又又又发了和谐公告 ... 心情复杂。jpg 于是乎终于想起来得吃布丁🍮了,至于此次更新后布丁有没有用还未知,但还是先搞上 食用方法之前就出

    2024年03月24日
    浏览(47)
  • MediaPlayer音频与视频的播放介绍

    作者:向阳逐梦 Android多媒体中的——MediaPlayer,我们可以通过这个API来播放音频和视频该类是Androd多媒体框架中的一个重要组件,通过该类,我们可以以最小的步骤来获取,解码和播放音视频。 它支持三种不同的媒体来源: 本地资源 内部的URI,比如你可以通过ContentResolve

    2024年02月11日
    浏览(41)
  • UE5 MediaPlayer不能正确播放视频问题

    UE5 MediaPlayer不能正确播放视频问题 时间节点:2023/02/01 情况说明:播放有声音,没有是视频。 方案1: 打开插件Electra Player即可: 方案2: 修改项目设置的RHI为Default,修改之后重启项目,默认RHI为DX12: 抑或修改下项目配置文件DefaultEngine.ini: 方案参考网络,具体原因没细深

    2024年02月13日
    浏览(42)
  • 【Android实现 资源路径/手机内存/网络文件 下的视频播放】

    业务场景:安卓实现播放视频的功能,支持播放不同类型资源下的视频,下面在使用中封装了一个方法,可以根据需要修改调用 这段代码是一个视频播放器的方法。根据传入的视频路径和视频类型,它会选择不同的播放逻辑。 如果视频类型是\\\"network\\\",则会处理网络文件的播

    2024年02月16日
    浏览(43)
  • Qt Qml 多媒体播放视频(MediaPlayer)遇到的问题及解决方法

    Qml 多媒体播放视频开发过程中遇到的问题,记录一下。 创建的Qt Quick Ui Prototype工程,视频播放正常。但是相同的代码在Qt Quick Application(compat)中却不能正常显示。 Qt Quick Ui Prototype目录结构 Qt Quick Application(compat) 目录结构 Qt Quick Ui Prototype 工程 这里没有什么需要注意的,按照

    2024年02月05日
    浏览(51)
  • Android 系统源码目录frameworks/base/packages和packages/apps下的APP区别

    概要 在 Android Open Source Project (AOSP) 源代码中,frameworks/base/packages 和 packages/apps 目录都包含 Android 系统中的应用程序,但它们在性质和用途上有一些区别: 1,frameworks/base/packages frameworks/base 目录包含 Android 系统的核心框架代码。 frameworks/base/packages子目录包含系统级应用程序或

    2024年02月09日
    浏览(38)
  • 关于安卓13中Android/data目录下的文件夹只能查看无法进行删改的问题

    因为升级了安卓13,然后有个app需要恢复数据,打算和以前一样直接删除Android/data下对应目录再添加,结果不行,以下是结合网上以及自己手机情况来做的一种解决方案。 准备: 待恢复app(包名com.test.ai) 其他app(包名com.other.ai,这个app当做临时变量就行,随便任意app,且知

    2024年02月09日
    浏览(72)
  • Android MediaPlayer 深入分析与实践

            MediaPlayer 是 Android 提供的一个强大的音视频播放类,它允许开发者在应用程序中嵌入音频和视频的播放功能。本文从 MediaPlayer 的概述、工作原理、使用方法以及优势与局限性等方面进行全面的分析,并结合实际代码示例来指导读者如何高效地使用该技术。     

    2024年04月09日
    浏览(67)
  • Android之MediaPlayer加载视频慢

    问题:Android系统播放器MediaPlayer播放网络视频,加载慢...缓冲慢... 结论:视频元数据位置不对 简单解释就是,大部分的视频格式是MP4,MP4格式的视频是由一个个Box组成的。这个Box可以理解为数据块。Box里面可以嵌套Box: ftyp,moov,mdat就是Box的名字。这里需要重点关注的是

    2023年04月13日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包