2017-10-27 13 views
0

私はミュートでオーディオ状態を切り替え、スイッチで機能をミュート解除する必要があるアプリケーションに取り組んでいます。今のところ、スイッチの状態は永続的に保存されていますが、以前にミュートされた後にミュート解除されないため、オーディオ状態に問題がありました。ただし、アプリの再起動時は、アプリのミュートを解除できません。ただし、ミュートすると音声の状態が保存されます。私は何をしますか?オーディオ状態が共有設定で永続的に保存されない

public class SettingsActivity extends AppCompatActivity { 
    private Switch mSoundSwitch; 
    SharedPreferences sharedPreferences; 
    SharedPreferences.Editor editor; 
    AudioManager aManager; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_settings); 
     mSoundSwitch = (Switch) findViewById(R.id.soundSwitch); 
sharedPreferences = getPreferences(Context.MODE_PRIVATE); 
     boolean isSound = sharedPreferences.getBoolean("sound",false); 
     mSoundSwitch.setChecked(isSound); 
     if(mSoundSwitch.isChecked()){ 
      unmute(); 
     } else { 
      mute(); 
     } 
     mSoundSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
if (isChecked) { 
    unmute(); 
    sharedPreferences = getPreferences(Context.MODE_PRIVATE); 
    editor = sharedPreferences.edit(); 
    editor.putBoolean("sound", true); 
    editor.apply(); 

} else { 
    mute(); 
    sharedPreferences = getPreferences(Context.MODE_PRIVATE); 
    editor = sharedPreferences.edit(); 
    editor.putBoolean("sound", false); 
    editor.apply(); 

} 
      } 
      // retreiving value from shared prefrences (sound) 
     sharedPreferences = getPreferences(Context.MODE_PRIVATE); 
     boolean isChecked = sharedPreferences.getBoolean("sound", true); 
     mSoundSwitch.setChecked(isChecked); 

    } 
    private void mute() { 
     //mute audio 
     aManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ 
      aManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_MUTE, 0); 
     } else { 
      aManager.setStreamMute(AudioManager.STREAM_MUSIC, true); 
     } 
    } 

    public void unmute() { 
     //unmute audio 
     aManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ 
      aManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_UNMUTE, 0); 
     } else { 
      aManager.setStreamMute(AudioManager.STREAM_MUSIC, false); 
     } 
    } 

} 

答えて

0

あなたがsetOnCheckedChangeListenerを呼び出す.ANDあなたはこれを試してみて、保存された

の状態を知ることができます前に、あなたはboolean isSound = sharedPreferences.getBoolean("sound",false);を使用する必要があります。

SharedPreferences sharedPreferences; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_settings); 

    sharedPreferences = getPreferences(Context.MODE_PRIVATE); 
    boolean isSound = sharedPreferences.getBoolean("sound",false); 
    // edited here 
    mSoundSwitch.setChecked(isSound); 
    if(mSoundSwitch.isChecked()){ 
     unmute(); 
    } else { 
     mute(); 
    } 
    mSoundSwitch = (Switch) findViewById(R.id.soundSwitch); 
    mSoundSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if (isChecked) { 
       unmute(); 
       sharedPreferences = getPreferences(Context.MODE_PRIVATE); 
       editor = sharedPreferences.edit(); 
       editor.putBoolean("sound", true); 
       editor.apply(); 

      } else { 

       sharedPreferences = getPreferences(Context.MODE_PRIVATE); 
       editor = sharedPreferences.edit(); 
       editor.putBoolean("sound", false); 
       editor.apply(); 

      } 
     } 

    } 

} 
+0

同じ結果私はそれはあなたがそれを編集した.Iそれを確認することができます – Chukwuma

+0

を得ました。 – Chukwuma

+0

以前にミュートされた後にミュートを解除しない – KeLiuyue

0

環境設定を保存しましたが、それを取得してSettingsActivityからのみ使用しました。

問題を解決するには、アプリの初めに(onCreateMainActivity)、共有設定の値を確認してそれに応じて行動します。

関連する問題