package com.android.play; import android.app.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.content.SharedPreferences; import android.os.Bundle; import android.os.IBinder; import android.os.RemoteException; import android.util.Log; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.android.aidl.IMediaplayInterface; import com.android.entity.Constant; import com.android.view.MusicPlayerView; public class MusicMainActivity extends Activity implements View.OnClickListener{ private String TAG = Constant.TAG; private TextView mSongName; private TextView mSinger; private ImageView mImagePrevious; private ImageView mImageNext; private IMediaplayInterface IMediaplay; MusicPlayerView mpv; private int position; private int time; private String path; private ServiceConnection connection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName componentName, IBinder iBinder) { Log.i(TAG,"== ======MusicMainActity===ServiceConnected======="); IMediaplay = IMediaplayInterface.Stub.asInterface(iBinder); try { Log.i(TAG,"=======main MUSIC ========"+IMediaplay); if(IMediaplay != null) { time = IMediaplay.getDuration(); Log.i(TAG,"===========main music==time=="+time); mpv.setMax(time/1000); mpv.setProgress(IMediaplay.getCurrentPosition()/1000); if(IMediaplay.isplay()){ mpv.start(); }else{ mpv.stop(); } } } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onServiceDisconnected(ComponentName componentName) { } }; private BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if("com.android.media.prepare".equals(action)){ try { int time = IMediaplay.getDuration(); mpv.setMax(time/1000); mSongName.setText(Constant.musicList.get(position).getmName()); mSinger.setText(Constant.musicList.get(position).getArtist()); IMediaplay.start(); mpv.setProgress(IMediaplay.getCurrentPosition()/1000); if(IMediaplay.isplay()){ mpv.start(); }else{ mpv.stop(); } } catch (RemoteException e) { e.printStackTrace(); } }else if("com.android.media.completion".equals(action)){ mpv.setProgress(0); position++; if(position <= Constant.musicList.size()-1){ path= Constant.musicList.get(position).getPath(); try { IMediaplay.preparePlay(path); } catch (RemoteException e) { e.printStackTrace(); } }else { position = 0; path= Constant.musicList.get(position).getPath(); try { IMediaplay.preparePlay(path); } catch (RemoteException e) { e.printStackTrace(); } } } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_music_main); initView(); initViewListener(); this.position = getIntent().getIntExtra("postion",0); Log.i(TAG,"====MusicMainActity====getIntent ==postion="+position); mSinger.setText(Constant.musicList.get(position).getArtist()); mSongName.setText(Constant.musicList.get(position).getmName()); mpv.setCoverURL("https://upload.wikimedia.org/wikipedia/en/b/b3/MichaelsNumberOnes.JPG"); IntentFilter filter = new IntentFilter(); filter.addAction("com.android.media.completion"); filter.addAction("com.android.media.prepare"); registerReceiver(receiver,filter); bindService(); } private void initView(){ mpv = (MusicPlayerView) findViewById(R.id.mpv); mSinger = (TextView) findViewById(R.id.textViewSinger); mSongName =(TextView) findViewById(R.id.textViewSong); mImagePrevious = (ImageView) findViewById(R.id.previous); mImageNext = (ImageView) findViewById(R.id.next); } private void initViewListener(){ mpv.setOnClickListener(this); mImageNext.setOnClickListener(this); mImagePrevious.setOnClickListener(this); } private void bindService(){ Log.i(TAG,"====绑定 服务==="); Intent serviceIntent = new Intent(); serviceIntent.setComponent(new ComponentName("com.android.play","com.android.service.IMediaplayService")); bindService(serviceIntent,connection, Context.BIND_AUTO_CREATE); } @Override public void onBackPressed() { Log.i(TAG,"=======按 返回键====Music MAIN ACTIVITY=="); Intent backIntent = new Intent(); backIntent.putExtra("position",position); setResult(Activity.RESULT_OK,backIntent); finish(); } @Override protected void onResume() { super.onResume(); SharedPreferences sp = getSharedPreferences("song", 0); position = sp.getInt("position", 0); mSongName.setText(Constant.musicList.get(position).getmName()); mSinger.setText(Constant.musicList.get(position).getArtist()); } @Override protected void onStop() { super.onStop(); mpv.stop(); Log.i(TAG,"Music Main Activity : onStop "); } @Override protected void onDestroy() { unbindService(connection); unregisterReceiver(receiver); super.onDestroy(); } @Override public void onClick(View view) { switch(view.getId()){ case R.id.mpv: try { Log.i(TAG,"=====按 MPV===isRotating="+mpv.isRotating()+" , ====isPlay="+IMediaplay.isplay()); if (mpv.isRotating() && IMediaplay.isplay()) { mpv.stop(); try { IMediaplay.pause(); } catch (RemoteException e) { e.printStackTrace(); } } else { try { IMediaplay.start(); mpv.setProgress(IMediaplay.getCurrentPosition()/1000); mpv.start(); } catch (RemoteException e) { e.printStackTrace(); } } } catch (RemoteException e) { e.printStackTrace(); } break; case R.id.previous: position--; if(position >= 0){ path= Constant.musicList.get(position).getPath(); try { IMediaplay.preparePlay(path); } catch (RemoteException e) { e.printStackTrace(); } }else { position = Constant.musicList.size()-1; } break; case R.id.next: position++; if(position < Constant.musicList.size()){ path= Constant.musicList.get(position).getPath(); try { IMediaplay.preparePlay(path); } catch (RemoteException e) { e.printStackTrace(); } }else { position = 0; } break; } } }