getRingerMode()在Android平板电脑上返回什么?

时间:2011-05-15 15:34:39

标签: android-3.0-honeycomb android

我有一个错误报告,声音无法在运行3.0的华硕Transformer平板电脑上运行。

我没有做任何太奇怪的事情,只需使用MediaPlayer,它似乎适用于各种手机。但是,如果this post返回RINGER_MODE_NORMAL以外的内容,我会使用getRingerMode()中描述的方法禁用声音。这样,如果用户将手机设置为“仅振动”,则不会产生令人惊讶的声音输出(因为媒体和振铃器使用单独的音量控制)。

如果平板电脑没有手机功能,Android平板电脑上的getRingerMode()函数是否可以返回RINGER_MODE_SILENT

编辑:请注意,在模拟器上没有更改任何内容我得到了RINGER_MODE_NORMAL。

编辑2 :在绝望的最后一幕中,我删除了振铃模式检查并在市场上重新发布。这家伙刚刚确认声音现在有效。似乎getRingerMode()至少在某些平板电脑上返回RINGER_MODE_NORMAL以外的东西。

1 个答案:

答案 0 :(得分:2)

这是GingerBread的代码。如果IAudioService无法返回RINGER_MODE_NORMAL

,它将返回getRingerMode();
/**
 * 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;
    }
}

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3_r1/android/media/AudioManager.java/?v=source

下面一步,

IAudioService#getRingerMode()抛出android.os.RemoteException

在AudioManager中,Honeycomb(读取chengelog)的唯一区别是:

  

添加了字段       int MODE_IN_COMMUNICATION

本课程3.1中没有任何内容,所以我认为Gingerbread代码仍然有效。

http://developer.android.com/sdk/api_diff/11/changes.html