package com.wm.remusic.activity; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.WindowManager; import android.widget.Toast; import com.wm.remusic.MediaAidlInterface; import com.wm.remusic.R; import com.wm.remusic.fragment.QuickControlsFragment; import com.wm.remusic.service.MediaService; import com.wm.remusic.service.MusicPlayer; import com.wm.remusic.uitl.IConstants; import java.lang.ref.WeakReference; import static com.wm.remusic.service.MusicPlayer.mService; /** * Created by wm on 2016/2/25. * activity基类 */ public class LockBaseActivity extends AppCompatActivity implements ServiceConnection { private MusicPlayer.ServiceToken mToken; private PlaybackStatus mPlaybackStatus; //receiver 接受播放状态变化等 private String TAG = "BaseActivity"; /** * 更新歌曲状态信息 */ public void updateTrackInfo() { } public void updateTrack() { } public void updateLrc() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mToken = MusicPlayer.bindToService(this, this); mPlaybackStatus = new PlaybackStatus(this); } @Override protected void onResume() { super.onResume(); IntentFilter f = new IntentFilter(); f.addAction(MediaService.META_CHANGED); f.addAction(MediaService.MUSIC_CHANGED); f.addAction(MediaService.LRC_UPDATED); registerReceiver(mPlaybackStatus, new IntentFilter(f)); } @Override protected void onPause() { super.onPause(); } @Override public void onServiceConnected(final ComponentName name, final IBinder service) { mService = MediaAidlInterface.Stub.asInterface(service); } @Override protected void onStop() { super.onStop(); try { unregisterReceiver(mPlaybackStatus); } catch (final Throwable e) { } } @Override public void onServiceDisconnected(final ComponentName name) { mService = null; } @Override protected void onDestroy() { super.onDestroy(); Log.e("lock"," on destroy"); unbindService(); // Unbind from the service } public void unbindService() { if (mToken != null) { MusicPlayer.unbindFromService(mToken); mToken = null; } } private final static class PlaybackStatus extends BroadcastReceiver { private final WeakReference<LockBaseActivity> mReference; public PlaybackStatus(final LockBaseActivity activity) { mReference = new WeakReference<>(activity); } @Override public void onReceive(final Context context, final Intent intent) { final String action = intent.getAction(); LockBaseActivity baseActivity = mReference.get(); if (baseActivity != null) { if (action.equals(MediaService.META_CHANGED)) { baseActivity.updateTrackInfo(); } else if (action.equals(MediaService.MUSIC_CHANGED)) { baseActivity.updateTrack(); } else if (action.equals(MediaService.LRC_UPDATED)) { baseActivity.updateLrc(); } } } } }