45.Android 简单的登录注册页的播放本地背景视频与播放网络背景视频+简单的MediaPlayer播放网络音乐

导读:本篇文章讲解 45.Android 简单的登录注册页的播放本地背景视频与播放网络背景视频+简单的MediaPlayer播放网络音乐,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

//如果是要播放网络的千万别忘了网络权限:<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);//关闭服务

//—————————————————————————完—————————————————————————

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118349.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!