7

私はAndroidで新しく開発しています。ToggleButtonが押されたときに、ToggleButtonがもう一度押されるまで、すべてのサウンドがオフになるビューがあります。

現在、私はこのコードを持っています。ロギングイベントが発生しているのを確認できますが、サウンドがオフになっていません。誰かがいくつかの洞察を提供できますか?

 public void onToggleClicked(View view) {
    Log.i("onToggleClicked", "ToggleClick Event Started");
    // Is the toggle on?
    boolean on = ((ToggleButton) view).isChecked();

    if (on) {
        Log.i("onToggleIsChecked", "ToggleClick Is On");
        //turn off sound, disable notifications
        amanager.setStreamMute(AudioManager.STREAM_SYSTEM, true);
        Log.i("STREAM_SYSTEM", "Set to true");
        //notifications
        amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true);
        Log.i("STREAM_NOTIFICATION", "Set to true");
        //alarm
        amanager.setStreamMute(AudioManager.STREAM_ALARM, true);
        Log.i("STREAM_ALARM", "Set to true");
        //ringer
        amanager.setStreamMute(AudioManager.STREAM_RING, true);
        Log.i("STREAM_RING", "Set to true");
        //media
        amanager.setStreamMute(AudioManager.STREAM_MUSIC, true);
        Log.i("STREAM_MUSIC", "Set to true");

    } else {
        Log.i("onToggleIsChecked", "ToggleClick Is Off");
        // turn on sound, enable notifications
        amanager.setStreamMute(AudioManager.STREAM_SYSTEM, false);
        Log.i("STREAM_SYSTEM", "Set to False");
        //notifications
        amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, false);
        Log.i("STREAM_NOTIFICATION", "Set to False");
        //alarm
        amanager.setStreamMute(AudioManager.STREAM_ALARM, false);
        Log.i("STREAM_ALARM", "Set to False");
        //ringer
        amanager.setStreamMute(AudioManager.STREAM_RING, false);
        Log.i("STREAM_RING", "Set to False");
        //media
        amanager.setStreamMute(AudioManager.STREAM_MUSIC, false);
        Log.i("STREAM_MUSIC", "Set to False");
    }
    Log.i("onToggleClicked", "ToggleClick Event Ended");
}

前もって感謝します!

4

1 に答える 1

9

イベントをリスナーに変更することで機能させることができました

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //create the toggle button ref and instantiate
    ToggleButton tb = (ToggleButton)this.findViewById(R.id.tglSetStatus);
    tb.setTextOff(getString(R.string.available_status));
    tb.setTextOn(getString(R.string.driving_status));
    //default to being available
    tb.setChecked(false);
    // attach an OnClickListener
    tb.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            // your click actions go here
            Log.i("onToggleClicked", "ToggleClick Event Started");
            //an AudioManager object, to change the volume settings  
            AudioManager amanager; 
            amanager = (AudioManager)getSystemService(AUDIO_SERVICE);

            // Is the toggle on?
            boolean on = ((ToggleButton)v).isChecked();

            if (on) {
                Log.i("onToggleIsChecked", "ToggleClick Is On");
                //turn ringer silent
                amanager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
                Log.i("RINGER_MODE_SILENT", "Set to true");

                //turn off sound, disable notifications
                amanager.setStreamMute(AudioManager.STREAM_SYSTEM, true);
                Log.i("STREAM_SYSTEM", "Set to true");
                //notifications
                amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true);
                Log.i("STREAM_NOTIFICATION", "Set to true");
                //alarm
                amanager.setStreamMute(AudioManager.STREAM_ALARM, true);
                Log.i("STREAM_ALARM", "Set to true");
                //ringer
                amanager.setStreamMute(AudioManager.STREAM_RING, true);
                Log.i("STREAM_RING", "Set to true");
                //media
                amanager.setStreamMute(AudioManager.STREAM_MUSIC, true);
                Log.i("STREAM_MUSIC", "Set to true");

            } else {
                Log.i("onToggleIsChecked", "ToggleClick Is Off");

                //turn ringer silent
                amanager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
                Log.i(".RINGER_MODE_NORMAL", "Set to true");

                // turn on sound, enable notifications
                amanager.setStreamMute(AudioManager.STREAM_SYSTEM, false);
                Log.i("STREAM_SYSTEM", "Set to False");
                //notifications
                amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, false);
                Log.i("STREAM_NOTIFICATION", "Set to False");
                //alarm
                amanager.setStreamMute(AudioManager.STREAM_ALARM, false);
                Log.i("STREAM_ALARM", "Set to False");
                //ringer
                amanager.setStreamMute(AudioManager.STREAM_RING, false);
                Log.i("STREAM_RING", "Set to False");
                //media
                amanager.setStreamMute(AudioManager.STREAM_MUSIC, false);
                Log.i("STREAM_MUSIC", "Set to False");
            }
            Log.i("onToggleClicked", "ToggleClick Event Ended");
        }
    });

これらの質問を見て入力を見つけました: Android API を介してすべての音と振動をオフにする方法 と、これ: onClickListener を ToggleButton にアタッチする

于 2012-09-10T15:31:05.760 に答える