sdm660-common: DeviceSettings: Refactor ClearSpeakerFragment code
- Removed unused imports - Proper resource release by using try-finally block - Added null checks for MediaPlayer methods - Remove audio parameter as its unused Change-Id: I7dc2ba7baf6e0193e13583a7454da296254d7333 Signed-off-by: Jyotiraditya Panda <jyotiraditya@aospa.co> Signed-off-by: Adithya R <gh0strider.2k18.reborn@gmail.com>
This commit is contained in:
parent
dbb6cddf41
commit
667bfe89fb
1 changed files with 26 additions and 36 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2020 Paranoid Android
|
||||
* Copyright (C) 2023 Paranoid Android
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -16,15 +16,13 @@
|
|||
|
||||
package org.lineageos.settings.device.speaker;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.AssetFileDescriptor;
|
||||
import android.media.AudioManager;
|
||||
import android.media.AudioAttributes;
|
||||
import android.media.AudioManager;
|
||||
import android.media.MediaPlayer;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.Message;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
|
@ -38,12 +36,11 @@ import java.io.IOException;
|
|||
public class ClearSpeakerFragment extends PreferenceFragment implements
|
||||
Preference.OnPreferenceChangeListener {
|
||||
|
||||
private static final String TAG = ClearSpeakerFragment.class.getSimpleName();
|
||||
|
||||
private static final String TAG = "ClearSpeakerFragment";
|
||||
private static final String PREF_CLEAR_SPEAKER = "clear_speaker_pref";
|
||||
private static final int PLAY_DURATION_MS = 30000;
|
||||
|
||||
private AudioManager mAudioManager;
|
||||
private Handler mHandler;
|
||||
private Handler mHandler = new Handler(Looper.getMainLooper());
|
||||
private MediaPlayer mMediaPlayer;
|
||||
private SwitchPreference mClearSpeakerPref;
|
||||
|
||||
|
@ -51,25 +48,18 @@ public class ClearSpeakerFragment extends PreferenceFragment implements
|
|||
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
||||
addPreferencesFromResource(R.xml.clear_speaker_settings);
|
||||
|
||||
mClearSpeakerPref = (SwitchPreference) findPreference(PREF_CLEAR_SPEAKER);
|
||||
mClearSpeakerPref = findPreference(PREF_CLEAR_SPEAKER);
|
||||
mClearSpeakerPref.setOnPreferenceChangeListener(this);
|
||||
|
||||
mHandler = new Handler();
|
||||
mAudioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
if (preference == mClearSpeakerPref) {
|
||||
boolean value = (Boolean) newValue;
|
||||
if (value) {
|
||||
if (startPlaying()) {
|
||||
mHandler.removeCallbacksAndMessages(null);
|
||||
mHandler.postDelayed(() -> {
|
||||
stopPlaying();
|
||||
}, 30000);
|
||||
return true;
|
||||
}
|
||||
if (value && startPlaying()) {
|
||||
mHandler.removeCallbacksAndMessages(null);
|
||||
mHandler.postDelayed(this::stopPlaying, PLAY_DURATION_MS);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
@ -82,39 +72,39 @@ public class ClearSpeakerFragment extends PreferenceFragment implements
|
|||
}
|
||||
|
||||
public boolean startPlaying() {
|
||||
mAudioManager.setParameters("status_earpiece_clean=on");
|
||||
mMediaPlayer = new MediaPlayer();
|
||||
getActivity().setVolumeControlStream(AudioManager.STREAM_MUSIC);
|
||||
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
|
||||
mMediaPlayer = new MediaPlayer();
|
||||
mMediaPlayer.setAudioAttributes(new AudioAttributes.Builder()
|
||||
.setUsage(AudioAttributes.USAGE_MEDIA)
|
||||
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
|
||||
.build());
|
||||
mMediaPlayer.setLooping(true);
|
||||
try {
|
||||
AssetFileDescriptor file = getResources().openRawResourceFd(R.raw.clear_speaker_sound);
|
||||
try {
|
||||
mMediaPlayer.setDataSource(file.getFileDescriptor(), file.getStartOffset(), file.getLength());
|
||||
} finally {
|
||||
file.close();
|
||||
}
|
||||
mClearSpeakerPref.setEnabled(false);
|
||||
try (AssetFileDescriptor afd = getResources().openRawResourceFd(
|
||||
R.raw.clear_speaker_sound)) {
|
||||
mMediaPlayer.setDataSource(afd);
|
||||
mMediaPlayer.setVolume(1.0f, 1.0f);
|
||||
mMediaPlayer.prepare();
|
||||
mMediaPlayer.start();
|
||||
} catch (IOException ioe) {
|
||||
Log.e(TAG, "Failed to play speaker clean sound!", ioe);
|
||||
mClearSpeakerPref.setEnabled(false);
|
||||
} catch (IOException | IllegalArgumentException e) {
|
||||
Log.e(TAG, "Failed to play speaker clean sound!", e);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public void stopPlaying() {
|
||||
if (mMediaPlayer != null) {
|
||||
if (mMediaPlayer.isPlaying()) {
|
||||
if (mMediaPlayer != null && mMediaPlayer.isPlaying()) {
|
||||
try {
|
||||
mMediaPlayer.stop();
|
||||
} catch (IllegalStateException e) {
|
||||
Log.e(TAG, "Failed to stop media player!", e);
|
||||
} finally {
|
||||
mMediaPlayer.reset();
|
||||
mMediaPlayer.release();
|
||||
mMediaPlayer=null;
|
||||
}
|
||||
}
|
||||
mAudioManager.setParameters("status_earpiece_clean=off");
|
||||
mClearSpeakerPref.setEnabled(true);
|
||||
mClearSpeakerPref.setChecked(false);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue