我正在三星Galaxy S3上测试我的应用,它有两个触摸按钮,后退按钮和菜单按钮
我将soundEffectsEnabled
设置为false
到我的所有根视图,并尝试制作自定义主题(如here中所述)并在应用程序的清单文件中设置该主题(我也尝试将它添加到每个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
也有效,但后面和菜单触摸按钮仍会播放声音。
答案 0 :(得分:2)
您可以使用AudioManager在应用程序或任何活动运行时将所有系统声音静音。
setStreamMute(int,boolean)
将音频流静音或取消静音。
静音命令可以防止客户端进程死亡:如果a 流上有活动静音请求的进程终止,此流将 自动取消静音。
对给定流的静音请求是累积的: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();
}