9

我正在三星 Galaxy S3上测试我的应用程序,它有两个触摸按钮,后退按钮和菜单按钮

我设置soundEffectsEnabled为我的所有根视图,并尝试制作自定义主题(如在此处false指出的那样)并在应用程序的清单文件中设置该主题(我也尝试将其添加到每个元素)。没有成功。Activity

这是我在res/values中的 xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyCustomTheme" parent="@android:style/Theme.NoTitleBar.Fullscreen">
    <item name="android:soundEffectsEnabled">false</item>
</style>
</resources>

我的Application元素的开始标签:

<application
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@style/MyCustomTheme" >

它可以正常构建和运行NoTitleBar.Fullscreen也可以,但是后退和菜单触摸按钮仍在播放声音

4

1 回答 1

2

当您的应用程序或任何活动正在运行时,您可以使用AudioManager将所有系统声音静音。

setStreamMute(int, boolean)

静音或取消静音音频流。

静音命令可防止客户端进程死亡:如果在流上具有活动静音请求的进程死亡,则该流将自动取消静音。

给定流的静音请求是累积的:AudioManager 可以从一个或多个客户端接收多个静音请求,并且只有在收到相同数量的取消静音请求时才会取消静音。

为了更好的用户体验,应用程序必须在 onPause() 中取消静音流,并且如果合适,在 onResume() 中再次静音。

所以,实现看起来像这样

@Override
protected void onResume() {
    super.onResume();
    AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
    audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, true);
}

@Override
protected void onPause() {
    AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
    audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, false);
    super.onPause();
}
于 2015-07-02T00:54:30.097 回答