android直播播放器(整合阿里雲基礎播放器)
1.播放器初建:
先在application中需先初始化阿里雲的直播播放器
AliVcMediaPlayer.init(getApplicationContext());
在activity中實列化播放器,需要先例項化一個surfacceview
mPlayer = new AliVcMediaPlayer(this, mSurfaceView); if(mPlayer != null){ mPlayer.prepareAndPlay(mUrl);} mPlayer.play(); mSurfaceView.setOnClickListener(newmClickListener()); }
2.播放器全屏:
播放器全屏的設定涉及到android的橫豎屏的問題,即在進入全屏模式的時候需要android的螢幕為橫屏模式,在同一個activity中進行橫豎屏轉換的時候會進行activity的過載,如果是做視訊播放器的話需要記錄當前播放進度。也可通過在activity的節點加入
android:configChanges="keyboardHidden|orientation|screenSize"不讓activity過載
接下來就是一些隱藏狀態列,導航的欄的事。
我在全屏中設定了一個rativelayout的surfaceview的父佈局,通過設定父佈局,surfaceview的屬性為much_parent來控制播放器的大小布局。
設定rativelayout大小的方法為:
RelativeLayout ss = (RelativeLayout) findViewById(R.id.rl_1);
ss.setLayoutParams(new RelativeLayout.LayoutParams(mScreenHeight,mScreenWidth));
其中在獲得手機螢幕大小網上說了很多種方法都沒有講導航欄的高度算進去,不是手機的真是高度,是因為谷歌原來的導航欄和狀態列是不支援定製的,後面出現可定製以後方法比較混亂 然後在17以後出標準的獲取手機真實寬度和高度的方法:
Context context = getApplicationContext(); DisplayMetrics dm = new DisplayMetrics(); WindowManager windowMgr = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE); windowMgr.getDefaultDisplay().getRealMetrics(dm); int mScreenHeight = dm.heightPixels; int mScreenWidth = dm.widthPixels;
3.設定單擊事件 出現控制組件
通過建立一個執行緒隱藏元件,當點選事件發生以後 ,hander.removeCallbacks(執行緒) 移除執行緒 顯示元件 然後設定一個延遲啟動執行緒再次隱藏元件
Handler.postDelayed(執行緒,延遲時間(毫秒,int))