从硬件'后退'按钮禁用Android'默认声音'

时间:2014-03-29 11:20:09

标签: android

好的,如果我们想从硬件'后退'按钮

禁用android'默认声音'

如果它是android中的对象

我们可以通过

禁用它
onClick (View v) {
    v.setSoundEffectsEnabled(false); 
}

或通过

通过xml禁用它
<Button
    android:id="@+id/bSignin"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:soundEffectsEnabled="false" 
/>

但是,如果是硬件按钮

怎么做?

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK )
    {
    // ?
    }
}

注意:我不想完全禁用所有声音,我只想禁用默认声音并播放应用程序声音

3 个答案:

答案 0 :(得分:3)

这是可能的,我发现this answer并希望分享它,因为我能够使用此解决方案禁用硬件默认后退按钮。这是代码:

@override
public void onResume(){
    super.onResume();
    AudioManager mgr = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
    mgr.setStreamMute(AudioManager.STREAM_SYSTEM, true);
}


@override
public void onPause(){
    super.onPause();
    AudioManager mgr = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
    mgr.setStreamMute(AudioManager.STREAM_SYSTEM, false);
}

答案 1 :(得分:0)

你可以试试这个:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK )
    {
        return false;
    }
}

答案 2 :(得分:-1)

我认为这是不可能的。

系统设置中有一个选项供用户执行。硬件后退按钮不是您的应用程序的一部分。用户的工作是决定他们是否想要听到它。你无法决定。