首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android MediaPlayer音频播放器详解

    prepareAsync() 异步准备,不阻塞UI线程 然后看一下调用的initMediaPlayerListener 方法 播放器监听事件及交互 /** * 播放器监听事件...https://blog.csdn.net/yechaoa 着重介绍两个: 1、setOnPreparedListener 注意,在获取资源时长的时候,需要在播放器准备完成之后获取,否则会有异常:...Attempt to call getDuration in wrong state: mPlayer=0x7244676280, mCurrentState=4 error (-38, 0) 并会回调...如果程序上没有定位到指定播放位置这种操作的话,不要在onProgressChanged中执行播放操作,因为频繁的进度改变,频繁的调用播放,会有杂音。 所以建议用户手动拖动来触发播放。...progress) //如果是下一首,可以调用reset()重置,然后set新的数据源 } } 如果是下一首,可以调用reset()重置,然后set新的数据源

    2K30

    MediaPlayer(总结)--从对象生命周期理解MediaPlayer状态

    1.创建播放器 new mediaplayer实例 设置 mediaplayer --> jni --> MediaPlayer 回调listener 2.reset() 销毁MediaPlayerService...所以NuPlayer -> MediaPlayer的回调链路就建立了 在Idle以外的其他状态调用 setDataSource() 都会抛出IllegalStateException,可以理解一个MediaPlayer...Stoped MediaPlayer在Started, Paused, Prepared or PlaybackCompleted这个几个状态下调用stop()会进到Stop状态。...,流媒体网络通讯超时等会导致播放操作发生错误,会进入Error状态 不合理的MediaPlayer接口调用也会进入Error状态 这是底层的播放器即NuPlayer发生了错误,需要重新调用reset...SDK的文档里有一段 在构造函数创建后,立即调用getCurrentPosition(), getDuration(), getVideoHeight(), getVideoWidth(), setAudioAttributes

    1.3K20

    Android点将台:绝命暗杀官

    零、前言 1.本文的知识点 1).Service的简单`介绍及使用` 2).Service的`绑定服务`实现`音乐播放器(条)` 3).使用`aidl`实现其他app访问该Service,播放音乐...UI点击调用对应的方法即可 ---->[MusicPlayer]-------------- private lateinit var mPlayer: MediaPlayer private var...但是现在只能在一个app里玩,如何让其他app也可以连接服务,这就要说到aidl了 还有很重要的一点:Service存活力强,记得上次在Activity中new MediaPlayer 来播放音乐...UI点击调用对应的方法即可 ---->[MusicPlayer]-------------- private lateinit var mPlayer: MediaPlayer private var...但是现在只能在一个app里玩,如何让其他app也可以连接服务,这就要说到aidl了 还有很重要的一点:Service存活力强,记得上次在Activity中new MediaPlayer 来播放音乐

    44010

    安卓开发个人小作品(3) – 多功能音乐播放器

    在开始前,先放一张最后的效果图吧,我个人喜欢的风格,简约,美观。...,可以在我的项目源代码中找到,图片长下面这个样子 当然你也可以采用自己的图片,来实现炫酷的效果哦!...,核心方法就是MediaPLayer的setOnCompeleteListener,代码如下 // 监听mediaplayer播放完毕时调用 mplayer.setOnCompletionListener...,用于设置喜爱音乐,效果如下 然后,用sharepreference记录下喜爱音乐的序号值,当要播放喜爱音乐的时候,直接取到该序号值,然后调用musicplay方法播放序号值对应的音乐即可。...attr/popupwindow_bg" 其他属性的使用方法同理,然后我们如何来让用户设置主题呢,可以写一个dialog,也可popupwindow,不过我这里为了学习一下样式为dialog的activity

    2.2K30

    Android MediaPalyer

    MediaPlayer 生命周期 这张图很好的向我们展示MediaPlayer各个生命周期,以及处于那种状态如何变换到另一种状态,必须正确的使用每一个状态,以及状态之间的转换,否则就会报IllegalStateException...这两种方法的一个重要差别就是:在这个状态下调用了getDuration()等方法(相当于调用时机不正确),通过reset()方法进入idle状态的话则会触发OnErrorListener.onError...Prepared 状态:初始化完成之后还需要通过调用prepare()或prepareAsync()方法,这两个方法一个是同步的一个是异步的,只有进入Prepared状态,才表明MediaPlayer到目前为止都没有错误...Stop 状态:Started或者Paused状态下均可调用stop()停止MediaPlayer,而处于Stop状态的MediaPlayer要想重新播放,需要通过prepareAsync()和prepare...setDataSource 当然上面首先得在res文件夹下新建raw文件夹,并放置一个test文件 设置播放的文件 MediaPlayer要播放的文件主要包括3个来源: 用户在应用中事先自带的resource

    1.3K11

    神奇的 ViewDragHelper,让你轻松定制拥有拖拽能力的 ViewGroup

    用 scrollBy() 方法就可以解决,它等同于滑动或者滚动的概念,这个不在于本文讨论范围之内,如果对于这部分感兴趣的同学可以阅读我这篇博文《不再迷惑,也许之前你从未真正懂得 Scroller 及滑动机制...在 Android 中 MotionEvent 封装了触摸时的各种状态。所以我们主要处理的状态有以下: 1. MotionEvent.ACTION_DOWN: 在这个状态时,标记手指按下屏幕。...可能有些同学没能理解明白,我分解一下: 1. settleCapturedViewAt() 方法调用的目的的将 child 定位到 (left,top) 位置,但它不是瞬间到达,有一个动画的过程。...我在之前的文章中这么解释过: Scroller 无法自驱动,一定需要外部条件多次调用它的 computeScrollOffset() 方法,正因为这些源源不断的调动,驱动了 Scroller 本身。...当然,我演示的时候是用的继承的 FrameLayout,而实际上要做的工作还很多,大家可以尝试用 RecyclerView 来实现它。

    3.9K33

    详解cn.sample.mnn.detect Alibc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR),

    内存越界访问:应用程序尝试访问超出分配给它的内存范围的地址。内存泄漏:应用程序在执行过程中持续分配内存而不释放,最终导致内存耗尽并引发错误。...解决方法要解决 cn.sample.mnn.detect A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0...如果上述方法仍然无法解决问题,可以尝试使用其他调试工具或者向相关技术支持团队寻求帮助。他们可能能够提供更具体的解决方案或者诊断和修复你的应用程序中的问题。...栈溢出:递归调用层级过深,导致栈空间不足。 要解决 mnn.detect A/libc 错误,以下是一些可能的解决方法:检查指针和引用:确保在使用指针或引用之前对其进行正确的初始化,避免空指针引用。...线程同步:在多线程环境中,使用适当的同步机制,避免多个线程同时访问或修改同一块内存区域。优化递归算法:如果出现栈溢出错误,可以使用循环或其他优化方法替代递归调用。

    1.4K10

    2016级移动应用开发在线测试14-MediaPlayer

    1. MediaStore类是android系统提供的一个多媒体数据库,android中多媒体信息都可以从这里提取。...┋ 在程序中,并不需要关心如何去扫描手机系统中的文件,只要通过ContentProvider提供的查询接口,我们便可以得到各种手机上的多媒体信息。...在接口中定义了流媒体播放完毕后回调的方法。 ()MediaPlayer.OnErrorListener:错误接口。...在该接口中定义回调方法,在异步操作中出现错误时会回调该方法,其它情况下出现错误时直接抛出异常。 ()MediaPlayer.OnInfoListener:信息接口。...这两种方法的一个重要差别就是:如果在这个状态下调用了getDuration()等方法(相当于调用时机不正确),通过reset()方法进入idle状态的话会触发OnErrorListener.onError

    1.2K30

    实验三 音乐播放器

    实验三: 音乐播放器 实验目标和实验内容: 1、掌握服务的基本概念,能编写服务过程并进行调用; 2、掌握广播的基本概念,能实现广播通信。...返回歌曲id • PrepareAndPlay() 定向操作 打开并播放音乐文件 注意的点 • 记得在配置文件中注册服务 • 注意findViewById在Fragment的使用方法 • 在Fragment...中给ImageButton绑定事件监听器要重写onActivityCreated方法 第一步:在tab02中添加按钮组件以及文本框 第二步,在frdFragment中添加对按钮的监听并发送广播...接收 sendBroadcast(sendIntent); } } 接收frdFragment的控制信息并对于不同状态下的播放器执行对于不同控制信息的事件...在Broadcast中尽量不要处理太多逻辑问题,建议复杂的逻辑交给Activity或者Service去处理。

    2.2K20

    surfaceView+MediaPlayer的问题

    1.黑屏原因:可能是由于surfaceView还没有创建完成就播放,肯定不行,所以必须在surfaceViewCreated里面才能播放 2.黑屏的第二个原因:activity被用户强制性关闭,或者是界面...在没有准备好之前,可以设置他在不停的加载把 5.播放失败,或者直接闪屏的原因之一:就是从一个视频activity或者view到另外一个视频view的播放,如果时间比较紧凑,可能会立即失败,或者闪退,这里面的原因就是...,可能会出现这个元,如果是原生态的可能就不会,解决方法就是 第二个视频延迟播放,或者跳转的时候稍微延迟,或者在播放视频的时候弹出正在加载,让那个进度条延迟一秒的旋转时间,再播放,应该可以解决这个问题【http...,这里也会造成卡顿的原因 9.关于声音问题,要在设置数据源之后执行比较好: 把 mPlayer.setAudioStreamType(AudioManager.STREAM_SYSTEM); 换成 mPlayer.setAudioStreamType...canvas) 调用该方法,之前所绘制的图形还处于缓冲之中,下一次的lockCanvas()方法锁定的区域可能会“遮挡”它 SurfaceHolder.CallBack ?

    2.4K20

    Arch Linux的正确使用方法

    在遇到问题时先去 Arch Wiki 搜索一下,基本可以解决,这比搜索引擎搜索出来的 Blog 或别人写的一点笔记要靠谱的多 Arch 采用滚动更新的方式,因此你不用再考虑以后升级系统需要重装的问题 Arch...;最后便是 Arch Wiki 对于绝大多数软件包要如何配置,遇到问题怎么去解决,都有详细的说明,这对于新手来说肯定是一个福音。...最后祝各位能在接下来的学习之路,奋勇向前。 以上是正文部分,下面是我在Arch使用过程中遇到过的一些问题,这些问题有的已经解决,有的仍是悬案。...[y/N] 解决方式是重新挂载/tmp mount -t tmpfs -o size=2200M tmpfs /opt/ 如果打开WPS应用时报“系统缺失字体...”的错误,可以将相应的字体下载下来放到...虚拟机(VirtualBox) 在VirtualBox中启动操作系统时可能会遇到下面的错误: Kernel driver not installed (rc=-1908) 下面的命令可以解决:

    6.5K70

    【转】Qt之JSON保存与读取

    简述 许多游戏提供保存功能,使得玩家在游戏中的进度可以被保存,并在以后再玩的时候进行加载。保存游戏的过程通常涉及将每个游戏对象的成员变量序列化为文件。...如果不希望保存的文件可读,或者不需要保持文件大小,还能够以二进制格式序列化文档,这就厉害了O(∩_∩)O。 下面,将演示如何以 JSON 和二进制格式来保存和加载一个简单的游戏。...注意:在尝试读取值之前,应该使用 QJsonObject::contains() 检测 key 是否有效,这里假设是有效的,所以没有检测。...然后,对于数组中的每个 QJsonValue 元素,调用 toObject() 来获取 Character 的 JSON 对象。...可以在与可执行文件相同的目录中检查文件的内容,但二进制保存文件将包含一些无用字符(这是正常的)。 为了显示可以再次加载保存的文件,为每种格式调用 loadGame(),失败时返回 1。

    2.1K20
    领券