- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想捕捉 5 秒的音频并使用 android.media.MediaRecorder
保存它。一种方法是调用 start()
并安排 stop()
与 android.os.Handler
一起调用,但我不确定是否会非常精确。
MediaRecorder
有一个 setMaxDuration
看起来很有希望的方法。一旦计时器启动,它将向 android.media.MediaRecorder.OnInfoListener
发送一条消息,但文档说:
Stopping happens asynchronously, there is no guarantee that the recorder will have stopped by the time the listener is notified.
我相信我需要在完成后调用 MediaRecorder
上的 release()
,所以我需要知道什么时候这样做是安全的。
所以:
stop()
?MediaRecorder
对象,是否真的有必要调用 release()
?release()
作为 OnInfoListener
的一部分调用是不安全的?最佳答案
正如您所提到的,setMaxDuration
方法看起来很有前途,尽管停止捕获是异步发生的事实对实际性能留下了一些猜测。可能值得测试此方法并查看所需捕获时间与实际捕获时间的差异。作为旁注,使用此方法时不必调用 stop()
。此外,由于 setMaxDuration
本质上只是对 stop()
的预定调用,我认为可以安全地假设它也将处理刷新/完成。
如果您发现此方法太不准确而无法使用,那么您可以使用一个简单的 CountDownTimer
来安排您的记录间隔。这个类很好,因为滴答是同步的,这意味着您的计时间隔将精确到几毫秒以内;比尝试安排 Handler
准确得多。您可以尝试以下操作:
new CountDownTimer(5000, 1000) {
public void onTick(long millisUntilFinished) {
}
public void onFinish() {
mediaRecorder.stop();
mediaRecorder.release();
}
}
.start();
上面的例子安排了一个 5 秒的 CountDownTimer
和 1 秒的刻度。 5 秒过去后,将分别调用 stop()
和 release()
。如果你想让它更准确,你可以在 onTick()
方法中添加一个简单的计数器,然后将你所有的 MediaRecorder
调用放在那里。例如,如果您要将 CountDownTimer
设置为 7 秒,仍然有 1 秒滴答,那么在第一次滴答时您将调用 start()
,假设您已经准备录音;然后,在五次滴答之后,您将调用 stop()
和 release()
。这将是相当准确的,因为根据 CountDownTimer
API:
the calls to
onTick(long)
are synchronized to this object
关于调用release()
,即使您不打算重用该对象,也建议调用此方法。根据 API 文档,未能释放 MediaRecorder
实例可能会导致资源/电池耗尽:
In addition to unnecessary resources (such as memory and instances of codecs) being held, failure to call this method immediately if a MediaRecorder object is no longer needed may also lead to continuous battery consumption for mobile devices, and recording failure for other applications if no multiple instances of the same codec are supported on a device.
关于android - 如何安全地使用 MediaRecorder 来捕获特定持续时间的媒体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29852946/
似乎最近我看到越来越多的人开始在他们的样式表中使用 media="all" 而不是 media="screen"。 我的问题是什么时候应该使用 media="all" 而不是 media="scree
我正在尝试使用 https://www.instagram.com/developer/endpoints/media/ ,但对于我使用的每个媒体 ID,我总是得到相同的结果: { "meta
哟,我正在为服务器制作一个 MOTD 供最终用户阅读。但是,对于使用较小显示器的用户来说,它看起来非常压缩,例如,当分辨率为 1280x1040 时,它会被拉低。我不熟悉 CSS 中的 @media
我在我的 CSS 文件中使用了 @media screen 而不是 (-webkit-min-device-pixel-ratio:0)。我的问题是关于指定的值,即在这种情况下为“0”。值的变化将如何
我正在播放 Activity 中的视频,我需要显示/隐藏顶部栏 View 以及媒体 Controller 。所以当媒体 Controller 在屏幕上时,我的顶部 View 应该是可见的,当媒体 Co
我在我的 WordPress 主题中创建了一个小部件来显示图像。到目前为止,小部件可以工作,我可以输入值并在前端显示这些值。 当我选择一个小部件并将其放入小部件区域时,媒体上传按钮不起作用。在 Wor
我正在使用MWFeedParser从此处读取Youtube原子供稿:here xml代码: 我如何获取媒体的网址:缩略图? 我试图更改MWFeedParser.m 由此: else if ([cu
当使用 Python 向 Instagram API 发出 GET 请求时,传递所需的变量,如下所示 photos = api.media_search(lat=latitude, lng=longi
我正在使用与媒体播放器关联的媒体 Controller 来播放声音。问题是媒体 Controller 一旦失去焦点就会隐藏起来。我有一个按钮,按下时会播放声音,媒体 Controller 会出现在屏幕
我有一个媒体播放器并与它关联了一个媒体 Controller 。控件工作正常。 我遇到了两个问题: 当媒体 Controller 获得焦点时,即用户触摸它然后触摸屏幕的另一部分时,媒体 Control
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我在对话框中显示一个 VideoView 并向其附加一个媒体控件。 但是当我尝试点击媒体控件(播放、搜索栏等)时,对话框会消失。 媒体控制按钮不会被点击,而是将点击注册为 Dialog 的 Outsi
我目前正在使用 HTML 编写可打印文档,它将显示从数据库中提取的数据。我的想法是我将使用 HTML/CSS 使文档看起来不错,但它将专门用于打印。 文档的布局使用表格来控制数据库中数据的显示方式。
我需要在网络应用程序中打印我的报告。 我有在我的代码中。但它不应用任何样式。另一方面,如果我使用 在文档中编写 print.css 代码一切正常。 怎么了? 最佳答案 也许你在主样式之前插入打印样式
CSS html{ overflow-y:scroll; } js function showW(){ var a=($(window).width()); $('#
我编写了一个 Chrome 扩展程序,其中一个功能是您可以在您所在的页面中调出一个帮助面板,其中包含其使用指南。这个帮助面板是通过JS插入到页面中的,它的CSS都是通过$('#selector_for
我需要为 WORM 媒体开发归档软件。 这种类型的媒体允许通常的访问操作:读取、写入,但文件一旦写入,就无法修改或删除。 因为这样的媒体可能很昂贵,我想知道如何在开发阶段为测试创建一个假的 WORM
下面的这个 Activity 工作正常,但 mediaController 仅在我单击屏幕时显示。第二个问题是媒体 Controller 只显示 3 秒。我应该怎么做才能消除这个问题? public
我正在使用 VideoView 播放本地 mp4,我也在使用 MediaController。媒体控制栏未显示在我的视频剪辑下方,而是显示在屏幕中间。我使用 setAnchorView 将其附加到我的
我的布局包含 videoView 还有java代码中的Medicontrolleri: final MediaController mediaCont
我是一名优秀的程序员,十分优秀!