如何以编程方式禁用Marshmallow中的音量增大?

时间:2017-04-07 06:44:40

标签: android volume telephonymanager

我只想在来电时禁用升级/上升/增加铃声音量。我知道有像Disable Increasing Ring这样的应用程序,但我是Android开发人员,我看不到他们的移动广告只是为了阻止我的手机增加音量;)

我试过这种方式......

public class CallReceiver extends BroadcastReceiver {

    Context context;

    public void onReceive(Context context, Intent intent) {
        try {
            this.context = context;
            TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            manager.listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE);                
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private class MyPhoneStateListener extends PhoneStateListener {
        public void onCallStateChanged(int state, String incomingNumber) {            
            AudioManager manager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
            if (state == 1 && manager.getRingerMode() == AudioManager.RINGER_MODE_NORMAL) {
                Log.e(getClass().getSimpleName(), "Incoming call from : " + incomingNumber);
                manager.setStreamVolume(
                    AudioManager.STREAM_RING,
                    manager.getStreamMaxVolume(AudioManager.STREAM_RING),
                    FLAG_ALLOW_RINGER_MODES | FLAG_PLAY_SOUND
                );
            }
        }
    }
}

当我输入 0 音量时,手机状态监听器正在运行。但是当我使用 7 manager.getStreamMaxVolume(AudioManager.STREAM_RING)作为音量时,我认为setStreamVolume()不会增加音量。

参考:

0 个答案:

没有答案