Merge pull request #1820 from mfietz/issue/1793-player-switch
Switch audio player implementation immediately
This commit is contained in:
commit
a2c1d6f9f7
@ -53,7 +53,10 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
super.setUp();
|
||||
assertionError = null;
|
||||
|
||||
final Context context = getInstrumentation().getTargetContext();
|
||||
|
||||
// create new database
|
||||
PodDBAdapter.init(context);
|
||||
PodDBAdapter.deleteDatabase();
|
||||
PodDBAdapter adapter = PodDBAdapter.getInstance();
|
||||
adapter.open();
|
||||
@ -62,7 +65,6 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
httpServer = new HTTPBin();
|
||||
httpServer.start();
|
||||
|
||||
final Context context = getInstrumentation().getTargetContext();
|
||||
File cacheDir = context.getExternalFilesDir("testFiles");
|
||||
if (cacheDir == null)
|
||||
cacheDir = context.getExternalFilesDir("testFiles");
|
||||
@ -167,6 +169,11 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
@ -236,6 +243,11 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
@ -308,6 +320,11 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
@ -381,6 +398,11 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
@ -448,6 +470,11 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
@ -516,6 +543,11 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
@ -586,6 +618,11 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
@ -659,6 +696,11 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
@ -707,6 +749,11 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
@ -775,6 +822,11 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
@ -880,6 +932,11 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
@ -962,6 +1019,11 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
@ -1056,6 +1118,11 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAbilityChanged() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBufferingUpdate(int percent) {
|
||||
|
||||
|
@ -34,6 +34,7 @@ public class PlaybackServiceTaskManagerTest extends InstrumentationTestCase {
|
||||
super.setUp();
|
||||
|
||||
// create new database
|
||||
PodDBAdapter.init(getInstrumentation().getTargetContext());
|
||||
PodDBAdapter.deleteDatabase();
|
||||
PodDBAdapter adapter = PodDBAdapter.getInstance();
|
||||
adapter.open();
|
||||
|
@ -58,7 +58,7 @@ public class DBNullCleanupAlgorithmTest extends InstrumentationTestCase {
|
||||
assertTrue(destFolder.canWrite());
|
||||
|
||||
// create new database
|
||||
PodDBAdapter.init(getInstrumentation().getTargetContext());
|
||||
PodDBAdapter.init(context);
|
||||
PodDBAdapter.deleteDatabase();
|
||||
PodDBAdapter adapter = PodDBAdapter.getInstance();
|
||||
adapter.open();
|
||||
|
@ -39,7 +39,7 @@ public class DBTasksTest extends InstrumentationTestCase {
|
||||
context = getInstrumentation().getTargetContext();
|
||||
|
||||
// create new database
|
||||
PodDBAdapter.init(getInstrumentation().getTargetContext());
|
||||
PodDBAdapter.init(context);
|
||||
PodDBAdapter.deleteDatabase();
|
||||
PodDBAdapter adapter = PodDBAdapter.getInstance();
|
||||
adapter.open();
|
||||
|
@ -41,10 +41,12 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
uiTestUtils = new UITestUtils(getInstrumentation().getTargetContext());
|
||||
Context context = getInstrumentation().getTargetContext();
|
||||
uiTestUtils = new UITestUtils(context);
|
||||
uiTestUtils.setup();
|
||||
|
||||
// create new database
|
||||
PodDBAdapter.init(context);
|
||||
PodDBAdapter.deleteDatabase();
|
||||
PodDBAdapter adapter = PodDBAdapter.getInstance();
|
||||
adapter.open();
|
||||
|
@ -173,12 +173,21 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O
|
||||
super.setScreenOn(enable);
|
||||
MediaplayerActivity.this.setScreenOn(enable);
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public void onSetSpeedAbilityChanged() {
|
||||
MediaplayerActivity.this.onSetSpeedAbilityChanged();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
protected void onSetSpeedAbilityChanged() {
|
||||
Log.d(TAG, "onSetSpeedAbilityChanged()");
|
||||
updatePlaybackSpeedButton();
|
||||
}
|
||||
|
||||
protected void onPlaybackSpeedChange() {
|
||||
updateButPlaybackSpeed();
|
||||
updatePlaybackSpeedButtonText();
|
||||
}
|
||||
|
||||
protected void onServiceQueried() {
|
||||
@ -628,25 +637,50 @@ 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) {
|
||||
return;
|
||||
}
|
||||
if (controller == null) {
|
||||
butPlaybackSpeed.setVisibility(View.GONE);
|
||||
return;
|
||||
}
|
||||
updatePlaybackSpeedButtonText();
|
||||
ViewCompat.setAlpha(butPlaybackSpeed, controller.canSetPlaybackSpeed() ? 1.0f : 0.5f);
|
||||
butPlaybackSpeed.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
private void updatePlaybackSpeedButtonText() {
|
||||
if(butPlaybackSpeed == null) {
|
||||
return;
|
||||
}
|
||||
if (controller == null) {
|
||||
butPlaybackSpeed.setVisibility(View.GONE);
|
||||
return;
|
||||
}
|
||||
float speed = 1.0f;
|
||||
if(controller.canSetPlaybackSpeed()) {
|
||||
try {
|
||||
// we can only retrieve the playback speed from the controller/playback service
|
||||
// once mediaplayer has been initialized
|
||||
speed = Float.parseFloat(UserPreferences.getPlaybackSpeed());
|
||||
} catch (NumberFormatException e) {
|
||||
Log.e(TAG, Log.getStackTraceString(e));
|
||||
UserPreferences.setPlaybackSpeed(String.valueOf(speed));
|
||||
}
|
||||
}
|
||||
String speedStr = String.format("%.2fx", speed);
|
||||
butPlaybackSpeed.setText(speedStr);
|
||||
}
|
||||
|
||||
|
||||
protected void setupGUI() {
|
||||
setContentView(getContentViewResourceId());
|
||||
sbPosition = (SeekBar) findViewById(R.id.sbPosition);
|
||||
@ -874,20 +908,6 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O
|
||||
}
|
||||
}
|
||||
|
||||
private void updateButPlaybackSpeed() {
|
||||
if (controller != null && butPlaybackSpeed != null) {
|
||||
float speed = 1.0f;
|
||||
try {
|
||||
speed = Float.parseFloat(UserPreferences.getPlaybackSpeed());
|
||||
} catch(NumberFormatException e) {
|
||||
Log.e(TAG, Log.getStackTraceString(e));
|
||||
UserPreferences.setPlaybackSpeed(String.valueOf(speed));
|
||||
}
|
||||
String speedStr = String.format("%.2fx", speed);
|
||||
butPlaybackSpeed.setText(speedStr);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartTrackingTouch(SeekBar seekBar) {
|
||||
if (controller != null) {
|
||||
|
@ -59,7 +59,7 @@ project.ext {
|
||||
rxJavaVersion = "1.1.0"
|
||||
rxJavaRulesVersion = "1.1.0.0"
|
||||
|
||||
audioPlayerVersion = "v1.0.14"
|
||||
audioPlayerVersion = "v1.0.16"
|
||||
}
|
||||
|
||||
task wrapper(type: Wrapper) {
|
||||
|
@ -141,6 +141,11 @@ public class PlaybackService extends Service {
|
||||
*/
|
||||
public static final int NOTIFICATION_TYPE_PLAYBACK_SPEED_CHANGE = 8;
|
||||
|
||||
/**
|
||||
* Ability to set the playback speed has changed
|
||||
*/
|
||||
public static final int NOTIFICATION_TYPE_SET_SPEED_ABILITY_CHANGED = 9;
|
||||
|
||||
/**
|
||||
* Returned by getPositionSafe() or getDurationSafe() if the playbackService
|
||||
* is in an invalid state.
|
||||
@ -512,8 +517,11 @@ public class PlaybackService extends Service {
|
||||
|
||||
@Override
|
||||
public void playbackSpeedChanged(float s) {
|
||||
sendNotificationBroadcast(
|
||||
NOTIFICATION_TYPE_PLAYBACK_SPEED_CHANGE, 0);
|
||||
sendNotificationBroadcast(NOTIFICATION_TYPE_PLAYBACK_SPEED_CHANGE, 0);
|
||||
}
|
||||
|
||||
public void setSpeedAbilityChanged() {
|
||||
sendNotificationBroadcast(NOTIFICATION_TYPE_SET_SPEED_ABILITY_CHANGED, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -25,6 +25,8 @@ import android.view.WindowManager;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
|
||||
import org.antennapod.audio.MediaPlayer;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.LinkedBlockingDeque;
|
||||
@ -1016,6 +1018,8 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre
|
||||
|
||||
void playbackSpeedChanged(float s);
|
||||
|
||||
void setSpeedAbilityChanged();
|
||||
|
||||
void onBufferingUpdate(int percent);
|
||||
|
||||
boolean onMediaPlayerInfo(int code);
|
||||
@ -1036,6 +1040,7 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre
|
||||
((AudioPlayer) mp)
|
||||
.setOnBufferingUpdateListener(audioBufferingUpdateListener);
|
||||
((AudioPlayer) mp).setOnInfoListener(audioInfoListener);
|
||||
((AudioPlayer) mp).setOnSpeedAdjustmentAvailableChangedListener(audioSetSpeedAbilityListener);
|
||||
} else {
|
||||
((VideoPlayer) mp)
|
||||
.setOnCompletionListener(videoCompletionListener);
|
||||
@ -1050,7 +1055,7 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre
|
||||
return mp;
|
||||
}
|
||||
|
||||
private final org.antennapod.audio.MediaPlayer.OnCompletionListener audioCompletionListener =
|
||||
private final MediaPlayer.OnCompletionListener audioCompletionListener =
|
||||
mp -> genericOnCompletion();
|
||||
|
||||
private final android.media.MediaPlayer.OnCompletionListener videoCompletionListener =
|
||||
@ -1060,7 +1065,7 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre
|
||||
endPlayback(false);
|
||||
}
|
||||
|
||||
private final org.antennapod.audio.MediaPlayer.OnBufferingUpdateListener audioBufferingUpdateListener =
|
||||
private final MediaPlayer.OnBufferingUpdateListener audioBufferingUpdateListener =
|
||||
(mp, percent) -> genericOnBufferingUpdate(percent);
|
||||
|
||||
private final android.media.MediaPlayer.OnBufferingUpdateListener videoBufferingUpdateListener =
|
||||
@ -1070,7 +1075,7 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre
|
||||
callback.onBufferingUpdate(percent);
|
||||
}
|
||||
|
||||
private final org.antennapod.audio.MediaPlayer.OnInfoListener audioInfoListener =
|
||||
private final MediaPlayer.OnInfoListener audioInfoListener =
|
||||
(mp, what, extra) -> genericInfoListener(what);
|
||||
|
||||
private final android.media.MediaPlayer.OnInfoListener videoInfoListener =
|
||||
@ -1080,7 +1085,16 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre
|
||||
return callback.onMediaPlayerInfo(what);
|
||||
}
|
||||
|
||||
private final org.antennapod.audio.MediaPlayer.OnErrorListener audioErrorListener =
|
||||
private final MediaPlayer.OnSpeedAdjustmentAvailableChangedListener
|
||||
audioSetSpeedAbilityListener = new MediaPlayer.OnSpeedAdjustmentAvailableChangedListener() {
|
||||
@Override
|
||||
public void onSpeedAdjustmentAvailableChanged(MediaPlayer arg0, boolean speedAdjustmentAvailable) {
|
||||
callback.setSpeedAbilityChanged();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
private final MediaPlayer.OnErrorListener audioErrorListener =
|
||||
(mp, what, extra) -> {
|
||||
if(mp.canFallback()) {
|
||||
mp.fallback();
|
||||
@ -1096,7 +1110,7 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre
|
||||
return callback.onMediaPlayerError(inObj, what, extra);
|
||||
}
|
||||
|
||||
private final org.antennapod.audio.MediaPlayer.OnSeekCompleteListener audioSeekCompleteListener =
|
||||
private final MediaPlayer.OnSeekCompleteListener audioSeekCompleteListener =
|
||||
mp -> genericSeekCompleteListener();
|
||||
|
||||
private final android.media.MediaPlayer.OnSeekCompleteListener videoSeekCompleteListener =
|
||||
|
@ -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");
|
||||
|
@ -336,6 +336,8 @@ public abstract class PlaybackController {
|
||||
case PlaybackService.NOTIFICATION_TYPE_PLAYBACK_SPEED_CHANGE:
|
||||
onPlaybackSpeedChange();
|
||||
break;
|
||||
case PlaybackService.NOTIFICATION_TYPE_SET_SPEED_ABILITY_CHANGED:
|
||||
onSetSpeedAbilityChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@ -362,6 +364,8 @@ public abstract class PlaybackController {
|
||||
|
||||
public void onPlaybackSpeedChange() {}
|
||||
|
||||
public void onSetSpeedAbilityChanged() {}
|
||||
|
||||
public void onShutdownNotification() {}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user