想做一个可以自由获取手机音乐文件的音乐播放器,结果难度比我想的大了点还需要一段时间的学习,于是简化了一下做的是很简单的版本,只能播放程序自带的音乐文件,发出来记录一下。
界面就只是两个按钮而已就不用发图片了
注意:
音乐文件需要事先放置好在raw文件夹内,可能会没有这个文件夹,百度一下如何新建就好
实现功能:
1.播放音乐
2.停止音乐
运用关键技术:
1.intent跳转
2.service后台服务
实现代码:
界面就是两个按钮设置事件就行了
代码:
package com.example.hp.baidumap;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Picture;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button start=(Button)findViewById(R.id.button);
Button stop=(Button)findViewById(R.id.button2);
final Intent it=new Intent(this,PlayMusicService.class);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startService(it);
}
});
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
stopService(it);
}
});
}
}
service代码:
package com.example.hp.baidumap;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
public class PlayMusicService extends Service {
private MediaPlayer mediaPlayer;
public PlayMusicService() {
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
mediaPlayer=MediaPlayer.create(this,R.raw.demo);
mediaPlayer.start();
}
@Override
public void onDestroy() {
super.onDestroy();
mediaPlayer.stop();
}
}
权限设置:(这个因Android studio版本不同,低版本的需要手动添加)
<service
android:name=".PlayMusicService"
android:enabled="true"
android:exported="true">