您的位置:首页 > 理论基础 > 计算机网络

安卓Andriod使用入门(十九)【网络视频播放器】

2016-11-20 22:54 288 查看

有时侯明白人的一生当中,深刻的思念是维系自己与记忆的纽带。它维系着所有的过往、悲喜,亦指引我们深入茫茫命途。这是我们宿命的背负。但我始终甘之如饴地承受它的沉沉重量,用以平衡轻浮的生。

MainActivity.java代码:

package siso.supervideoplayer;

import android.content.pm.ActivityInfo;
import android.content.res.Configuration;

import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;

import siso.videoplayerlib.util.DensityUtil;
import siso.videoplayerlib.view.MediaController;
import siso.videoplayerlib.view.SuperVideoPlayer;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private SuperVideoPlayer mSuperVideoPlayer;
private View mPlayBtnView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSuperVideoPlayer = (SuperVideoPlayer) findViewById(R.id.video_player_item_1);
mPlayBtnView = findViewById(R.id.play_btn);
mPlayBtnView.setOnClickListener(this);
mSuperVideoPlayer.setVideoPlayCallback(mVideoPlayCallback);
}

/**
* 播放器的回调函数
*/
private SuperVideoPlayer.VideoPlayCallbackImpl mVideoPlayCallback = new SuperVideoPlayer.VideoPlayCallbackImpl() {
/**
* 播放器关闭按钮回调
*/
@Override
public void onCloseVideo() {
mSuperVideoPlayer.close();//关闭VideoView
mPlayBtnView.setVisibility(View.VISIBLE);
mSuperVideoPlayer.setVisibility(View.GONE);
resetPageToPortrait();
}

/**
* 播放器横竖屏切换回调
*/
@Override
public void onSwitchPageType() {
if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
mSuperVideoPlayer.setPageType(MediaController.PageType.SHRINK);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
mSuperVideoPlayer.setPageType(MediaController.PageType.EXPAND);
}
}

/**
* 播放完成回调
*/
@Override
public void onPlayFinish() {

}
};

@Override
public void onClick(View view) {
mPlayBtnView.setVisibility(View.GONE);
mSuperVideoPlayer.setVisibility(View.VISIBLE);
mSuperVideoPlayer.setAutoHideController(false);
Uri uri = Uri.parse("http://v.cctv.com/flash/mp4video6/TMS/2011/01/05/cf752b1c12ce452b3040cab2f90bc265_h264818000nero_aac32-1.mp4");
mSuperVideoPlayer.loadAndPlay(uri,0);
}

/***
* 旋转屏幕之后回调
*
* @param newConfig newConfig
*/
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (null == mSuperVideoPlayer) return;
/***
* 根据屏幕方向重新设置播放器的大小
*/
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().getDecorView().invalidate();
float height = DensityUtil.getWidthInPx(this);
float width = DensityUtil.getHeightInPx(this);
mSuperVideoPlayer.getLayoutParams().height = (int) width;
mSuperVideoPlayer.getLayoutParams().width = (int) height;
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
final WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setAttributes(attrs);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
float width = DensityUtil.getWidthInPx(this);
float height = DensityUtil.dip2px(this, 200.f);
mSuperVideoPlayer.getLayoutParams().height = (int) height;
mSuperVideoPlayer.getLayoutParams().width = (int) width;
}
}

/***
* 恢复屏幕至竖屏
*/
private void resetPageToPortrait() {
if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
mSuperVideoPlayer.setPageType(MediaController.PageType.SHRINK);
}
}

}


activity_main.xml内容:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:background="@android:color/white"
android:orientation="vertical">

<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/holo_blue_light"
android:minHeight="200dp">

<ImageView
android:id="@+id/play_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/biz_video_list_play_icon_big"/>

<siso.videoplayerlib.view.SuperVideoPlayer
android:id="@+id/video_player_item_1"
android:layout_width="match_parent"
android:layout_height="200dp"
android:visibility="gone">
</siso.videoplayerlib.view.SuperVideoPlayer>

</FrameLayout>

</LinearLayout>


AndroidManifest.xml:

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

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

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

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

</manifest>


videoplayerlib库项目结构:



项目运行结果如图:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: