getRingerMode() 在 Android 平板电脑上返回什么?
我收到一个错误报告,声音在运行 3.0 的 ASUS Transformer 平板电脑上不起作用。
我没有做任何太奇怪的事情,只是使用 MediaPlayer,它似乎可以在多种手机上使用。但是,我使用 这篇文章禁用声音,如果getRingerMode() 返回 以外的内容RINGER_MODE_NORMAL
。这样,如果用户将手机设置为“仅振动”,他们就不会获得令人惊讶的声音输出(因为媒体和铃声使用单独的音量控制)。
在 Android 平板电脑上,如果平板电脑没有电话功能,getRingerMode() 函数是否有可能返回 RINGER_MODE_SILENT
?
编辑:请注意,在模拟器上,无需更改任何内容,我就会得到 RINGER_MODE_NORMAL。
编辑2:在最后的绝望中,我删除了铃声模式检查并在市场上重新发布。那家伙刚刚确认声音现在可以工作了。看来 getRingerMode() 至少在某些平板电脑上返回除 RINGER_MODE_NORMAL 之外的其他内容。
I've got a bug report that sound doesn't work on an ASUS Transformer tablet running 3.0.
I don't do anything too weird, just use MediaPlayer and it seems to work on a wide range of phones. However, I use the method described in this post to disable sounds if getRingerMode() returns something other than RINGER_MODE_NORMAL
. That way if the user has their phone on "vibrate only" they don't get surprising sound output (since media and ringer use separate volume controls).
Is it possible that on an Android tablet the getRingerMode() function returns RINGER_MODE_SILENT
if the tablet doesn't have phone capabilities?
EDIT: Just a note that on the emulator without changing anything I get RINGER_MODE_NORMAL.
EDIT 2: In a final act of desperation, I removed the ringer mode check and re-published on the Market. The guy has just confirmed that sounds now work. It seems that getRingerMode() returns something other than RINGER_MODE_NORMAL on some tablets at least.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是 GingerBread 中的代码。如果 IAudioService 无法返回
getRingerMode();
,它将返回RINGER_MODE_NORMAL
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3_r1/android/media/AudioManager.java/?v=source< /a>
下面一步,
IAudioService#getRingerMode()
抛出android.os.RemoteException
Honeycomb 中唯一的区别(阅读 chenelog)在音频管理器中是:
并且此类中的 3.1 中没有任何内容,因此我假设 Gingerbread 代码仍然有效。
http://developer.android.com/sdk/api_diff/11/changes.html
This is the code from GingerBread. It will return
RINGER_MODE_NORMAL
if IAudioService can't returngetRingerMode();
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3_r1/android/media/AudioManager.java/?v=source
One step below,
IAudioService#getRingerMode()
throwsandroid.os.RemoteException
The only difference in Honeycomb (reading the chengelog) in AudioManager is:
And nothing in 3.1 in this class, so I assume the Gingerbread code is still valid.
http://developer.android.com/sdk/api_diff/11/changes.html