我收到一个错误报告,声音在运行 3.0 的 ASUS Transformer 平板电脑上不起作用。
我没有做任何太奇怪的事情,只是使用 MediaPlayer,它似乎适用于各种手机。但是,我使用了 this post 中描述的方法如果 getRingerMode() 禁用声音返回 RINGER_MODE_NORMAL
以外的内容。这样,如果用户将手机设置为“仅振动”,他们就不会得到令人惊讶的声音输出(因为媒体和铃声使用单独的音量控制)。
如果平板电脑没有电话功能,getRingerMode() 函数是否可能在 Android 平板电脑上返回 RINGER_MODE_SILENT
?
编辑:请注意,在模拟器上不做任何更改我得到 RINGER_MODE_NORMAL。
编辑 2:在最后的绝望中,我删除了铃声模式检查并在市场上重新发布。这家伙刚刚确认声音现在可以工作了。至少在某些平板电脑上,getRingerMode() 似乎会返回 RINGER_MODE_NORMAL 之外的其他内容。
最佳答案
这是来自 GingerBread 的代码。如果 IAudioService 无法返回 getRingerMode();
RINGER_MODE_NORMAL
/**
* Returns the current ringtone mode.
*
* @return The current ringtone mode, one of {@link #RINGER_MODE_NORMAL},
* {@link #RINGER_MODE_SILENT}, or {@link #RINGER_MODE_VIBRATE}.
* @see #setRingerMode(int)
*/
public int getRingerMode() {
IAudioService service = getService();
try {
return service.getRingerMode();
} catch (RemoteException e) {
Log.e(TAG, "Dead object in getRingerMode", e);
return RINGER_MODE_NORMAL;
}
}
下面一步,
IAudioService#getRingerMode()
抛出 android.os.RemoteException
AudioManager 中 Honeycomb(阅读 chengelog)的唯一区别是:
Added Fields int MODE_IN_COMMUNICATION
而且 3.1 中没有这个类,所以我假设 Gingerbread 代码仍然有效。
关于android-3.0-honeycomb - getRingerMode() 在 Android 平板电脑上返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6009359/