Back to project page EnklawaPlayer.
The source code is released under:
GNU General Public License
If you think the Android project EnklawaPlayer listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package macbury.pod.fragments.player; /*from ww w . j a v a2 s . c o m*/ import android.content.ComponentName; import android.content.Context; import android.content.ServiceConnection; import android.os.Bundle; import android.app.Fragment; import android.os.IBinder; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; import android.widget.SeekBar; import android.widget.TextView; import at.markushi.ui.CircleButton; import macbury.pod.R; import macbury.pod.extensions.Converter; import macbury.pod.managers.App; import macbury.pod.managers.player.PlayerManager; import macbury.pod.managers.player.PlayerManagerListener; import macbury.pod.managers.player.sources.AbstractMediaSource; import macbury.pod.services.PlayerService; public class PlayerControllerFragment extends Fragment implements PlayerManagerListener, View.OnClickListener, SeekBar.OnSeekBarChangeListener { private static final String TAG = "PlayerControllerFragment"; private PlayerService.PlayerBinder playerBinder; private SeekBar timeSeekBar; private TextView runningTextView; private TextView totalRunnigTextView; private CircleButton playPauseButton; private ProgressBar loadingProgress; private boolean seekingStarted; private boolean beforeSeekingPlaying; public PlayerControllerFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_player_controller, container, false); timeSeekBar = (SeekBar)view.findViewById(R.id.seek_bar_player); runningTextView = (TextView)view.findViewById(R.id.text_running_time); totalRunnigTextView = (TextView)view.findViewById(R.id.text_running_total_time); playPauseButton = (CircleButton)view.findViewById(R.id.button_play_pause); loadingProgress = (ProgressBar)view.findViewById(R.id.progress_loading); playPauseButton.setOnClickListener(this); timeSeekBar.setOnSeekBarChangeListener(this); return view; } @Override public void onResume() { super.onResume(); getActivity().bindService(App.current().intents.player(), playerManagerServiceConnection, Context.BIND_AUTO_CREATE); } @Override public void onPause() { super.onPause(); getActivity().unbindService(playerManagerServiceConnection); if (playerBinder != null) { Log.i(TAG, "Removing binder"); playerBinder.removeListener(this); playerBinder = null; } } private ServiceConnection playerManagerServiceConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { PlayerControllerFragment.this.playerBinder = (PlayerService.PlayerBinder)service; playerBinder.addListener(PlayerControllerFragment.this); updateUIForCurrentMediaSource(); } @Override public void onServiceDisconnected(ComponentName name) { Log.i(TAG, "Player service disconnected!"); playerBinder.removeListener(PlayerControllerFragment.this); playerBinder = null; } }; private void updateUIForCurrentMediaSource() { if (playerBinder != null) { PlayerManager pm = playerBinder.getPlayerManager(); if (pm.isRunning()) updateUIInfoForMediaSource(pm, pm.getCurrentMediaSource()); } } private void updateUIInfoForMediaSource(PlayerManager playerManager, AbstractMediaSource mediaSource) { timeSeekBar.setMax(mediaSource.getDuration()); if (!seekingStarted) { timeSeekBar.setProgress(mediaSource.getPosition()); runningTextView.setText(Converter.getDurationStringLong(mediaSource.getPosition())); } totalRunnigTextView.setText(Converter.getDurationStringLong(mediaSource.getDuration())); if (playerManager.isPreparing()) { loadingProgress.setVisibility(View.VISIBLE); playPauseButton.setVisibility(View.GONE); } else { loadingProgress.setVisibility(View.GONE); playPauseButton.setVisibility(View.VISIBLE); } if (playerManager.isPlaying()) { playPauseButton.setImageResource(R.drawable.ic_action_av_pause); } else { playPauseButton.setImageResource(R.drawable.ic_action_av_play); } } @Override public void onInitialize(PlayerManager manager, AbstractMediaSource mediaSource) { updateUIInfoForMediaSource(manager, mediaSource); } @Override public void onPlay(PlayerManager manager, AbstractMediaSource mediaSource) { Log.d(TAG, "onPlay:" + mediaSource.getTitle()); updateUIInfoForMediaSource(manager, mediaSource); } @Override public void onBufferMedia(PlayerManager manager, AbstractMediaSource mediaSource) { } @Override public void onMediaUpdate(PlayerManager playerManager, AbstractMediaSource mediaSource) { //Log.d(TAG, "onMediaUpdate:" + mediaSource.getDuration()); updateUIInfoForMediaSource(playerManager, mediaSource); } @Override public void onMediaError(PlayerManager playerManager, int extra) { } @Override public void onPause(PlayerManager manager, AbstractMediaSource mediaSource) { Log.d(TAG, "onPause:" + mediaSource.getTitle()); updateUIInfoForMediaSource(manager, mediaSource); } @Override public void onFinish(PlayerManager manager, AbstractMediaSource mediaSource) { Log.d(TAG, "onFinish:" + mediaSource.getTitle()); updateUIInfoForMediaSource(manager, mediaSource); } @Override public void onFinishAll(PlayerManager manager) { Log.d(TAG, "onFinishAll:"); } @Override public void onClick(View v) { if (v == playPauseButton && playerBinder != null) { PlayerManager pm = playerBinder.getPlayerManager(); if (pm.isPlaying()) { pm.pause(); } else { pm.play(); } } } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (seekingStarted) { runningTextView.setText(Converter.getDurationStringLong(progress)); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { seekingStarted = true; beforeSeekingPlaying = playerBinder.getPlayerManager().isPlaying(); playerBinder.getPlayerManager().pause(); } @Override public void onStopTrackingTouch(SeekBar seekBar) { PlayerManager pm = playerBinder.getPlayerManager(); pm.seekTo(seekBar.getProgress()); if (beforeSeekingPlaying) pm.play(); beforeSeekingPlaying = false; seekingStarted = false; } public void stopPlayerIfPaused() { if (playerBinder != null && playerBinder.getPlayerManager().isPaused()) { getActivity().startService(App.current().intents.stopPlayer()); } } }