//如果是要播放网络的千万别忘了网络权限:<uses-permission android:name="android.permission.INTERNET"/>
//第一步写布局文件video_background.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<VideoView
android:id="@+id/videoView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_gravity="center" />
</RelativeLayout>
//第二步 在res文件夹下新建raw文件夹,将准备好的mp4文件放进去
//第三步 登录注册页面引用布局
<!-- 引入背景布局 -->
<include layout="@layout/video_background" />
//注意如果页面有其他控件,比如Button,别让背景视频把你的Button覆盖了,可以添加:
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
//第四步 在你的登录注册页面的Activity页面使用。
final VideoView videoview=(VideoView)findViewById(R.id.videoview);
final String videoPath = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.文件名).toString();
myVideoView.setVideoPath(videoPath);
myVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
mp.setLooping(true);
}
});
//如果设置网络视频的话,把这个改一下就行:
final Uri uri = Uri.parse("https://ali-v4d.xiaoying.tv/20181026/zfg651/3zlmXs9185.mp4");
videoView.setVideoURI(uri);
//还可以设置这个背景视频为静音:
// videoview.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
//
// @Override
// public void onPrepared(MediaPlayer mp) {
// mp.setVolume(0f, 0f);//设置视频为静音
// mp.start();
// }
// });
//简单的MediaPlayer播放网络音乐,开辟子线程进行:
new Thread(new Runnable() {
@Override
public void run() {
MediaPlayer mediaPlayer=new MediaPlayer();
try {
String url = "http://cdnringuc.shoujiduoduo.com/ringres/userv1/a48/471/54957471.aac";
mediaPlayer.setDataSource(url);
mediaPlayer.prepare();//准备
mediaPlayer.setLooping(true);//循环播放同一首音乐
} catch (IOException e) {
e.printStackTrace();
}
mediaPlayer.start();//开始播放
// mediaPlayer.stop();//停止播放
// mediaPlayer.pause();//暂停
int duration = mediaPlayer.getDuration();//获取歌曲时长(毫秒)
String timelong = duration / 1000 + "秒";//除以1000(秒)
Log.e("TAG",timelong+"");//打印
}
}).start();
//这个音乐虽然可以播放 但是存在问题,不能常驻后台,一旦你关闭应用到后台,几秒后它自己就被杀死了。 以下是写了个Service常驻后台方法:
//第一步:写个BackGroundService类继承Service,具体操作都在这个类里:
public class BackGroundService extends Service {
Notification notification;
private Context mContext;
private MediaPlayer mediaPlayer;
private boolean isrun = true;
public BackGroundService() {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mContext = this;
Intent notificationIntent = new Intent(mContext, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
//1.通知栏占用,不清楚的看官网或者音乐类APP的效果
notification = new Notification.Builder(mContext)
.setSmallIcon(R.drawable.ic_launcher_background)//Notification显示的图片
.setWhen(System.currentTimeMillis())
.setTicker("音乐")
.setContentTitle("音乐标题")
.setContentText("音乐的内容")
.setOngoing(true)
.setPriority(PRIORITY_MAX)
.setContentIntent(pendingIntent)
.setAutoCancel(false)
.build();
//startForeground如果id为0,那么notification将不会显示
startForeground(100, notification);
//播放本地音乐
if (mediaPlayer == null) {
mediaPlayer = MediaPlayer.create(mContext, R.raw.micmp3);
mediaPlayer.setLooping(true);
mediaPlayer.start();
}
//播放网络音乐,别忘了加网络权限
// if (mediaPlayer==null){
// new Thread(new Runnable() {
// @Override
// public void run() {
// mediaPlayer = new MediaPlayer();
// try {
// String url = "http://cdnringuc.shoujiduoduo.com/ringres/userv1/a48/471/54957471.aac";
// mediaPlayer.setDataSource(url);
// mediaPlayer.prepare();//准备
// mediaPlayer.setLooping(true);//循环播放同一首音乐
// } catch (IOException e) {
// e.printStackTrace();
// }
// mediaPlayer.start();//开始播放
mediaPlayer.stop();//停止播放
mediaPlayer.pause();//暂停
// int duration = mediaPlayer.getDuration();//获取歌曲时长(毫秒)
// String timelong = duration / 1000 + "秒";//除以1000(秒)
// Log.e("TAG", timelong + "");//打印
// }
// }).start();
// }
//-----------------------开启线程(或者需要定时操作的事情用到)-----------------------
// new Thread() {
// @Override
// public void run() {
// super.run();
// while (isrun) {
//
// //你需要执行的任务
// try {
// Thread.sleep(10000);
// } catch (InterruptedException es) {
// es.printStackTrace();
// }
// OkHttpClientManager.postAsyn(OkHttpClientManager.ip + "item/returnDeadline", new OkHttpClientManager.ResultCallback<MyResponse1>() {
// @Override
// public void onError(Request request, Exception e) {
// Log.e("=============", "1");
//
// }
//
// @Override
// public void onResponse(MyResponse1 response) throws JSONException {
//
// }
// }, new OkHttpClientManager.Param("", ""));
//
// }
// //进行自己的操作
// }
// }.start();
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void onDestroy() {
isrun = false;
stopForeground(true);
mediaPlayer.release();
stopSelf();
super.onDestroy();
}
}
//第二步 在哪里需要点击播放,就在哪调用开启这个Service就行:
Intent forgroundService = new Intent(this,BackGroundService.class);
startService(forgroundService);//开启服务
//stopService(forgroundService);//关闭服务
//---------------------------------------------------------------------------完---------------------------------------------------------------------------