- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一个关于 android MediaPlayer 的有趣情况。我有大约 30 种声音需要在 Activity 中播放。我得到奇怪的结果,我不确定是否来自内存问题......
我需要使用媒体播放器的原因是我有一个定时的声音流,其中一个声音需要按特定顺序播放另一个声音。我还使用回调来查看接下来播放的声音。因此,soundpool 出...
我尝试使用 MediaPlayer.create() 将每个声音加载到它自己的媒体播放器中。现在,这在我的设备 Samsung Galaxy S Vibrant 上运行良好。然而,当我尝试设置 onCompletionListener 时,我的 Samsung Ace 客户端出现空指针异常,这意味着 .create() 在他的设备上返回 null 而不是我的。
所以,我从一次加载它们切换到在上一个声音的 onCompletionListener 中动态加载它们 using this method
这种作品,第 3-4 首声音播放,然后它卡在我客户的设备上(在我的设备上仍然可以正常工作)。我假设它卡在 .prepare()
这很难解决,因为我的客户对 logcat 没有真正的了解,也没有要调试的 SDK,但它在我的设备上运行良好。它甚至卡在他的第二个设备上,该设备与我的型号相同。
任何人都知道可能导致此问题的原因或如何调试它?
我想我的下一步将是简单地只使用一个 MediaPlayer 并使用 OnCompletionListener 的 mp 参数在同一个媒体播放器上加载下一个声音。我会发布我的发现。
最佳答案
如果您正确地释放了媒体播放器,那应该不是内存问题。您可以通过以下方式正确确保这一点:
if(mediaplayer!=null){
if(mediaplayer.isPlaying()){
mediaplayer.stop();
}
mediaplayer.release();
mediaplayer = null;
}
我相信 apk 内存分配有 10MB 的限制(最低,有些手机更高),因此您应该能够检查这是否符合您的限制。但是,市场最多允许 50MB。
对于调试,我建议您确保所有 Assets 都在那里(听起来很傻,但它排除了它)因为如果您缺少声音文件,它当然会无法创建。如果抛出异常,则创建 Toast
通知,例如IllegalStateException
将确保您对媒体播放器状态的管理不是问题。
还值得一提的是,您永远不应混合使用 prepare
和 create
。如果您正在使用 create
,它已经调用了 prepare
并且随后调用 prepare
可能会导致奇怪的行为;不确定它是否会使播放器无效!
一般来说,您并不想真正按照您建议的方式进行(创建一个新的媒体播放器并在 onComplete
中更改声音)。原因很简单,当您调用 create
或 prepare
时,它会将声音加载到内存中 - 这将花费不同的时间,具体取决于手机(它可能对于某些手机来说真的很长一段时间!)。一次加载它们要好得多。
关于Android Media Player 挂起或返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8282529/
当我想用这个名为 Asfbin 的神奇工具拆分教程视频文件( .wmv )时,查看了媒体播放器中的所有设置,但徒劳地找不到一个... 有没有办法用milliseconds设置windows media
在我的应用程序API级别targetSdkVersion 23中,我添加了以下权限:
出于某种原因,当我发送电子邮件时,我的媒体查询没有应用。我将它从 Outlook 2007 发送到 gmail 并使用 iphone 4s 查看它。我试过使用更简单的@media 查询规则(即仅更改字
我看了一本学习python编程的书,它显示了代码: import media 所以我从链接http://pragprog.com/titles/gwpy/source_code 下载了gwpy-cod
我正在尝试使用一个小的 from,只有 3 个元素。这是我正在使用的,有人可以让我知道我哪里出错了吗?我已尝试同时使用最小宽度和最大宽度,但似乎没有任何效果。 html,body{margin:0p
要修复的网站问题: 我想弄清楚为什么我的一些@media 查询是重叠的。如果您查看我的代码,您会看到 @media 查询被标记为每个设备维度。 @media SCREEN SIZE: MASSIVE
我正在编辑一个预先存在的样式表。它目前有 0-319px 和 320-479px 的@media 部分,以及其他一些用于更大屏幕的部分。我正在尝试添加特定于 iPhone 的样式。但是,我的iphon
我读到在其他@media 查询中嵌套@media 查询在CSS3 中是完全有效的。 但是,我通过 CSS 验证器收到以下解析错误: @media screen and (max-width: 768p
我面临的情况是,对于我的一个类(class),@media 查询只是没有被读取,相反,即使 @media 标准正在被读取,类也没有围绕 @media 查询被读取的情况遇见了。 这是代码: @media
如果我从 android webrtc SDK(由 antmedia 提供)流式传输到 Ant Media 的社区版,则保存的最终视频会出现拉伸(stretch)(以手机纵向模式拍摄)。 Check
我想知道 Mobicent Media 服务器如何使用 URL 播放音频的详细信息?它在哪种方法中使用 URL 进行流式传输。对于本地存储,我了解但对于远程存储(URL),我不知道它是如何工作的。我在
简单是辉煌的关键。 我看到了 @media print 和 @media screen 标签背后的一些意义。但是将 @media screen 与(@media all 而不是打印)进行比较让我感到困
我有以下 sass: .branded @media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (m
我都试过了,得到的结果相似。一直找不到答案。 最佳答案 开头和结尾的斜杠分别对匹配的内容添加了限制。 media:没有斜线,匹配当前目录和所有子目录下的文件和目录。 media/:尾部加斜杠表示只匹配
我正在尝试让 Enquire.js 为旧版浏览器工作。我正在使用文档中的深度支持方法: Modernizr.load([ { test: window.matchMedia,
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
我希望将 H264 视频流式传输到 Windows Phone 8 应用程序。 那么我该如何使用 ShardDX 呢? (或者可能来自媒体基金会的 native 功能)。 我找到了用于播放视频的 Me
我想使用 cordova 录制用户的音频。在研究中,我发现了两个似乎可以完成这项工作的插件。第一media plugin及其他media capture plugin .现在我的问题是我可以从两个插件
我正在尝试弄清楚如何构建我的 CSS 文件(现在已经很多了),我想知道拥有以下内容之间是否有任何实际区别: 或拥有: @media print { definitions } 我是从浏览器的
这个问题在这里已经有了答案: Media=All vs Media=Screen (2 个答案) 关闭 8 年前。
我是一名优秀的程序员,十分优秀!