React to enabling sonic mediaplayer

This commit is contained in:
Martin Fietz 2016-03-24 16:43:41 +01:00
parent 0564988357
commit 96634c42b3
6 changed files with 64 additions and 15 deletions

View File

@ -173,8 +173,17 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O
super.setScreenOn(enable);
MediaplayerActivity.this.setScreenOn(enable);
}
};
@Override
public void onPlaybackSpeedAvailableChanged() {
MediaplayerActivity.this.onPlaybackSpeedAvailableChanged();
}
};
}
protected void onPlaybackSpeedAvailableChanged() {
Log.d(TAG, "onPlaybackSpeedAvailableChanged()");
updatePlaybackSpeedButton();
}
protected void onPlaybackSpeedChange() {
@ -628,25 +637,28 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O
if (media != null) {
onPositionObserverUpdate();
checkFavorite();
if(butPlaybackSpeed != null) {
if (controller == null) {
butPlaybackSpeed.setVisibility(View.GONE);
} else {
butPlaybackSpeed.setVisibility(View.VISIBLE);
if (controller.canSetPlaybackSpeed()) {
ViewCompat.setAlpha(butPlaybackSpeed, 1.0f);
} else {
ViewCompat.setAlpha(butPlaybackSpeed, 0.5f);
}
}
updateButPlaybackSpeed();
}
updatePlaybackSpeedButton();
return true;
} else {
return false;
}
}
private void updatePlaybackSpeedButton() {
if(butPlaybackSpeed != null) {
if (controller == null) {
butPlaybackSpeed.setVisibility(View.GONE);
} else {
butPlaybackSpeed.setVisibility(View.VISIBLE);
if (controller.canSetPlaybackSpeed()) {
ViewCompat.setAlpha(butPlaybackSpeed, 1.0f);
} else {
ViewCompat.setAlpha(butPlaybackSpeed, 0.5f);
}
}
updatePlaybackSpeedButtonText();
}
}
private void updatePlaybackSpeedButtonText() {
if (controller != null && butPlaybackSpeed != null) {

View File

@ -59,7 +59,7 @@ project.ext {
rxJavaVersion = "1.1.0"
rxJavaRulesVersion = "1.1.0.0"
audioPlayerVersion = "v1.0.14"
audioPlayerVersion = "v1.0.15"
}
task wrapper(type: Wrapper) {

View File

@ -141,6 +141,11 @@ public class PlaybackService extends Service {
*/
public static final int NOTIFICATION_TYPE_PLAYBACK_SPEED_CHANGE = 8;
/**
* Playback speed has changed
*/
public static final int NOTIFICATION_TYPE_PLAYBACK_SPEED_CHANGE_AVAILABLE_CHANGED = 9;
/**
* Returned by getPositionSafe() or getDurationSafe() if the playbackService
* is in an invalid state.
@ -515,6 +520,10 @@ public class PlaybackService extends Service {
sendNotificationBroadcast(NOTIFICATION_TYPE_PLAYBACK_SPEED_CHANGE, 0);
}
public void playbackSpeedAvailableChanged() {
sendNotificationBroadcast(NOTIFICATION_TYPE_PLAYBACK_SPEED_CHANGE_AVAILABLE_CHANGED, 0);
}
@Override
public void onBufferingUpdate(int percent) {
sendNotificationBroadcast(NOTIFICATION_TYPE_BUFFER_UPDATE, percent);

View File

@ -1018,6 +1018,8 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre
void playbackSpeedChanged(float s);
void playbackSpeedAvailableChanged();
void onBufferingUpdate(int percent);
boolean onMediaPlayerInfo(int code);
@ -1038,6 +1040,7 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre
((AudioPlayer) mp)
.setOnBufferingUpdateListener(audioBufferingUpdateListener);
((AudioPlayer) mp).setOnInfoListener(audioInfoListener);
((AudioPlayer) mp).setOnSpeedAdjustmentAvailableChangedListener(audioSpeedAvailableChangedListener);
} else {
((VideoPlayer) mp)
.setOnCompletionListener(videoCompletionListener);
@ -1082,6 +1085,15 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre
return callback.onMediaPlayerInfo(what);
}
private final MediaPlayer.OnSpeedAdjustmentAvailableChangedListener
audioSpeedAvailableChangedListener = new MediaPlayer.OnSpeedAdjustmentAvailableChangedListener() {
@Override
public void onSpeedAdjustmentAvailableChanged(MediaPlayer arg0, boolean speedAdjustmentAvailable) {
callback.playbackSpeedAvailableChanged();
}
};
private final MediaPlayer.OnErrorListener audioErrorListener =
(mp, what, extra) -> {
if(mp.canFallback()) {

View File

@ -1,8 +1,11 @@
package de.danoeh.antennapod.core.util.playback;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.SurfaceHolder;
import org.antennapod.audio.MediaPlayer;
import de.danoeh.antennapod.core.preferences.UserPreferences;
@ -12,8 +15,17 @@ public class AudioPlayer extends MediaPlayer implements IPlayer {
public AudioPlayer(Context context) {
super(context);
PreferenceManager.getDefaultSharedPreferences(context)
.registerOnSharedPreferenceChangeListener(sonicListener);
}
private final SharedPreferences.OnSharedPreferenceChangeListener sonicListener =
(sharedPreferences, key) -> {
if (key.equals(UserPreferences.PREF_SONIC)) {
checkMpi();
}
};
@Override
public void setScreenOnWhilePlaying(boolean screenOn) {
Log.e(TAG, "Setting screen on while playing not supported in Audio Player");

View File

@ -336,6 +336,8 @@ public abstract class PlaybackController {
case PlaybackService.NOTIFICATION_TYPE_PLAYBACK_SPEED_CHANGE:
onPlaybackSpeedChange();
break;
case PlaybackService.NOTIFICATION_TYPE_PLAYBACK_SPEED_CHANGE_AVAILABLE_CHANGED:
onPlaybackSpeedAvailableChanged();
}
}
@ -362,6 +364,8 @@ public abstract class PlaybackController {
public void onPlaybackSpeedChange() {}
public void onPlaybackSpeedAvailableChanged() {}
public void onShutdownNotification() {}
/**