我有一个错误报告,说声音在运行3.0的ASUS Transformer平板电脑上不起作用。

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

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

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

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

最佳答案

这是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)的唯一区别是:


  新增栏位
      诠释MODE_IN_COMMUNICATION


在该类的3.1中没有任何内容,因此我认为Gingerbread代码仍然有效。

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

关于android-3.0-honeycomb - Android平板电脑上的getRingerMode()返回什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6009359/

10-11 22:30
查看更多