public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void playRes(View view) {
MediaPlayer mp = MediaPlayer.create(this, R.raw.a1);
mp.start();
}
public void playSys(View view) {
MediaPlayer MP = new MediaPlayer();
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) + "/a.mp3";
try {
MP.setDataSource(this, Uri.parse(path));
MP.pause();
MP.start();
} catch (IOException e) {
e.printStackTrace();
}
}
public void playNet(View view) {
MediaPlayer mp = new MediaPlayer();
String uri = "http://sc1.111ttt.com/2015/1/11/01/104011137470.mp3";
try {
mp.setDataSource(this, Uri.parse(uri));
mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
}
});
mp.prepareAsync();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class MainActivity extends AppCompatActivity implements
View.OnClickListener, MediaPlayer.OnPreparedListener,
MediaPlayer.OnErrorListener, MediaPlayer.OnCompletionListener {
private Button play, pasume, per, nextplay;
private MediaPlayer mp;
private int index = 0;
private ArrayList<String> musiclist = new ArrayList<>();
private boolean isPause = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initMusic();
System.out.print(musiclist.size());
mp = new MediaPlayer();
mp.setOnPreparedListener(this);
mp.setOnErrorListener(this);
}
/**
* 初始化 组件
*/
private void initView() {
play = (Button) findViewById(R.id.player);
pasume = (Button) findViewById(R.id.pasumeer);
per = (Button) findViewById(R.id.per);
nextplay = (Button) findViewById(R.id.nextplayer);
play.setOnClickListener(this);
pasume.setOnClickListener(this);
per.setOnClickListener(this);
nextplay.setOnClickListener(this);
}
/**
* 音乐资源 初始化
*/
private void initMusic() {
String path =
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getPath();
musiclist.add(path + File.separator + "/sd.mp3");
System.out.print(path + File.separator + "/sd.mp3");
musiclist.add(path + File.separator + "/sd1.mp3");
}
/**
* 按钮 单击 事件
*
* @param v
*/
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.player:
play();
break;
case R.id.pasumeer:
pause();
break;
case R.id.per:
per();
break;
case R.id.nextplayer:
next();
break;
}
}
/**
* 上一首
*/
private void per() {
if (index - 1 > 0) {
index--;
} else {
index = musiclist.size() - 1;
}
start();
}
/**
* 下一首
*/
private void next() {
if (index + 1 < musiclist.size()) {
index++;
} else {
index = 0;
}
start();
}
/**
* 暂停
*/
private void pause() {
if (mp.isPlaying()) {
mp.pause();
isPause = true;
}
}
/**
* 播放
*/
private void play() {
if (isPause) {
mp.start();
isPause = false;
} else {
start();
}
}
/**
* 需要从头开始播放
*/
private void start() {
if (index < musiclist.size()) {
if (mp.isPlaying()) {
mp.stop();
}
String path = musiclist.get(index);
mp.reset();
try {
mp.setDataSource(path);
mp.prepareAsync();
isPause = false;
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* prepareAsync() 方法完成后,回调这个方法
*
* @param mp
*/
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
/**
* 出现 错误时
*
* @param mp
* @param what
* @param extra
* @return
*/
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
mp.reset();
return true;
}
/**
* 音乐播放 完毕
*
* @param mp
*/
@Override
public void onCompletion(MediaPlayer mp) {
next();
}
/**
* activity 销毁时
*/
@Override
protected void onDestroy() {
super.onDestroy();
if (mp != null) {
if (mp.isPlaying()) {
mp.stop();
mp.release();
}
}
}
}
public class MusicService extends Service implements
MediaPlayer.OnPreparedListener {
private MediaPlayer mediaPlayer;
WifiManager.WifiLock lock = null;
public static final String ACTION_PLAY = "com.play.ACTION_PLAY";
public static final String ACTION_PAUSE = "com.play.ACTION_PAUSE";
public static final String ACTION_EXIT = "com.play.ACTION_EXIT";
public MusicService() {
}
@Override
public void onCreate() {
super.onCreate();
mediaPlayer = new MediaPlayer();
mediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
lock = wifiManager.createWifiLock("mylock");
lock.acquire();
mediaPlayer.setOnPreparedListener(this);
notification();
}
private void notification() {
Notification.Builder builder = new Notification.Builder(this);
builder.setTicker("第一个音乐");
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setContentTitle("我的音乐");
PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this, activity3.class),
PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pi);
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = builder.build();
startForeground(0, notification);
nm.notify(0, notification);
}
/**
* 判断 不同的 action
*
* @param intent
* @param flags
* @param startId
* @return
*/
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
String action = intent.getAction();
if (ACTION_PLAY.equals(action)) {
mediaPlayer.reset();
try {
mediaPlayer.setDataSource(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) + File.separator + "sd.mp3");
mediaPlayer.prepareAsync();
} catch (IOException e) {
e.printStackTrace();
}
} else if (ACTION_PAUSE.equals(action)) {
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
}
} else if (ACTION_EXIT.equals(action)) {
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.release();
}
}
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();
}
@Override
public void onDestroy() {
super.onDestroy();
lock.release();
stopForeground(true);
}
}
public class activity3 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity3);
}
public void play(View view) {
Intent intent = new Intent(MusicService.ACTION_PLAY);
startService(intent);
}
public void pasue(View view) {
Intent intent = new Intent(MusicService.ACTION_PAUSE);
startService(intent);
}
}
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<service
android:name=".MusicService"
android:enabled="true"
android:exported="true"
android:process=":music"
>
<intent-filter>
<action android:name="com.play.ACTION_PLAY"/>
<action android:name="com.play.ACTION_PAUSE"/>
<action android:name="com.play.ACTION_EXIT"/>
</intent-filter>
</service>