Tho*_*alc 9 java audio android android-theme
我在三星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>
Run Code Online (Sandbox Code Playgroud)
以及我Application元素的开头标记:
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/MyCustomTheme" >
Run Code Online (Sandbox Code Playgroud)
它构建和运行正常.NoTitleBar.Fullscreen也工作,但后面和菜单触摸按钮仍然播放声音.
当您的应用程序或任何活动运行时,您可以使用AudioManager将所有系统声音静音。
setStreamMute(int, 布尔值)
将音频流静音或取消静音。
静音命令可以防止客户端进程死亡:如果流上有活动静音请求的进程死亡,该流将自动取消静音。
给定流的静音请求是累积的: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();
}
Run Code Online (Sandbox Code Playgroud)