1. 程式人生 > >第一個android ijkplayer播放器

第一個android ijkplayer播放器

建立一個ijkplayer的播放器專案,需要三步設定:

一、在activity_main.xml中新增播放器標籤

    <com.smallart.myapplication.media.IjkVideoView
        android:id="@+id/video_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

二、在MainActivity.java中新增播放控制

package com.smallart.myapplication;

import android.media.MediaPlayer;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;


import com.smallart.myapplication.media.IRenderView;
import com.smallart.myapplication.media.IjkVideoView;
import com.smallart.myapplication.media.PlayerManager;

import tv.danmaku.ijk.media.player.IMediaPlayer;
import tv.danmaku.ijk.media.player.IjkMediaPlayer;

public class MainActivity extends AppCompatActivity { private IjkVideoView mVideoView; private PlayerManager player; private String url5 = "http://stream1.grtn.cn/tvs2/sd/live.m3u8?_ts&time=1518428696629"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initVideo(); mVideoView
= (IjkVideoView) findViewById(R.id.video_view); /** 普通播放 start **/ mVideoView.setAspectRatio(IRenderView.AR_ASPECT_FIT_PARENT); mVideoView.setVideoURI(Uri.parse(url5)); mVideoView.start(); /** 普通播放 end **/ } /** * 可左半屏滑動控制亮度 右半屏控制音量 雙擊切換比例 (無提示)
*/ private void initVideo() { player = new PlayerManager(this); player.setFullScreenOnly(true); player.live(true); player.setScaleType(PlayerManager.SCALETYPE_WRAPCONTENT); player.playInFullScreen(true); player.setPlayerStateListener(new PlayerManager.PlayerStateListener() { @Override public void onComplete() { Log.e(" player status :", "complete"); } @Override public void onError() { Log.e(" player status :", "error"); } @Override public void onLoading() { Log.e(" player status :", "loading"); } @Override public void onPlay() { Log.e(" player status :", "play"); } }); player.play(url5); IjkVideoView videoView = player.getVideoView(); videoView.setOnInfoListener(new IMediaPlayer.OnInfoListener() { @Override public boolean onInfo(IMediaPlayer iMediaPlayer, int i, int i1) { switch (i) { case MediaPlayer.MEDIA_INFO_BUFFERING_START: break; case MediaPlayer.MEDIA_INFO_BUFFERING_END: case MediaPlayer.MEDIA_INFO_VIDEO_TRACK_LAGGING: break; } return false; } }); } }

三、在AndroidManifest.xml檔案中設定許可權

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.smallart.myapplication">

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

    <uses-feature android:name="android.hardware.nfc.hce" />

    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="org.simalliance.openmobileapi.SMARTCARD" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <!-- 銀聯相關end -->
    <!-- 震動許可權 -->
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <!-- shareSDK start -->
    <!-- <uses-permission android:name="android.permission.READ_CONTACTS" /> -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- <uses-permission android:name="android.permission.RECEIVE_SMS" /> -->
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <!-- shareSDK end -->
    <!-- 百度地圖start -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.BROADCAST_STICKY" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <!-- 百度地圖end -->
    <!-- shareSDK start -->
    <!-- 藍芽分享所需的許可權 -->
    <!--
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    -->
    <!-- shareSDK end -->


    <!-- 電話服務新增 -->
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <!-- Ping++ 支付 -->
    <!--
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    -->


    <!-- 【必須】 信鴿SDK所需許可權 -->
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.RESTART_PACKAGES" />
    <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
    <uses-permission android:name="android.permission.READ_LOGS" />

    <application
        android:configChanges="orientation|keyboardHidden"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity"
            android:screenOrientation="sensorLandscape"
            android:configChanges="orientation|keyboardHidden">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>