Android視屏①原生VideoView

Android視屏的記錄①

項目的要求本來是一個視屏圖片的混合輪播,但是在此之前沒有視屏方面的接觸。所以花了一些時間對Android原生視屏做了一些瞭解!

下面一起來看看我的腳印。

配置

開發工具:Android studio 3.1.4
模擬器版本:Android 4.2/API17

OK!話不多說,下面來看一下Android原生VideoView的使用。

xml:

<VideoView
    android:id="@+id/act_video_video"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Activity:

申明控件:

VideoView videoView ;

綁定控件:

videoView = findViewById(R.id.act_video_video) ;

設置視屏路徑:

網絡的:
Uri uri = Uri.parse(url) ;//url:網絡地址
videoView.setVideoURI(uri);
本地的:
videoView.setVideoPath(path);

播放:

videoView.start();

完整的activity:

VideoView videoView ;

Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(getLayout());
    videoView = findViewById(R.id.act_video_video) ;
    String url = "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" ;
    Uri uri = Uri.parse(url) ;
    videoView.setVideoURI(uri);
    videoView.start();

}

png:

在這裏插入圖片描述
顯示工具框:

MediaController mediaController = new MediaController(this) ;
videoView.setMediaController(mediaController);

png

在這裏插入圖片描述

播放監聽:

videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        Toast.makeText(Video_Activity.this, "視屏加載完成,開始播放!", Toast.LENGTH_SHORT).show();
    }
});

在這裏插入圖片描述

videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        Toast.makeText(Video_Activity.this, "視屏播放結束!", Toast.LENGTH_SHORT).show();
    }
});

在這裏插入圖片描述

自循環播放:

videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        mp.setLooping(true);
    }
});

模擬器上我試了,不能循環!真機倒是可以的。但是真機的版本是Android 7.0的 (-.-)!腦殼痛。

OK!基本上的使用講完了,現在講幾個問題:

1、加載的問題,有時會出現視屏未加載出來黑屏的情況,這很影響用戶的體驗。
2、GC機制,上面這麼寫播放是沒有問題的,可是有些人播放久了會出現GC_CONCURRENT問題。
3、點擊事件,上面我已經說過,我的原需求是做廣告輪播的,所以我需要一個點擊跳轉事件。
4、我們都知道有一個東西叫做三級緩存!我們的VideoView也是自帶了緩存播放的。but不是我想要的那種!我們不能每次都去從網上加載視屏(無關其他,我覺得這樣很low!)

思路:

第一個問題,我們可以加一個ProgressBar,我們上面有一個加載完成的監聽,當視屏加載好了之後把progressbar隱藏了就OK了
第二個問題:https://blog.csdn.net/chenrenxiang/article/details/80634330
第三個問題:我也已經百度好了,重寫OnTuch方法
第四個問題:我在 https://www.jianshu.com/p/2733e0b217f4 這篇博客中發現了一個庫:AndroidVideoCache

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章