当前位置: 首页 > 知识库问答 >
问题:

Android media recorder停止

段干飞翮
2023-03-14

在my camera应用程序中,media recorder停止是在主UI线程上调用的。android站点上的开发者参考代码以及android camera参考代码似乎都在做同样的事情(在主UI线程上调用停止)。

但在某些情况下(SD卡速度慢,并行IO正在进行,SD卡高度碎片化且接近满),似乎停止需要很长时间才能返回(30-200秒)。我想发生这种情况是因为作为media recorder stop(保存录制的视频文件)的一部分发生的I/O操作需要时间来完成。

这可能会导致ANR,因为主UI线程似乎被占用了超过5秒的时间。

我的第一反应是在一个单独的线程中移动媒体记录器停止,这样UI线程是空闲的。然而,这样做可能会导致一些危险的情况。如果用户在保存过程中退出了应用程序,那么没有确定的方法来终止这个线程(它被卡在stop())上)。如果媒体记录器没有停止(和释放),用户就不能使用可能需要媒体记录器实例的任何其他应用程序(例如gtalk)。另外,android建议在onPause中发布media recorder,这意味着我应该在onPause中加入这个线程。如果用户按下Back,这将导致ANR。

对于如何最好地处理这种情况,有什么建议吗?我想象,一定还有其他人遇到过类似的情景。

共有1个答案

江浩慨
2023-03-14

我怀疑您是在设备USB电缆仍连接到ADT时测量延迟的,否则stop()肯定会在1秒内返回。

 类似资料:
  • 1.若要暂停训练,请按下该按钮。显示暂停。若要继续训练,请点击绿色箭头图标。 2.若要停止训练,在记录训练期间或处于暂停模式时长按该按钮三秒钟,直至计数器清零。或者您可以点击并按住显示屏上的红色停止按钮。 如果在暂停后停止训练,则暂停后经过的时间不包括在总训练时间内。

  • 若要暂停训练 长按正面按钮 或 在训练视图中向右滑动,找出并轻触暂停图标。 通过向左滑动您可以在暂停模式中看到训练总结。 恢复暂停的训练 轻触绿色箭头图标。 停止训练 在训练期间或在暂停模式中,长按正面按钮直至绿色计时器一直倒数。 或 在暂停模式中,轻触并按住红色停止图标可结束记录。

  • 1.若要暂停训练,请按“返回”按钮。显示“记录已暂停”。若要继续训练,请按“开始”。 2.若要停止训练,在训练记录或处于暂停模式时长按“返回”按钮三秒钟,直到显示“记录已结束”。 如果在暂停后停止训练,则暂停后经过的时间不包括在总训练时间内。

  • 按下“返回”,暂停您的训练课。 要继续训练,请按“确定”。要停止训练课,长按 BACK(返回)。停止训练后,会立即从手表上获得训练总结。 如果在暂停后停止训练课,则暂停后经过的时间不包括在总训练时间内。

  • 按下“返回”,暂停您的训练课。 要继续训练,请按“确定”。要停止训练课,长按 BACK(返回)。停止训练后,会立即从手表上获得训练总结。 如果在暂停后停止训练课,则暂停后经过的时间不包括在总训练时间内。

  • 我在IE上的css悬停有问题。 简化;我基本上有一个容器div,它将在悬停时显示一个小的div,里面有一些标记中选择一个,:hover由于某种原因将不再工作,div将消失。 在chrome/firefox等中尝试此示例以查看所需的结果&然后在IE11中再试一次以查看问题所在。 null null

  • 问题内容: 我想停止处理程序中的此间隔重复运行。那有可能吗? 问题答案: 您需要在点击处理程序范围内将的返回值设置为变量,然后像这样使用:

  • 我有一个Android应用程序,它使用谷歌admob网络显示间隙广告。admob的优点是,它的活动是独立的。我可以在我的MainActivity中加载广告,只要admob准备好了广告,它就会显示出来,即使我不再在MainActivity中。我已经使用了isLoaded()方法来显示广告,这占了90%的时间。 但其他10%的情况并非如此。有些活动应该保持无广告状态,因为广告会降低游戏质量。如果手机速