国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

零基礎(chǔ)用Android Studio實(shí)現(xiàn)簡(jiǎn)單的本地視頻播放器

這篇具有很好參考價(jià)值的文章主要介紹了零基礎(chǔ)用Android Studio實(shí)現(xiàn)簡(jiǎn)單的本地視頻播放器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


本文將講解如何使用Android視頻播放器VideoView組件來(lái)播放本地視頻和網(wǎng)絡(luò)視頻,實(shí)現(xiàn)起來(lái)還是比較簡(jiǎn)單的。VideoView組件的作用與ImageView類似,只是ImageView用于顯示圖片,VideoView用于播放視頻。
(本文章的代碼參考: https://www.jb51.net/article/122051.htm)
實(shí)現(xiàn)效果:

用Android Studio做的簡(jiǎn)單的本地視頻播放器


導(dǎo)出的APK:
鏈接:https://pan.baidu.com/s/1UyqeqqEmEDlILKCP71FtJA
提取碼:9tro

一、創(chuàng)建Android Studio項(xiàng)目

1.File——>New——>New Project
安卓studio 加入視頻,Android Studio,android studio,音視頻,android
2.
安卓studio 加入視頻,Android Studio,android studio,音視頻,android
3.
安卓studio 加入視頻,Android Studio,android studio,音視頻,android

二、在界面布局文件activity_main.xml中定義VideoView組件

安卓studio 加入視頻,Android Studio,android studio,音視頻,android
activity_main.xml完整代碼

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.simplevideo.MainActivity">

    <!--主界面的三個(gè)按鈕和一個(gè)播放控件-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btnPlay"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Play"
            android:textAllCaps="false" />

        <Button
            android:id="@+id/btnPause"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Pause"
            android:textAllCaps="false" />

        <Button
            android:id="@+id/btnReplay"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Replay"
            android:textAllCaps="false" />
    </LinearLayout>

    <!--VideoView 作為視頻播放時(shí)的顯示位置-->
    <VideoView
        android:id="@+id/vdvwFilm"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

三、編輯MainActivity.java

基本思路:

  • 1.對(duì)界面的按鈕和顯示位置實(shí)例化。
  • 2.調(diào)用VideoView的setVideoPath(String path)方法來(lái)加載 本地path 文件所代表的視頻。
    本次用到的名為big_buck_bunny.mp4的視頻下載地址為:http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4 需要提前下載到用于測(cè)試的手機(jī)的內(nèi)存根目錄下。
    (若想要加載uri所對(duì)應(yīng)的視頻,需要使用setVideoURI(Uri uri)方法加載,在此不作詳細(xì)說(shuō)明。)
  • 3.對(duì)權(quán)限的取得結(jié)果進(jìn)行判斷,并針對(duì)性操作。
  • 4.調(diào)用VideoView的start()、stop()、pause()方法來(lái)控制視頻播放。
  • 5.執(zhí)行完畢,釋放所有資源。

實(shí)際上與VideoView—起結(jié)合使用的還有一個(gè)MediaController類,它的作用是提供一個(gè)友好的圖形控制界面,通過(guò)該控制界面來(lái)控制視頻的播放。
安卓studio 加入視頻,Android Studio,android studio,音視頻,android
MainActivity.java完整代碼:

package com.example.simplevideo;

import android.Manifest;
import android.content.pm.PackageManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.widget.VideoView;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import java.io.File;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private VideoView videoView;

    @Override
    //對(duì)界面的按鈕和顯示位置實(shí)例化,并檢查權(quán)限
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        videoView = (VideoView)findViewById(R.id.vdvwFilm);
        Button btnPlay = (Button)findViewById(R.id.btnPlay);
        Button btnPause = (Button)findViewById(R.id.btnPause);
        Button btnReplay = (Button)findViewById(R.id.btnReplay);

        btnPlay.setOnClickListener(this);
        btnPause.setOnClickListener(this);
        btnReplay.setOnClickListener(this);

        if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
        }else {
            initVideoPath();//初始化MediaPlayer
        }
    }


    //用一個(gè)單獨(dú)的方法來(lái)實(shí)現(xiàn)視頻播放初始化
    private void initVideoPath() {
        //本地的視頻,需要在手機(jī)內(nèi)存根目錄添加一個(gè)名為 big_buck_bunny.mp4 的視頻
        File file = new File(Environment.getExternalStorageDirectory(), "big_buck_bunny.mp4");//指定視頻文件路徑
        videoView.setVideoPath(file.getPath());//加載path文件代表的視頻
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.setLooping(true);//讓視頻循環(huán)播放
            }
        });
    }

    @Override
    //對(duì)權(quán)限的取得結(jié)果進(jìn)行判斷,并針對(duì)性操作。獲得權(quán)限,執(zhí)行初始化;如果沒(méi)有獲得權(quán)限,提示用戶。
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case 1:
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    initVideoPath();
                } else {
                    Toast.makeText(this, "拒絕權(quán)限,無(wú)法使用程序。", Toast.LENGTH_LONG).show();
                    finish();
                }
                break;
            default:
                break;
        }
    }

    @Override
    //統(tǒng)一處理Play(播放)、Pause(暫停)、Replay(重新播放)的邏輯
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btnPlay:
                if(!videoView.isPlaying()){
                    videoView.start();//播放
                }
                break;
            case R.id.btnPause:
                if(videoView.isPlaying()){
                    videoView.pause();//暫停
                }
                break;
            case R.id.btnReplay:
                if(videoView.isPlaying()){
                    videoView.resume();//重新播放
                }
                break;
        }
    }

    @Override
    //執(zhí)行完畢,釋放所有資源
    protected void onDestroy() {
        super.onDestroy();
        if(videoView != null){
            videoView.suspend();
        }
    }
}

四、在 AndroidManifest.xml 中配置相應(yīng)的權(quán)限

安卓studio 加入視頻,Android Studio,android studio,音視頻,android
只需要加上

<!--外存儲(chǔ)寫權(quán)限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

AndroidManifest.xml完整代碼:
安卓studio 加入視頻,Android Studio,android studio,音視頻,android

五、導(dǎo)出apk包

(詳細(xì)參考:https://llw-study.blog.csdn.net/article/details/112288954?spm=1001.2014.3001.5502)
1.
安卓studio 加入視頻,Android Studio,android studio,音視頻,android
2.
安卓studio 加入視頻,Android Studio,android studio,音視頻,android
3.沒(méi)有Key的話需要Create new,有的話Choose existing
安卓studio 加入視頻,Android Studio,android studio,音視頻,android
4.
安卓studio 加入視頻,Android Studio,android studio,音視頻,android
5.
安卓studio 加入視頻,Android Studio,android studio,音視頻,android
6.把.apk文件下載到手機(jī)上進(jìn)行安裝即可。
安卓studio 加入視頻,Android Studio,android studio,音視頻,android

六、對(duì)遇到的坑的思考

在最初,總是遇到無(wú)法播放視頻+黑屏的問(wèn)題,在線播放視頻我也還沒(méi)有實(shí)現(xiàn),視頻最好是自己上傳的,不要用網(wǎng)上的視頻素材,網(wǎng)上的視頻素材人家是做了保護(hù)的措施。還有一種方法,就是使用本地視頻。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-785390.html

  • 問(wèn)題分析參考:
    https://www.jb51.net/article/143228.htm
  • Android使用VideoView播放本地視頻和網(wǎng)絡(luò)視頻的方法(里面播放網(wǎng)絡(luò)視頻的方法可以參考):https://www.jb51.net/article/90992.htm

到了這里,關(guān)于零基礎(chǔ)用Android Studio實(shí)現(xiàn)簡(jiǎn)單的本地視頻播放器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Flutter視頻播放器在iOS端和Android端都能實(shí)現(xiàn)全屏播放

    Flutter視頻播放器在iOS端和Android端都能實(shí)現(xiàn)全屏播放

    Flutter開發(fā)過(guò)程中,對(duì)于視頻播放的三方組件有很多,在Android端適配都挺好,但是在適配iPhone手機(jī)的時(shí)候,如果設(shè)置了 UIInterfaceOrientationLandscapeLeft 和 UIInterfaceOrientationLandscapeRight 都為false的情況下,無(wú)法做到全屏播放,因?yàn)镕Lutter的 SystemChrome.setPreferredOrientations 方法不適配iOS端

    2024年02月05日
    瀏覽(38)
  • Android Studio 做一個(gè) MP3 播放器

    Android Studio 本身提供了多個(gè)音頻播放器組件,可以通過(guò)這些組件來(lái)實(shí)現(xiàn)音頻播放功能,其中包括 MediaPlayer、SoundPool 和 ExoPlayer 等。官方推薦我們使用ExoPlayer因?yàn)楣δ芨鼜?qiáng)大,但這里用MediaPlayer因?yàn)榫帉懜?jiǎn)單。 在使用 MediaPlayer 實(shí)現(xiàn) MP3 播放器時(shí),需要注意以下幾點(diǎn): 在使用

    2024年02月04日
    瀏覽(20)
  • Android Studio初學(xué)者實(shí)例:仿網(wǎng)易音樂(lè)播放器

    Android Studio初學(xué)者實(shí)例:仿網(wǎng)易音樂(lè)播放器

    本期帶來(lái)的是以Service為主要的知識(shí)點(diǎn)的網(wǎng)易音樂(lè)播放器 看一下效果圖 ?首先項(xiàng)目準(zhǔn)備: 在res下新建raw文件夾,并在文件夾中添加喜愛(ài)的mp3音樂(lè) ?OK,第一步,先寫一個(gè)背景文件,在res/drawable文件夾中新建xml文件: btn_bg_selector.xml ?編寫主界面代碼activity_main.xml 編寫MusicServic

    2024年02月05日
    瀏覽(26)
  • QT簡(jiǎn)單的視頻播放器

    QT簡(jiǎn)單的視頻播放器

    1.功能 選擇路徑下的固定視頻格式文件播放,對(duì)應(yīng)的音頻和視頻同步播放 2.新建一個(gè)不含UI界面的QT工程 特別注意:QT中的路徑名不能含中文 ? 設(shè)置一個(gè)不含UI界面的工程 取消構(gòu)建目錄 因?yàn)橐胍曨l播放器的模塊,我們?cè)趐ro中引入對(duì)應(yīng)的模塊 因?yàn)橐氩季指袷剑晕覀?/p>

    2024年02月03日
    瀏覽(23)
  • Android Studio實(shí)現(xiàn)讀取本地相冊(cè)文件并展示

    Android Studio實(shí)現(xiàn)讀取本地相冊(cè)文件并展示

    原文鏈接 效果 代碼 activity_main.xml 需要有一個(gè)按鈕和image來(lái)展示圖片 MainActivity

    2024年02月12日
    瀏覽(18)
  • Android Studio初學(xué)者實(shí)例:音樂(lè)播放器與Service學(xué)習(xí)

    Android Studio初學(xué)者實(shí)例:音樂(lè)播放器與Service學(xué)習(xí)

    本次一個(gè)案例實(shí)現(xiàn)的一個(gè)簡(jiǎn)單的音樂(lè)播放器 用到的知識(shí)點(diǎn)最主要的幾點(diǎn)是:Service、handler(實(shí)現(xiàn)音樂(lè)播放的進(jìn)度條更新與圖片旋轉(zhuǎn))以及用于播放音頻的MediaPlayer 看一下案例效果: ?由于Service是Android的四大組件之一,Activity、Service等等一個(gè)重要知識(shí)點(diǎn)就是生命周期的問(wèn)題,

    2024年02月03日
    瀏覽(42)
  • 6款良心本地視頻播放器,功能強(qiáng)大還完全免費(fèi)

    6款良心本地視頻播放器,功能強(qiáng)大還完全免費(fèi)

    雖然現(xiàn)在很多人更習(xí)慣直接在線看視頻,但相信一定還有很多和我一樣更喜歡找質(zhì)量更優(yōu)質(zhì)的資源下載到本地觀看。在本地上看,就需要一個(gè)播放器才可以。 而系統(tǒng)自帶的播放功能實(shí)在太拉胯了(支持的格式少,有些甚至需要付費(fèi)才可以使用),所以這種情況我們就很有必要

    2024年02月02日
    瀏覽(22)
  • android 實(shí)現(xiàn)本地一鍵打包,告別繁瑣的studio操作

    android 實(shí)現(xiàn)本地一鍵打包,告別繁瑣的studio操作

    在實(shí)際開發(fā)項(xiàng)目中,我們的工程目錄往往是多個(gè)app在一個(gè)工程下的,每次打包都需要手動(dòng)的用studio點(diǎn)擊Build-Generate Signed Bundle or APK-APK 選擇app,簽名等,甚至有的app簽名還不一樣,還需要手動(dòng)的來(lái)回切換,非常麻煩。所以,我就考慮采用多渠道打包+shell腳本的方式,來(lái)實(shí)現(xiàn)一行

    2024年02月10日
    瀏覽(28)
  • Android Studio實(shí)現(xiàn)簡(jiǎn)單ListView

    Android Studio實(shí)現(xiàn)簡(jiǎn)單ListView

    效果圖 MainActivity PartBean 建議重新建一個(gè)軟件包 PartAdapter 適配器 建議重新建一個(gè)適配器包 activity_main.xml 頂部標(biāo)題和 ListView pat_manger_item ListView中數(shù)據(jù)的展示格式

    2024年02月13日
    瀏覽(21)
  • Android開發(fā)之視頻播放器

    Android開發(fā)之視頻播放器

    今天教大家做一個(gè)簡(jiǎn)單的視頻播放器hh 至此,結(jié)束!

    2023年04月09日
    瀏覽(29)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包