美文网首页程序员Android开发经验谈
提前获取视频播放时间MediaMetadataRetriever

提前获取视频播放时间MediaMetadataRetriever

作者: Ad大成 | 来源:发表于2020-08-17 11:01 被阅读0次
//获取raw文件下的播放资源uri
     Uri parse = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.start2);

        MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
//设置context 和播放uri
        mediaMetadataRetriever.setDataSource(this,parse);
//获取以毫秒为单位的视频播放时间
        String s = 
mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
        Long aLong = Long.valueOf(s);
        l = (int) (aLong / 1000);
        video_view.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.start2));
        video_view.start();
        video_view.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                bt_start.setVisibility(View.VISIBLE);
//                video_view.start();
                Intent intent = new Intent(LanucherActivity.this, MainActivity.class);
//                intent.putExtra("startName",startName);
                startActivity(intent);
                finish();
            }
        });


    private void initData() {
        Uri parse = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.start2);
        MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
        mediaMetadataRetriever.setDataSource(this,parse);
        String s = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
        Long aLong = Long.valueOf(s);
        l = (int) (aLong / 1000);
        video_view.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.start2));
        video_view.start();
        video_view.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                bt_start.setVisibility(View.VISIBLE);
//                video_view.start();
                Intent intent = new Intent(LanucherActivity.this, MainActivity.class);
//                intent.putExtra("startName",startName);
                startActivity(intent);
                finish();
            }
        });

    }

    private void initView() {
        Intent intent = getIntent();
//        startName = intent.getStringExtra("startName");
//        if (startName!=null){
//            Intent intent1 = new Intent(LanucherActivity.this, MainActivity.class);
//            intent1.putExtra("startName",startName);
//            startActivity(intent1);
//        }
        video_view = findViewById(R.id.video_view);
        tv_jump = findViewById(R.id.tv_jump);
        bt_start = findViewById(R.id.bt_start);
        tv_jump.setOnClickListener(this);
        bt_start.setOnClickListener(this);
        thread = new Thread(new Runnable() {

            @Override
            public void run() {
                while(true){


                    try {
                        Thread.sleep(1000);
                        Message message = new Message();
                        message.what=1;
                        mHandler.sendMessage(message);

                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }


                }
            }
        });
        thread.start();

    }
    Handler mHandler=new Handler(){
        @SuppressLint("HandlerLeak")
        @Override
        public void handleMessage(@NonNull Message msg) {
            super.handleMessage(msg);
            switch (msg.what){
                case 1:
                    l--;
                    recLen --;
                    if (l<=0){
                        tv_jump.setVisibility(View.GONE);
                        mHandler.removeCallbacks(thread);


                    }else {
                        tv_jump.setText("跳过"+l);
                    }

            }
        }
    };
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.tv_jump:
            case R.id.bt_start:
                Intent intent = new Intent(LanucherActivity.this, MainActivity.class);
//                intent.putExtra("startName",startName);
                startActivity(intent);

                finish();
                break;
        }
    }

相关文章

网友评论

    本文标题:提前获取视频播放时间MediaMetadataRetriever

    本文链接:https://www.haomeiwen.com/subject/vcnfjktx.html