我有一个错误报告,说声音在运行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/