- 浏览: 89133 次
文章分类
- 全部博客 (15)
- 强制刷新 (0)
- 动态设定 (0)
- android (10)
- source collect (0)
- tools (2)
- wireshark (2)
- java (1)
- RandomAccessFile (0)
- home key (0)
- surfaceview 居中 (0)
- 视频工具 (0)
- animation (0)
- net (0)
- 抓包 (0)
- MediaRecorder (1)
- listview (1)
- gridview (0)
- api demo (1)
- php (0)
- linux (0)
- movie (0)
- english (0)
- game (0)
- cygwin (0)
- object C (0)
- mina (1)
- tcp (0)
- udp (0)
- error (2)
- c++ (0)
- time (1)
- utc (1)
- gmt (1)
- ea (0)
- eap (0)
- uml (0)
- other (0)
- web (1)
- jnlp (1)
- sakai (1)
- demo (1)
- tomcat (1)
- sn (0)
- 缓存 (1)
- 网络连接 (1)
- clone (1)
- fragment (1)
最新评论
-
绿茵好莱坞:
好文 ,值得学习
如何让Android模拟器能访问到本地Server或Web应用(即:运行模拟器的PC) -
diyangxia:
看起来比较靠谱
Media start error原因分析及解决方法 -
whhpc19891120:
大哥,还是用了你的方法问题还是存在
Media start error原因分析及解决方法 -
dndxcsy:
好帖!总算在这里找到HH:mm:ss和hh:mm:ss会返回2 ...
Android系统时间制式的获取(24小时制式/12小时制式)及UTC与本地时间的转换
之前在项目的时候,遇到到Media Recorder在快速启动停止等一系列操作的后,再次启动时,会failed的问题,类似的Log如下:
ERROR/MediaRecorder(9008): start failed: -19
WARN/dalvikvm(9008): threadid=15: thread exiting with uncaught exception (group=0x40ad01f8)
ERROR/AndroidRuntime(9008): FATAL EXCEPTION: Thread-337
ERROR/AndroidRuntime(9008): java.lang.RuntimeException: start failed.
ERROR/AndroidRuntime(9008): at android.media.MediaRecorder.start(Native Method)
ERROR/AndroidRuntime(9008): at com.huawei.ca.eivs.camera.AndroidVideo.initMediaRecoder(AndroidVideo.java:429)
ERROR/AndroidRuntime(9008): at com.huawei.ca.eivs.camera.AndroidVideo.sendLiveToMdu(AndroidVideo.java:511)
ERROR/AndroidRuntime(9008): at com.huawei.ca.eivs.camera.AndroidVideo$ListenInviteThread.run(AndroidVideo.java:241)
WARN/ActivityManager(210): Force finishing activity com.huawei.ca.eivs.ui/com.huawei.ca.eivs.camera.AndroidVideo
ERROR/ActivityManager(210): exception bw.write()java.io.IOException: Transport endpoint is not connected
这个时候,退出自己的软件,打开系统相机,会提示“相机故障,无法连接到相机”,只能重启机器才能正常使用系相机。
根据反复测试抓log发现,造成MediaRecorder start失败的原因是:在程序中反复启动停止MediaRecord时,存在在无效的状态上stop MediaRecorder的情况,而且没有捕获此操作引发的异常,没有对MediaRecorder进行reset、release造成的。
具体的MediaRecorder状态迁移,请参看SDK。
解决办法:
解决这个问题的关键是保证MediaRecorder能在合适的状态执行合适的动作。
下面是我的解决方法,希望能给遇到这个问题的人一个灵感:
private void releaseMediaRecorder()
{
if (mMediaRecorder != null)
{
// 内部标识是否正在录像的变量,如果不需要可以去掉
if (isRecord)
{
try
{
mMediaRecorder.setOnErrorListener(null);
mMediaRecorder.setOnInfoListener(null);
// 停止
mMediaRecorder.stop();
}
catch (RuntimeException e)
{
e.printStackTrace();
// 如果发生异常,很可能是在不合适的状态执行了stop操作
// 所以等待一会儿
try
{
Thread.sleep(100);
}
catch (InterruptedException e1)
{
Log.e(TAG, "sleep for second stop error!!");
}
}
isRecord = false;
}
// 再次尝试停止MediaRecorder
try
{
mMediaRecorder.stop();
}
catch (Exception e)
{
Log.e(TAG, "stop fail2", e);
}
// 等待,让停止彻底执行完毕
try
{
Thread.sleep(100);
}
catch (InterruptedException e1)
{
Log.e("TAG", "sleep for reset error Error", e1);
}
// 然后再进行reset、release
mMediaRecorder.reset();
mMediaRecorder.release();
mMediaRecorder = null;
}
}
这是我经历痛苦后的总结,希望能对遇到类似问题的同伴有点帮助~
发表评论
-
Android类参考---Fragment(一)
2015-01-10 08:56 16751 继承关系 java.lang.Object |__ ... -
Activity的四种加载模式 -- singleTask 和 singleInstance模式
2014-03-07 10:54 4616Activity的启动模式可以通过AndroidMani ... -
如何让Android模拟器能访问到本地Server或Web应用(即:运行模拟器的PC)
2013-08-29 14:44 7665I、让人烦躁的问题 近日,在移植Mina框架到Androi ... -
Eclipse中运行程序,提示ADB server didn't ACK failed to start daemon
2013-07-26 15:32 1555今天在eclipse中运行程序时,提示: ADB ser ... -
【转载】 Android ListView性能优化之视图缓存
2013-07-19 16:31 1022转载自: 博客园:http://www.cnblo ... -
android 错误解决方法 ---积累中
2013-07-18 10:19 54201 在android编程中出现cannot be reso ... -
android htttp 下载
2013-03-20 15:04 0ttt -
Android系统时间制式的获取(24小时制式/12小时制式)及UTC与本地时间的转换
2013-03-01 10:59 13043I、获取系统时间制式(12小时制/24小时制) 1 ... -
android error
2013-01-10 18:17 0android 模拟器 Installation error: ... -
android mina使用
2012-12-25 17:39 0http://wmiao89620.iteye.com/blo ... -
android + js
2012-12-04 17:17 0Android中 Js 扩展及交互 . http://blog ... -
Android 资料
2012-12-03 10:08 0http://blog.csdn.net/tangcheng_ ... -
Android API Demo框架分析
2012-11-23 16:36 1906闲着没事儿,看了下Android API Demo的代码,发 ... -
GridView或ListView 中android:drawSelectorOnTop的用法(转)
2012-09-28 16:04 0android:drawSelectorOnTop=&quo ... -
android 抓包方法
2012-09-13 19:35 0看到网上有朋友写了一个手机抓包工具,是一个apk,直接安装 ... -
anroid画面平滑上移
2012-08-30 21:29 0http://blog.csdn.net/pgalxx/art ... -
PreferenceActivity
2012-08-28 22:46 0SystemSetAcitivity.java pub ... -
android退出对话框
2012-08-24 17:39 0private void showExitDialog() ... -
surfaceview 居中
2012-08-20 17:54 0<LinearLayout xmlns:android= ... -
android源代码
2012-08-16 22:48 04.0 http://download.csdn.net/d ...
相关推荐
3. **创建HandleEventHandler和事件处理**: `MEDIA_PREPARED`, `MEDIA_PLAYBACK_COMPLETE`, `MEDIA_BUFFERING_UPDATE`, `MEDIA_SEEK_COMPLETE`, `MEDIA_SET_VIDEO_SIZE`, `MEDIA_ERROR`, `MEDIA_INFO`, `MEDIA_TIMED...
每个状态都有特定的操作对应,比如只能在PREPARED状态下调用`start()`方法。当收到“start called in state 1”错误时,这意味着在不适当的状态下尝试启动播放。 以下是处理该异常的一些步骤: 1. **正确初始化**...
标题中的"param_ctor.rar_The Media"提示我们关注的是与媒体处理相关的Java Android代码,特别是MediaRecorder类。MediaRecorder是Android系统中用于音频、视频录制的核心组件,它允许开发者将设备传感器捕获的数据...
try { // create a player to play the media specified in the ...mediaPlayer.start() // start playing the media clip } catch (Exception iOException) { System.err.println("Error reading from the source") }
然后,播放音乐需要调用`mediaPlayer.start()`方法。但在开始播放之前,我们需要确保准备就绪,这可以通过监听`OnPreparedListener`来实现: ```java mediaPlayer.setOnPreparedListener(new MediaPlayer....
### Webtrends移动终端应用用户行为监控分析方案详解 #### 一、概述 Webtrends推出的移动终端应用用户行为监控分析方案,旨在帮助企业深入了解移动应用内的用户行为,从而提升用户体验和应用价值。该方案适用于多...
`prepareAsync()`方法用于异步准备媒体资源,而`start()`方法则启动播放。这两个方法是多媒体播放流程中的关键步骤。 ##### prepareAsync() 此方法会触发一系列内部操作,包括解码器初始化、缓冲区分配等准备工作。...
- **创建Observable**: 使用`MediaProjection`的`start()`方法创建一个数据流,然后通过`rxJava`的`Observable.create()`方法包装成可观察对象。 - **订阅和处理数据**: 创建一个`Observer`来处理屏幕数据,比如将每...
使用 `storcli64 -PDList -aALL` 命令可以查看磁盘的健康状态,包括 Slot Number、Media Error Count、Other Error Count、Predictive Failure Count 和 Firmware state 等信息。 1.5.2 查看磁盘详细信息 使用 `...
You can start downloading pictures (or other media content) quickly, simply after inputting the address of the first page with gallery. Smart page analyzer will follow every link on the page or script...
- 32-bit BurnInTest PRO 5.3.1020 would not start on Windows 2000. This has been corrected. Release 5.3 build 1020 WIN32 release 29 May 2008 - BurnInTest could have crashed on accessing bad video ...
1. **LIVE555库介绍**:LIVE555 Streaming Media库提供了实现RTSP(Real-Time Streaming Protocol)、RTP(Real-time Transport Protocol)和RTCP(Real-time Transport Control Protocol)所需的基本组件。...
使用`start()`方法来开始播放音频: ```java mediaPlayer.start(); ``` 3. **暂停播放** 要暂停音频,调用`pause()`方法: ```java mediaPlayer.pause(); ``` 4. **停止播放** 当不再需要播放时,释放...
例如,`start`方法开始播放或录制,`stop`方法停止当前操作。 7. **事件处理**: JMF支持事件驱动编程,通过监听`ControllerListener`、`ErrorListener`等事件,可以实时响应播放和录制过程中的状态变化,如开始、...
console.log('Error accessing media devices', err); }); ``` 这段代码会打开摄像头,并将视频流显示在一个`<video>`元素上。这是实现二维码扫描的基础。 接下来,我们需要一个库或API来解析摄像头捕捉到的图像...
var i={NETWORK_ERROR:"networkError",MEDIA_ERROR:"mediaError",MUX_ERROR:"muxError",OTHER_ERROR:"otherError"},a={MANIFEST_LOAD_ERROR:"manifestLoadError",MANIFEST_LOAD_TIMEOUT:"manifestLoadTimeOut",...
2. 开始录音:调用`startRecording()`方法启动录音。 3. 数据读取:通过`read()`方法读取缓冲区中的音频数据。 4. 结束录音:调用`stop()`方法停止录音,并释放`AudioRecord`资源。 实时获取音量大小通常需要计算...
- `bionic`, `build`, `development`, `frameworks`, `Makefile`, `packages`, `start.sh`, `tools`, `bootable`, `dalvik`, `external`, `hardware`, `out`, `prebuilts`, `system`, `vendor` 2. **执行编译** -...
1. **建立连接**:使用LIVE555的`MediaSession`和`LiveServerMediaSession`类创建与流媒体服务器的连接。通过RTSP协议发送"DESCRIBE"、"SETUP"和"PLAY"命令,获取媒体会话的描述信息并设置传输通道。 2. **数据接收...
- **开始播放**:调用`mediaPlayer.start()`方法启动播放。 - **暂停**:使用`mediaPlayer.pause()`暂停当前播放。 - **停止并重置**:`mediaPlayer.stop()`停止播放,`mediaPlayer.reset()`将MediaPlayer恢复到初始...