0

現在、Android 5.1 を実行している電話を優先モードに設定しようとしています。

AudioManager でサイレント モードに設定しようとしましたが、効果がなく、ゼロに設定しても効果がありません。

ただし、振動モードに設定すると機能します...

//Neither this
AudioManager am = (AudioManager) getBaseContext().getSystemService(AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_SILENT); 

//nor this works
AudioManager am = (AudioManager) getBaseContext().getSystemService(AUDIO_SERVICE);
am.setRingerMode(0); 

私は今のところ他の解決策を見つけていません。

また、ルート機能を使用できません。

編集:0(またはRINGER_MODE_SILENT)に設定しても何も起こらないことがわかりました:私がいる場合、振動モードから抜け出します...

4

1 に答える 1

1

NotificationListener Service を介してそれを達成できることがわかりました。(そして、私の質問にはすでにどこかで答えがあります...)

    //In the Service I use this to enable and disable silent mode(or priority...)
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        boolean start = intent.getBooleanExtra("start", false);
        if(start)
        {
            Log.d("TAG","START");

            //Check if at least Lollipop, otherwise use old method
            if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
                requestInterruptionFilter(INTERRUPTION_FILTER_NONE);
            else{
                AudioManager am = (AudioManager) getBaseContext().getSystemService(AUDIO_SERVICE);
                am.setRingerMode(AudioManager.RINGER_MODE_SILENT);
            }
        }
        else
        {
            Log.d("TAG","STOP");
            if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
                requestInterruptionFilter(INTERRUPTION_FILTER_ALL);
            else{
                AudioManager am = (AudioManager) getBaseContext().getSystemService(AUDIO_SERVICE);
                am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
            }
        }
        return super.onStartCommand(intent, flags, startId);

    }
于 2015-09-12T10:34:48.347 に答える