Mediaplayer报错

prepareAsync called in state 1
 
 
是因为在setDataSource之前调用了prepare。因为setDataSource放到了线程里,忘了start(事实证明也不能放到线程中,因为会和prepareAsync异步执行,导致还没setDataSource,就prepareAsync了)
 
Error (-38, 0) stop called in state 0
是因为 比如还没播放,用户就点了返回。没start() 没prepare(),就直接stop() 了
 
start called in state 64
是因为stop()之后直接start()播放了,没有重新prepare()。
 

容易ANR的:reset() release() setDataSource() prepare()(所以要用prepareAsync,但是要设置prepared监听,准备完才能播放start)

media server died错误,需要实现接口 onErrorListener(on Error())。在what == MediaPlayer.MEDIA_ERROR_SERVER_DIED 时,重新reset,release,置null,然后 new MediaPlayer(), 再从setDataSource开始流程

@Override
public boolean onError(MediaPlayer mp, int what, int extra) { if(what == MediaPlayer.MEDIA_ERROR_SERVER_DIED){
Log.d("VideoPlayer", "MEDIA_ERROR_SERVER_DIED");
try{
reInitVideoPlayer();
}catch(Exception e){ }finally{
playVideo(mLoadingImage);
} }
return false;
}

reset()         在重置MediaPlayer的时候使用,重置完,重新setDataResource prepare start,播放下一首。

In order to reuse a MediaPlayer object that is in the Error state and recover from the error, reset() can be called to restore the object to its Idle state.

也就是说,为了重用处于Error错误状态的MediaPlayer对象,可以通过调用reset()方法,使其恢复到idle空闲状态。

release()     不是每首歌之后都release,而是最后不用MediaPlayer了。比如在onPause或者 onDestroy里边调用。

Mediaplayer的更多相关文章

  1. Mediaplayer error (-19,0)

    Android MediaPlayer 发生 error (-19,0) 错误解决方法. 引起原因:由于多次实例化MediaPlayer.start() 进行播放操作引起的.由于没有及时释放内存资源导 ...

  2. 关于从Activity A跳转到Activity B ,其中Activity A中有一个VideoView,Activity B中有一个MediaPlayer。

    两个不同的视频的跳转, 前面我是在onStop()方法中销毁VideoView(因为MediaPlayer是全局共用的,而VideoView内包含MediaPlayer),但是每次进入Activity ...

  3. Android四大组件--MediaPlayer详解(转)

    一. MediaPlayer 状态机 介绍 Android MediaPlayer 状态即图例 : 1. Idle (闲置) 状态 和 End (结束) 状态 MediaPlayer 对象声明周期 : ...

  4. Android音视频之MediaPlayer音视频播放

    前言: 昨天总结了视频录制,今天来学习一下视频的播放,Android的视频播放主要采用MediaPlayer类. MediaPlayer介绍 MediaPlayer类可用于控制音频/视频文件或流的播放 ...

  5. Android音频开发之MediaRecorder/MediaPlayer

    前言: 上次我们介绍了实时采集音频数据以及播放,今天我们来认识一下直接录制文件的方式. 直接上代码:录制管理类 public class MediaRecorderManager { public s ...

  6. WPF语音播放MediaPlayer

    private MediaPlayer player; public MainWindow() { InitializeComponent(); player = new MediaPlayer(); ...

  7. android下面使用SurfaceView+ mediaPlayer播放视频

    final SurfaceView surfaceView = new SurfaceView(StartupActivity.this); StartupActivity.this.mediaPla ...

  8. SAP播放本地视频及音频(仅限于window MediaPlayer可播放文件)

    这个是从SCN上看到的,自己稍加修改,编制,做的还可以,可以播放视频,音频,唯一的不足就是不能控制播放视频的显示窗口大小,希望有人能帮忙解决,感激! 视频播放类:(新建类Z_CL_MEDIA,点击基于 ...

  9. [原创]WPF应用MediaPlayer播放声音断续、不全解决方案

    1.检查扬声器和驱动程序. 测试方法:首先,应用Windows Media Player播放器播放,看是否有问题,如果有问题,基本断定是驱动程序问题.其次,点击扬声器,选择测试,查看扬声器是否好用,如 ...

  10. Android MediaPlayer的生命周期

    MediaPlayer的状态转换图也表征了它的生命周期,如下: 这张状态转换图清晰的描述了MediaPlayer的各个状态,也列举了主要的方法的调用时序,每种方法只能在一些特定的状态下使用,如果使用时 ...

随机推荐

  1. 1、html(),text(),value()的区别;2、remove() 3、加载完执行函数

    1 .html()用为读取和修改元素的HTML标签.2  .text()用来读取或修改元素的纯文本内容.3  .val()用来读取或修改表单元素的value值. 这三个方法功能上的对比 .html() ...

  2. VS Code快捷键

    主命令框 F1 或 Ctrl+Shift+P: 打开命令面板.在打开的输入框内,可以输入任何命令,例如: 按一下 Backspace 会进入到 Ctrl+P 模式 在 Ctrl+P 下输入 >  ...

  3. 绑定自己Self

    Header="{Binding Path=Command.Text, RelativeSource={RelativeSource Self}}"/>

  4. DQN 处理 CartPole 问题——使用强化学习,本质上是训练MLP,预测每一个动作的得分

    代码: # -*- coding: utf-8 -*- import random import gym import numpy as np from collections import dequ ...

  5. Tomcat 多端口访问多应用设置

    目的 配置Tomcat,使用多端口访问不同应用 步骤 测试Tomcat版本为apache-tomcat-8.0.5,理论上支持7.0之上的版本 找到tomcat的主目录,打开conf文件夹,找到并打开 ...

  6. GEF入门实例_总结_05_显示一个空白编辑器

    一.前言 本文承接上一节:GEF入门实例_总结_04_Eclipse插件启动流程分析 在第三节( GEF入门实例_总结_03_显示菜单和工具栏  ),我们创建了菜单和工具栏. 这一节,我们来实现:点击 ...

  7. java多线程 生产者消费者案例-虚假唤醒

    package com.java.juc; public class TestProductAndConsumer { public static void main(String[] args) { ...

  8. [Luogu4177][CEOI2008]order

    luogu sol 这题有点像网络流24题里面的太空飞行计划啊. 最大收益=总收益-最小损失. 先令\(ans=\sum\)任务收益. 源点向每个任务连容量为收益的边. 每个机器向汇点连容量为购买费用 ...

  9. nodejs 设置跨域访问

    app.use(logger('dev')); app.use(express.json()); app.use(express.urlencoded({ extended: false })); a ...

  10. [转] AS3地图拼接与战争迷雾的实现

    在开发游戏的过程中,特别是地图编辑器中,需要利用最少的资源,实现最丰富的地形地貌.虽然现在众多的RPG开始使用整图,但是我们偶尔还是需要能够让玩家自己编辑地图,或者其他需要自动进行地图构建的功能.另外 ...