首页 > 其他分享 >安卓播放MP3

安卓播放MP3

时间:2023-12-31 17:33:05浏览次数:28  
标签:Log mediaPlayer 安卓 MediaPlayer TAG soundUrlDict MP3 new 播放

多线程

void playOnlineSound(String soundUrlDict) {
        try {
            Log.i(TAG,"playOnlineSound:"+soundUrlDict);
            MediaPlayer mediaPlayer = new MediaPlayer();
            if(!TextUtils.isEmpty(soundUrlDict) && !soundUrlDict.contains("/")){//如果不包含"/" 则调用assets内的音频   例xxx.mp3
                //获取assets目录下音频文件的AssetFileDescriptor
                AssetFileDescriptor afd = getAssets().openFd(soundUrlDict);
                //获取AssetFileDescriptor中的 音频文件 / 起始偏移量 / 文件长度:
                mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
            }else if(!TextUtils.isEmpty(soundUrlDict) && !soundUrlDict.contains("http")) {
				//如果包含"/" 则调用手机文件系统内的音频 例:/storage/emulated/0/KuwoMusic/music/雪.mp3
                    File file = new File(soundUrlDict);
                    FileInputStream fis = new FileInputStream(file);
                    mediaPlayer.setDataSource(fis.getFD());
            }else {//调用网络音频 例:http://****/xxx.mp3
                mediaPlayer.setDataSource(soundUrlDict);
            }
            //异步准备播放
            mediaPlayer.prepareAsync();
            //开始播放
            mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mediaPlayer) {
                    mediaPlayer.start();
                }
            });
            //释放MediaPlayer对象
            mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mp) {
                    if (mp != null) {
                        mp.release();
                    }
                    Log.d(TAG, "onCompletion: play sound.");
                }
            });
            mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
                @Override
                public boolean one rror(MediaPlayer mediaPlayer, int i, int i1) {
                    Log.d(TAG, "Play online sound one rror: " + i + ", " + i1);
                    return false;
                }
            });
        } catch (IOException e1) {
            Log.e(TAG, "url: ", e1);
        }
    }

单线程

    void playOnlineSound() {
        try {
                 AssetFileDescriptor assetFileDescriptor = assetManager.openFd("###");//assest下的MP3路径,
                 FileDescriptor fileDescriptor = assetFileDescriptor.getFileDescriptor();//获取FileDescriptor
                 MediaPlayer mediaPlayer = new MediaPlayer();
                 mediaPlayer.setDataSource(fileDescriptor,assetFileDescriptor.getStartOffset(),assetFileDescriptor.getLength());
                 mediaPlayer.prepare();
                 mediaPlayer.start();
        } catch (IOException e1) {
            Log.e(TAG, "url: ", e1);
        }
    }

 

标签:Log,mediaPlayer,安卓,MediaPlayer,TAG,soundUrlDict,MP3,new,播放
From: https://www.cnblogs.com/treeofb/p/17937787

相关文章

  • Unity引擎2D游戏开发,音源设置和音效播放
    导入资源包在UnityAssetsStore当中,下载导入下面两个资源包到Unity中在Unity中,下载导入到项目当中新建一个文件夹,命名为Audio,将导入的两个文件夹放进来挂载音效打开MainCamera,能够发现该摄像机带有一个名为“AudioListener”的组件该组件用于监听音源发出的声音当摄......
  • 安卓中ViewPager组件的使用场景与优劣分析
    一、文章摘要在Android应用开发中,ViewPager是一个非常重要的UI组件,它允许用户通过左右滑动的方式切换不同的页面视图。同时,ViewPager在Android开发中是一种常用的视图容器,主要用于在应用程序中实现滑动视图的效果。它通常用于分页展示内容,如图片轮播、标签切换等。本文......
  • flutter ios swift avplayer 播放器自动播放下一集
    使用监听监听结束事件importFoundationimportAVKitimportMediaPlayerimportFlutterclassFlutterAVPlayerView:NSObject,FlutterPlatformView{privatevar_flutterAVPlayerViewController:AVPlayerViewControllerprivatevarurlArray:[URL]=[]......
  • 车载导航定制_智能车载终端安卓主板硬件解决方案
    智能车载一直是司机出行的得力助手,而集成了诸多强大功能的车载导航更是为驾驶者提供了更全面的驾驶辅助体验。从车辆行车记录、倒车影像,到AR实景导航、语音助手、ADAS辅助,再到云电子狗、蓝牙通话、影音娱乐等功能,这款车载导航系统为驾驶者带来了无与伦比的出行新体验。基于......
  • 安卓日志系统(logcat / liblog / logd) 跨进程通信的消耗:日志信息通过socket 发送到 lo
    深入理解安卓日志系统(logcat/liblog/logd)-掘金https://juejin.cn/post/6905368512001556487深入理解安卓日志系统(logcat/liblog/logd)TonyBuilder2020-12-125,456阅读7分钟 一、总体介绍  安卓日志系统是开发者比较熟悉的模块,每个开发者在开发中都会是用......
  • 安卓在人工智能时代的前景展望
    文章摘要随着科技的飞速发展,人工智能(AI)已经成为全球科技领域的焦点。在这个背景下,作为全球最大的移动操作系统之一,安卓在人工智能时代的前景尤为引人关注。本文将深入探讨安卓在人工智能时代的发展趋势、机遇和挑战。正文安卓在人工智能时代的机会应用商店的丰富资源......
  • js 利用Audio播放文件列表
    1、主要利用Audio的监听事件addEventListener,监听到声音播放结束ended,播放下一个文件audio.addEventListener('ended',function(){console.log('音频播放结束');});2、示例:varvoiceList=['1.wav','2.wav','3.wav']varvoiceInde......
  • Mac—Scrcpy在Macbook上实现同屏/多屏协同操作安卓手机界面(支持 Win、Mac、Linux)
    1、效果展示:就在那么一瞬间,就成功弹出了手机界面,真的是激动又兴奋,真的很有成就感耶~而且,不单单是投屏,是协同投屏/同屏,电脑端也可以操控手机啦~ 2、背景介绍投屏功能已经满足不了现有需求了,投屏,只是把手机界面投屏到电脑上,但是,不能在电脑端操作手机界面。而且,隔壁华为的手机+......
  • linux下播放器快捷键设置记录
    我用的播放器是smplayer,快捷键设置如下:播放列表上一个:Z播放列表下一个:N静音:M音量增:.音量减:,播放时间减一分:X播放时间增一分:B播放速度减半速:V 播放速度真常:A播放列表:/播放全屏:F播放/暂停:空格......
  • MT8766安卓核心板/开发板_MTK联发科4G安卓手机主板方案定制开发
    MT8766采用台积电12nmFinFET制程工艺,4*A53架构,Android9.0操作系统,搭载2.0GHz的ArmNEON引擎。提供了支持最新OpenOS及其要求苛刻的应用程序所需的处理能力,专为具有全球蜂窝连接的高移动性和功能强大的平板设备而设计。该处理器还配备600MHz主频的超强IMGGE8300GPU,可流......