惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
Security Latest
Security Latest
NISL@THU
NISL@THU
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
C
Cybersecurity and Infrastructure Security Agency CISA
Cloudbric
Cloudbric
T
Threat Research - Cisco Blogs
大猫的无限游戏
大猫的无限游戏
C
CXSECURITY Database RSS Feed - CXSecurity.com
阮一峰的网络日志
阮一峰的网络日志
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
雷峰网
雷峰网
C
Cisco Blogs
V
Vulnerabilities – Threatpost
S
Security Archives - TechRepublic
V
Visual Studio Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
J
Java Code Geeks
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Know Your Adversary
Know Your Adversary
博客园 - 叶小钗
腾讯CDC
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Privacy International News Feed
P
Palo Alto Networks Blog
博客园_首页
V
V2EX
WordPress大学
WordPress大学
Schneier on Security
Schneier on Security
月光博客
月光博客
博客园 - 司徒正美
Google DeepMind News
Google DeepMind News
TaoSecurity Blog
TaoSecurity Blog
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 【当耐特】
The Cloudflare Blog
罗磊的独立博客
美团技术团队
N
News | PayPal Newsroom
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Last Week in AI
Last Week in AI
K
Kaspersky official blog
Google Online Security Blog
Google Online Security Blog
S
SegmentFault 最新的问题
Application and Cybersecurity Blog
Application and Cybersecurity Blog
T
Tailwind CSS Blog

Lan小站-嗯,不错! - 安卓

android stadio 一直在下载download fastutil-7.2.0.jar - Lan小站-嗯,不错! Android为属性组件动画无效 - Lan小站-嗯,不错! JavaScript调用Android方法,显示Echarts - Lan小站-嗯,不错! 安卓实时获取数据并刷新图表 - Lan小站-嗯,不错! Gson解析百度实时热榜Json数据 - Lan小站-嗯,不错! 按照第一行代码使用ToolBar报错。 - Lan小站-嗯,不错! Android webView打开网页 - Lan小站-嗯,不错! 安卓MPAndroidChart绘制水平柱状图 - Lan小站-嗯,不错! 安卓MPAndroidChart绘制多层级的堆叠条形图 - Lan小站-嗯,不错!
Android VideoView播放视频 - Lan小站-嗯,不错!
Lan · 2020-10-15 · via Lan小站-嗯,不错! - 安卓

Lan

本文最后更新于2020年10月15日,已超过2068天没有更新,若内容或图片失效,请留言反馈。

今天的任务是

image.png

所以先来记录一下VideoView

经过一番操作之后,视频总算是放出来了image.png

而且这个只是本地的视频,我播放网络的视频总是出现image.png

然后报错

2020-10-15 10:07:12.914 11984-11984/cn.lanol.studykongjian V/MediaHTTPService: MediaHTTPService(android.media.MediaHTTPService@37be89c): Cookies: null

2020-10-15 10:07:12.916 11984-11984/cn.lanol.studykongjian E/MediaPlayerNative: Unable to create media player

2020-10-15 10:07:12.918 11984-11984/cn.lanol.studykongjian W/VideoView: Unable to open content: https://gitlab.com/Vastsa/lanpicbed/-/raw/master/视频地址.mp4

    java.io.IOException: setDataSource failed.: status=0x80000000

        at android.media.MediaPlayer.nativeSetDataSource(Native Method)

        at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1175)

        at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1162)

        at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1079)

        at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1100)

        at android.widget.VideoView.openVideo(VideoView.java:412)

        at android.widget.VideoView.access$2200(VideoView.java:83)

        at android.widget.VideoView$7.surfaceCreated(VideoView.java:694)

        at android.view.SurfaceView.updateSurface(SurfaceView.java:1153)

        at android.view.SurfaceView.lambda$new$0$SurfaceView(SurfaceView.java:173)

        at android.view.-$$Lambda$SurfaceView$w68OV7dB_zKVNsA-r0IrAUtyWas.onPreDraw(Unknown Source:2)

        at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1093)

        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3089)

        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1952)

        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8171)

        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972)

        at android.view.Choreographer.doCallbacks(Choreographer.java:796)

        at android.view.Choreographer.doFrame(Choreographer.java:731)

        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957)

        at android.os.Handler.handleCallback(Handler.java:938)

        at android.os.Handler.dispatchMessage(Handler.java:99)

        at android.os.Looper.loop(Looper.java:223)

        at android.app.ActivityThread.main(ActivityThread.java:7656)

        at java.lang.reflect.Method.invoke(Native Method)

        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)

        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

2020-10-15 10:07:12.918 11984-11984/cn.lanol.studykongjian D/VideoView: Error: 1,0

于是暂时先放弃了,反正比赛也是无网环境。

起初播放本地视频也是如此,但后来发现是因为权限的原因,所以需要在AndroidManifest.xml中加入

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

然后还需要在Activity中动态申请权限

int permission = ActivityCompat.checkSelfPermission(videoVIew.this,
        Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(videoVIew.this, PERMISSIONS_STORAGE,
            REQUEST_EXTERNAL_STORAGE);
    video.start();
}

然后在提示授权的时候点击允许image.png

然后就没什么好说的了,这是Activity全部代码

package cn.lanol.studykongjian;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Environment;
import android.widget.MediaController;
import android.widget.VideoView;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;

public class videoVIew extends AppCompatActivity {
    private  final int REQUEST_EXTERNAL_STORAGE = 1;
    private  String[] PERMISSIONS_STORAGE = {
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_view);
        //设置视频地址
        String videoUrl1 = Environment.getExternalStorageDirectory().getPath()+"/onceok.mp4" ;
        //找到视频控件进行一系列设置
        VideoView video = findViewById(R.id.video);
        video.setMediaController(new MediaController(this));
        video.setVideoPath(videoUrl1);
        int permission = ActivityCompat.checkSelfPermission(videoVIew.this,
                Manifest.permission.WRITE_EXTERNAL_STORAGE);
        if (permission != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(videoVIew.this, PERMISSIONS_STORAGE,
                    REQUEST_EXTERNAL_STORAGE);
            video.start();
        }
    }
}

-------------------------------------------------------------------

播放URL视频提示Can't play this video的问题解决了,因为没有加网络权限,所以需要在AndroidManifest.xml中加入

<uses-permission android:name="android.permission.INTERNET" />

然后就是设置播放URL

Uri uri = Uri.parse("https://gitlab.com/Vastsa/lanpicbed/-/raw/master/播放地址.mp4")
video.setVideoURI(uri);

image.png