问题标签 [android-audiomanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - AudioManager 的 Android SeekBar 偏好?
如何seekbar preference
在Android中更改媒体音量?
我已经尝试过RoboBunnies 示例和mike114 的代码项目,但没有一个对我有用。我希望它看起来是标题和摘要,然后在媒体音量大小的百分比seekbar
右侧。seekbar
android - Android 应用中的音频控制
我正在使用一个 android 应用程序,我需要optionMenu
使用一个选项来禁用/启用应用程序中的声音。
在android中是否可以完全控制应用程序的音量?有没有什么方法可以做到这一点?我必须用代码做到这一点吗?
谢谢
android - 如何为特定来电提供自定义振动
该程序的功能是这样的:用户有一个电话号码列表,只有当没有其他系统范围的应用程序提供振动(例如在静音模式下)时,手机才能在来电时振动。我知道这在某种程度上违反了规则,因为应用程序应该尊重用户的设置,但应用程序仅限于某些有此需求的用户。我尝试了两种方法,但都不满意:
监听电话状态,直接用我自己的模式(带
Vibrator.vibrate()
)触发振动服务。这种方法在没有来电的情况下有效,但在手机处于CALL_STATE_RINGING
状态时随机有效,我猜这是因为与实际处理来电时振动的系统范围的应用程序冲突。判断手机是否有来电振动(用
AudioManager.shouldVibrate()
),决定是否改变振动设置(用AudioManager.setRingerMode()
和AudioManager.setVibrateSetting()
)。如果我的应用程序更改了振动设置,一旦手机恢复状态,它们将被恢复CALL_STATE_IDLE
。然而,这种方法有时仍然不起作用,没有任何原因的迹象。
我希望有人可以就这个问题提供一些建议。欢迎对这两种方式或其他建议发表评论。
java - 由于 logging / gc / audioManager 导致 Android 代码滞后
为简单起见:我正在开发一个小应用程序,我们希望在其中单击多个对象。单击对象时,它应该播放声音。
这很好用,除了不时,整个应用程序(包括 LogCat 的日志记录)只是冻结大约 5 秒,之后它似乎赶上了。(所有线程冻结)我的意思是追赶;如果在冻结过程中继续点击,解冻后它仍然知道该怎么做。
日志很简单:
01-17 14:52:08.292: D/AudioManager(17963): setStreamVolume(streamType:3, index:11, flags:0) 01-17 14:52:08.473: D/dalvikvm(17963): GC_CONCURRENT 释放 417K, 48%免费3113K/5895K,外接140K/647K,暂停2ms+4ms
01-17 14:52:09.033: D/AudioManager(17963): setStreamVolume(streamType:3, index:11, flags:0) 01-17 14:52:09.484: D/AudioManager(17963): setStreamVolume(streamType: 3,索引:11,标志:0)01-17 14:52:10.174:D / AudioManager(17963):setStreamVolume(streamType:3,索引:11,标志:0)01-17 14:52:10.785:D /AudioManager(17963): setStreamVolume(streamType:3, index:11, flags:0) 01-17 14:52:15.169: D/dalvikvm(17963): GC_EXPLICIT freed 338K, 49% free 3061K/5895K, external 140K/ 647K,暂停 43ms
注意最后两个日志之间的 5 秒延迟。
我尝试删除所有音频,但这并不能解决任何问题。
正在记录的文本文件显然也不会影响任何事情。
有没有人知道如何解决这个烦人的问题?
提前致谢。
编辑:
在冻结期间暂停程序时,它指向某个方法。什么可能导致这种冻结:
android - Android:如何检查手机音频输出?
我想知道是否有办法检查音频在哪里播放(内置扬声器、耳机插孔、单声道、立体声等)和 Android 设备?
谢谢。
java - Android 应用程序返回 NULL
在开始之前让我说我过去两天一直在寻找解决错误,确实找到了一些对我不起作用的可用解决方案。所以最后我在这里发布我的代码:
关于代码:
我想编写一个 Java 应用程序来检查将音频管理器设置为 MODE_IN_CALL 的场景。
代码:
和xml
错误:01-31 14:36:53.424:E/AndroidRuntime(1309):java.lang.RuntimeException:无法启动活动 ComponentInfo{com.AudioBT/com.AudioBT.AudioBTActivity}:java.lang.NullPointerException
到目前为止,我无法找到崩溃的原因。一个类似的线程在这里但是我无法在我的情况下捕获异常 findViewById() 为布局 XML 中的自定义组件返回 null,而不是其他组件
我一直在使用最新版本的 Android SDK 4.0.3 和 Esclipse IDE for Java
任何帮助,将不胜感激 ,
谢谢你
android - Android 音频模式更改通知
我想知道音频模式(由AudioManager.getMode()返回)何时改变。这样我就可以在模式不是 MODE_NORMAL 时禁用我的应用程序中的功能。显然我可以进行投票,但这对电池不友好并且浪费 CPU。
有来电时有广播意图,但这不可用,因为它还会告诉您传入的电话号码,我不希望我的应用程序获得这些权限。用户切换到不同的应用程序时可能会发生模式更改,在这种情况下我的 Activity 会知道,但是在许多其他情况下音频模式可能会更改,而我只是不知道。
我不能使用 2.2 的 AudioFocus 东西,因为我需要支持 1.6 以后的版本。
编辑:我想停止的功能包括抖动检测和各种计时器。我想在音频模式非正常时进入休眠模式,并在 MODE_NORMAL 上再次激活。
android - Android:如何生成频率?
Android中是否有一种很好的方法来生成然后播放频率(例如1000hz,245hz)?
android - Android API level 7 中是否有任何等效的 requestAudioFocus 功能?
我的 Android 应用程序需要支持 Android 平台 2.1.x(即 Android API 级别 7)。我需要使用requestAudioFocus()
和abandonAudioFocus()
方法在我的应用程序开始播放媒体时暂停其他应用程序(例如音乐)播放,并在我的应用程序停止后恢复它们。
但是,这两个函数仅在 API 级别 8 及以上可用。API 级别 7 的等效函数是什么?或者在 API 级别 8 之前如何做到这一点?
android - Android 的 AudioManager.getMode() 似乎不可靠。同样的情况产生不同的结果
我目前正在开发一个音频播放器,它应该在失去音频焦点时暂停/停止,例如来电时。
虽然我通过使用 OnAudioFocusChangeListener 可以正常工作,但我想增强此功能以在不同情况下表现不同。
由于应用程序实现了超时功能,以防用户在收听时睡着了,我只想在我可以肯定用户仍然醒着时恢复播放。
我想我几乎可以忽略收到电子邮件的通知声音,因为这些通常只是短片,我的音频继续播放不会像在电话中那样对用户造成滋扰。因此,我想将暂停/停止限制为有来电或用户拨打电话的情况。
我已经看到 AudioManager 有一些方便的状态来发出信号,但是在我的 OnAudioFocusChangeListener 中调用 AudioManager.getMode() 时,我没有得到一致的输出。有时来电确实会生成 MODE_RINGTONE,但通常足以使功能不可靠,我得到 MODE_NORMAL。
只要我在重新获得焦点时获得正确的模式,我实际上可以忍受失去焦点时不知道模式的情况,但这似乎也不能可靠地工作。
我可以测试此行为的唯一实际设备是运行 Android 2.3.6 的 Galaxy S2(由于我使用 MediaMetadataRetriever,该应用程序是 API 级别 10,因此至少需要 2.3.3)。我已经在各种模拟系统中测试了音频焦点的丢失和重新获得,总体而言它似乎在那里工作得更好,但我每次也没有真正得到相同的结果。
也许问题是我误解了 AudioManager.getMode() 应该返回什么,也许有人可以为我澄清一下:
- 电话响铃-> AudioManager.getMode() 应该在焦点丢失时返回 MODE_RINGTONE
- 用户拨打或接听电话 -> AudioManager.getMode() 应在焦点丢失时返回 MODE_IN_CALL
- 不接听电话 -> AudioManager.getMode() 应该在焦点增益时返回 MODE_RINGTONE
- 用户挂断 -> AudioManager.getMode() 应该在焦点增益时返回 MODE_IN_CALL
这是它应该工作的方式吗?至少我的测试表明这是它应该的方式,但由于某种原因并非一直如此。
我尝试解决此问题的另一种方法是使用 PhoneStateListener,但我遇到的问题是这需要我的应用程序请求读取电话状态的权限。由于我正在共享我的应用程序,目前通过 SourceForge,稍后可能通过 Android Market,我想避免使用这种权限。
所以,最后我想问一下我理解 AudioManager.getMode() 的方式是否正确,是否有任何关于其可靠性的信息,至于我从中得到的结果有点没用。