9

Samsung Galaxy S3でアプリをテストしています。これには、戻るボタンとメニュー ボタンの 2 つのタッチ ボタンがあります。

すべてのルート ビューに設定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 は 1 つ以上のクライアントから複数のミュート リクエストを受け取ることができ、同じ数のミュート解除リクエストが受信された場合にのみ、ストリームのミュートが解除されます。

ユーザー エクスペリエンスを向上させるために、アプリケーションは 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 に答える