Androd 播放音频Mp3

播放assets文件中的音频文件

kotlin实现:

    private var mediaPlayer: MediaPlayer? = null
    /**
     * 打开assets下的音乐mp3文件
     */
    fun openAssetMusics(
        mp3Name: String,
        onPreparedListener: MediaPlayer.OnPreparedListener,
        onCompletionListener: MediaPlayer.OnCompletionListener
    ) {
        try {
            mediaPlayer?.release()
            mediaPlayer = null
            val fd: AssetFileDescriptor =
                this.requireContext().assets.openFd(mp3Name)
            mediaPlayer = MediaPlayer()
            mediaPlayer?.setDataSource(fd.fileDescriptor, fd.startOffset, fd.length)
            mediaPlayer?.setOnPreparedListener(onPreparedListener)//音频准备完毕
            mediaPlayer?.setOnCompletionListener(onCompletionListener)//音频播放完毕
            mediaPlayer?.prepare()
            mediaPlayer?.start()
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

使用示例:

        openAssetMusics("jiayou.mp3",
            {
            //TODO 开始播放
            }) {
            //TODO 播放完
        }

java实现:

    private MediaPlayer mediaPlayer;
    /**
     * 打开assets下的音乐mp3文件
     */
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void openAssetMusics(String mp3Name) {
        try {
            if (TextUtils.isEmpty(mp3Name) || !mp3Name.contains(".mp3")) {
                return;
            }
            if (mediaPlayer != null) {
                mediaPlayer.release();
                mediaPlayer = null;
            }
            //播放 assets/a2.mp3 音乐文件
            AssetFileDescriptor fd =
                    this.getAssets().openFd(mp3Name);
            mediaPlayer = new MediaPlayer();
            mediaPlayer.setDataSource(fd.getFileDescriptor(), fd.getStartOffset(), fd.getLength());
//            mediaPlayer.setOnPreparedListener(onPreparedListener)//音频准备完毕
//            mediaPlayer.setOnCompletionListener(onCompletionListener)//音频播放完毕
            mediaPlayer.prepare();
            mediaPlayer.start();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 播放音频可以使用 MediaPlayer 或 SoundPool。 MediaPlayer 是一个功能强大的音频播放器,它可以播放各种格式的音频文件,包括 MP3、AAC、WAV 等。以下是一个简单的使用 MediaPlayer 播放本地音频文件的示例: ```java MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.your_audio_file); mediaPlayer.start(); ``` 上面的代码创建了一个 MediaPlayer 对象,并使用 `create()` 方法加载本地音频文件。然后调用 `start()` 方法开始播放音频。 如果您需要播放网络上的音频文件,可以使用 `setDataSource()` 方法设置音频文件的 URL: ```java MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setDataSource("your_audio_url"); mediaPlayer.prepare(); mediaPlayer.start(); ``` 上面的代码创建了一个 MediaPlayer 对象,并使用 `setDataSource()` 方法设置音频文件的 URL。然后调用 `prepare()` 方法准备音频文件,最后调用 `start()` 方法开始播放音频。 SoundPool 是一个轻量级的音频播放器,它可以快速地播放小型音频文件,例如游戏中的短音效。以下是一个简单的使用 SoundPool 播放音频文件的示例: ```java SoundPool soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); int soundId = soundPool.load(this, R.raw.your_audio_file, 1); soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() { @Override public void onLoadComplete(SoundPool soundPool, int sampleId, int status) { soundPool.play(soundId, 1, 1, 0, 0, 1); } }); ``` 上面的代码创建了一个 SoundPool 对象,使用 `load()` 方法加载本地音频文件,并在音频文件加载完成后使用 `play()` 方法播放音频。 注意,SoundPool 对象的 `load()` 方法返回的是一个音频文件的 ID,而不是一个 MediaPlayer 对象。如果您需要控制音频播放状态,例如暂停、继续、停止等,则需要使用 MediaPlayer 对象。 此外,如果您需要在后台播放音频文件,例如在服务中播放背景音乐,可以使用 Android 的 AudioTrack 类来实现。这需要更多的代码和技术知识,如果您有需要,可以参考 Android 官方文档和示例代码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值