Skip to content

Commit

Permalink
Fixed listeners, so now they run on UI thread.
Browse files Browse the repository at this point in the history
  • Loading branch information
PaulWoitaschek committed Aug 27, 2014
1 parent 103c59b commit 2222e93
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -54,15 +54,11 @@ public void onClick(DialogInterface dialog, int id) {
Intent serviceIntent = new Intent(context, AudioPlayerService.class);
serviceIntent.setAction(AudioPlayerService.CONTROL_SLEEP);
serviceIntent.putExtra(AudioPlayerService.CONTROL_SLEEP, mPicker.getValue() * 60 * 1000);
context.startService(serviceIntent);
}
});
builder.setNegativeButton(R.string.choose_time_cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

context.startService(serviceIntent);
}
});
builder.setNegativeButton(R.string.choose_time_cancel, null);
builder.setTitle(R.string.action_sleep_title);

return builder.create();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ public void onServiceConnected(ComponentName className,
} else {
currentPlaying.setImageResource(R.drawable.av_play);
}
mService.stateManager.setStateChangeListener(onStateChangedListener);
mService.stateManager.addStateChangeListener(onStateChangedListener);
}

@Override
Expand Down Expand Up @@ -109,12 +109,17 @@ public void onStop() {

private final OnStateChangedListener onStateChangedListener = new OnStateChangedListener() {
@Override
public void onStateChanged(PlayerStates state) {
if (state == PlayerStates.STARTED) {
currentPlaying.setImageResource(R.drawable.av_pause);
} else {
currentPlaying.setImageResource(R.drawable.av_play);
}
public void onStateChanged(final PlayerStates state) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
if (state == PlayerStates.STARTED) {
currentPlaying.setImageResource(R.drawable.av_pause);
} else {
currentPlaying.setImageResource(R.drawable.av_play);
}
}
});
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,8 @@ public void onServiceConnected(ComponentName className,
} else {
play_button.setImageResource(R.drawable.av_play);
}
mService.stateManager.setStateChangeListener(onStateChangedListener);
mService.stateManager.setTimeChangedListener(onTimeChangedListener);
mService.stateManager.addStateChangeListener(onStateChangedListener);
mService.stateManager.addTimeChangedListener(onTimeChangedListener);

mBound = true;
}
Expand Down Expand Up @@ -121,23 +121,34 @@ public void onStop() {
}
}


private final OnStateChangedListener onStateChangedListener = new OnStateChangedListener() {
@Override
public void onStateChanged(PlayerStates state) {
if (state == PlayerStates.STARTED) {
play_button.setImageResource(R.drawable.av_pause);
} else {
play_button.setImageResource(R.drawable.av_play);
}
public void onStateChanged(final PlayerStates state) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
if (state == PlayerStates.STARTED) {
play_button.setImageResource(R.drawable.av_pause);
} else {
play_button.setImageResource(R.drawable.av_play);
}
}
});
}
};

private final OnTimeChangedListener onTimeChangedListener = new OnTimeChangedListener() {
@Override
public void onTimeChanged(int time) {
public void onTimeChanged(final int time) {
if (!seekBarIsUpdating) {
playedTimeView.setText(formatTime(time));
seek_bar.setProgress(time);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
playedTimeView.setText(formatTime(time));
seek_bar.setProgress(time);
}
});
}
}
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,27 +162,29 @@ public void onCreate() {
//state manager to update widget
widgetComponentName = new ComponentName(this, WidgetProvider.class);
remoteViews = new RemoteViews(this.getPackageName(), R.layout.widget);
stateManager.setStateChangeListener(onStateChangedListener);
stateManager.addStateChangeListener(onStateChangedListener);

//registering receiver for pause from notification
registerReceiver(notificationPauseReceiver, new IntentFilter(NOTIFICATION_PAUSE));
}

private void handleAction(Intent intent) {
String action = intent.getAction();
if (action.equals(CONTROL_PLAY_PAUSE)) {
if (stateManager.getState() == PlayerStates.STARTED)
pause();
else
play();
} else if (action.equals(CONTROL_CHANGE_MEDIA_POSITION)) {
int position = intent.getIntExtra(CONTROL_CHANGE_MEDIA_POSITION, -1);
if (position != -1)
changePosition(position);
} else if (action.equals(CONTROL_SLEEP)) {
int sleepTime = intent.getIntExtra(CONTROL_SLEEP, -1);
if (sleepTime > 0)
sleepTimer(sleepTime);
if (intent.getAction() != null) {
if (action.equals(CONTROL_PLAY_PAUSE)) {
if (stateManager.getState() == PlayerStates.STARTED)
pause();
else
play();
} else if (action.equals(CONTROL_CHANGE_MEDIA_POSITION)) {
int position = intent.getIntExtra(CONTROL_CHANGE_MEDIA_POSITION, -1);
if (position != -1)
changePosition(position);
} else if (action.equals(CONTROL_SLEEP)) {
int sleepTime = intent.getIntExtra(CONTROL_SLEEP, -1);
if (sleepTime > 0)
sleepTimer(sleepTime);
}
}
}

Expand Down Expand Up @@ -238,8 +240,7 @@ public int onStartCommand(Intent intent, int flags, int startId) {
}
}

if (intent.getAction() != null)
handleAction(intent);
handleAction(intent);

int keyCode = intent.getIntExtra(RemoteControlReceiver.KEYCODE, -1);
handleKeyCode(keyCode);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@ public class StateManager {
private final List<OnTimeChangedListener> allTimeListener = new ArrayList<OnTimeChangedListener>();


public void setStateChangeListener(OnStateChangedListener listener) {
public void addStateChangeListener(OnStateChangedListener listener) {
allStateListener.add(listener);
}

public void removeStateChangeListener(OnStateChangedListener listener) {
allStateListener.remove(listener);
}

public void setTimeChangedListener(OnTimeChangedListener listener) {
public void addTimeChangedListener(OnTimeChangedListener listener) {
allTimeListener.add(listener);
}

Expand Down

0 comments on commit 2222e93

Please sign in to comment.