android視頻播放器系列(二)——VideoView

来源:http://www.cnblogs.com/typing/archive/2017/11/09/7809803.html
-Advertisement-
Play Games

最近在學習視頻相關的知識,現在也是在按部就班的一步步的來,如果有同樣需求的同學可以跟著大家一起促進學習。 上一節說到了可以使用系統播放器以及瀏覽器播放本地以及網路視頻,但是這在很大程度上並不能滿足我們的需求,幸好,android系統為我們提供了一個很方便的系統API——VideoView,來支持我們 ...


最近在學習視頻相關的知識,現在也是在按部就班的一步步的來,如果有同樣需求的同學可以跟著大家一起促進學習。

上一節說到了可以使用系統播放器以及瀏覽器播放本地以及網路視頻,但是這在很大程度上並不能滿足我們的需求,幸好,android系統為我們提供了一個很方便的系統API——VideoView,來支持我們進行更加方便的操作。

VideoView提供了不錯的API支持,提供了視頻播放的基本方法,主要方法如下:

start():開始播放
pause():暫停播放
resume():恢復
getDuration():獲取視頻的長度
getCurrentPosition():獲取當前播放的位置
seekTo(int msec):單位毫秒,跳轉到對應位置
isPlaying():是否正在播放
setVideoURI(Uri uri):設置播放源
setVideoPath(String path):設置播放源
setOnPreparedListener(MediaPlayer.OnPreparedListener l):監聽視頻資源裝載完成
setOnCompletionListener(OnCompletionListener l):監聽視頻播放完成
setOnErrorListener(OnErrorListener l):監聽視頻播放出錯

當然,這些都是關於視頻播放的基本操作,android系統還提供了相應的視頻控制API——MediaControllder,將其與VideoView結合就可以對視頻播放進行控制,調用

VideoView.setMediaController(MediaController controller)即可,這樣可以控制視頻播放、暫停、快進、快退、上一個、下一個以及拖動快進等等功能,關於MediaController有倆個方法比較重要:

isShowing():控制欄是否顯示
setPrevNextListeners(View.OnClickListener next, View.OnClickListener prev):上一個下一個監聽器

其中有一個細節是預設情況下上一個、下一個按鈕是隱藏的,只有設置了上一個下一個監聽器之後才顯示,看源碼可知:

必須設置了相應的監聽器才會顯示。

以下是VideoView使用的小案例:

借鑒:http://www.jianshu.com/p/98a10353494c


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 需要用到圖形繪製,沒有找到完整的圖形繪製實現,所以自己實現了一個 - - 一、實現的功能 1、基於oop思想構建,支持坐標點、線條(由坐標點組成,包含方向)、多邊形(由多個坐標點組成)、圓形(包含圓心坐標點和半徑)等實體 2、原生JavaScript實現,不依賴任何第三方js庫和插件 3、多圖 ...
  • 我們平時在同域中請求頁面什麼的時候不會有這種情況,這種情況大多發生在移動端的跨域請求中發生的。 解決方法就是在服務端中加一層過濾HTTP請求的類型,把OPTION等不用的類型過濾掉。就是當請求為非 HTTP中的 GET 和 POST的時候就不執行下麵的代碼,這樣就可以只執行一次請求了。 在ASP.N ...
  • vue.js 一個簡單快捷的JS框架 vue.js 一個簡單快捷的JS框架 vue.js擁有簡單小巧的核心,漸進式技術棧,代碼簡單易學。 雙向綁定 什麼是雙向綁定? 雙向綁定 什麼是雙向綁定? Vue框架 很核心的功能就是雙向的數據綁定 ,雙向是指 HTML標簽數據綁定到Vue對象,另外反方向的數據 ...
  • 在Activity 的啟動過程中,調用ActivityThread 的handleResumeActivity 方法時,先得到一個與Activity 關聯的PhoneWindow 對象,然後通過PhoneWindow 來獲取DecorView。 PhoneWindow.java DecorView ...
  • iOS UImage 與 RGB 裸數據的相互轉換 Touch the data of image in iOS Get data from a image 較簡單,根據已有的 image 的屬性,創建 CGBitmapContext, 這個 context 是帶有直接訪問的指針的。然後將 Imag ...
  • 內部使用了OKIO庫, 此庫中Source表示輸入流(相當於InputStream),Sink表示輸出流(相當於OutputStream) 特點: ·既支持同步請求,也支持非同步請求,同步請求會阻塞當前線程,非同步請求不阻塞當前線程,非同步執行完成後回掉相應的方法 ·支持HTTP/2協議,通過HTTP/2 ...
  • 一、讓iOS App通過iTunes進行文件交換Documents 讓iOS App通過iTunes進行文件交換 有一些App需要通過使用iTunes讓用戶上傳和下載文檔。要讓iOS程式支持iTunes文件交換其實很簡單, 只需要在程式的Info.plist里增加一個鍵:UIFileSharingE ...
  • 1. Application does not run in background(鍵名:UIApplicationExistsOnSuspend)自從iOS4.0之後,當你在應用程式執行的時候按下Home鍵,應用程式並不會中斷目前的執行,而是躲到背景去了。因此希望使用者在按下Home鍵之後就要中斷 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...