package com.weikou.beibeivideo.ui.media;
|
|
import android.content.BroadcastReceiver;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.content.IntentFilter;
|
import android.content.res.Configuration;
|
import android.graphics.Bitmap;
|
import android.graphics.BitmapFactory;
|
import android.graphics.drawable.BitmapDrawable;
|
import android.media.AudioManager;
|
import android.net.wifi.WifiInfo;
|
import android.net.wifi.WifiManager;
|
import android.util.AttributeSet;
|
import android.view.View;
|
import android.view.View.OnClickListener;
|
import android.view.ViewGroup;
|
import android.widget.FrameLayout;
|
import android.widget.ImageButton;
|
import android.widget.ImageView;
|
import android.widget.RelativeLayout;
|
import android.widget.SeekBar;
|
import android.widget.TextView;
|
|
import com.lcjian.library.util.common.DateUtils;
|
import com.lcjian.library.videocomponents.MediaController;
|
import com.yeshi.buwanshequ.R;
|
|
public class BeibeiMediaController extends MediaController implements
|
OnClickListener {
|
|
private ImageButton mPrevButton;
|
|
private RelativeLayout rl_controller_top;
|
private ImageButton back;
|
/**
|
* 进度条
|
*/
|
private SeekBar progress;
|
/**
|
* 锁屏按钮
|
*/
|
// private ImageButton lock;
|
/**
|
* 暂停按钮
|
*/
|
public ImageView pause;
|
/**
|
* 点击锁定按钮的次数
|
*/
|
public static int touchNum = 0;
|
private TextView title, from;
|
private TextView definition;
|
public ImageButton favourite;
|
private ImageButton offline;
|
private ImageButton share;
|
private ImageButton choose_ep;
|
private TextView current_time;
|
private ImageView next;
|
private ImageView volume;
|
private ImageView wifi, power_clock;
|
public static ImageView mVolume;
|
private ImageButton full_screen;
|
|
private Runnable mClockUpdater = new Runnable() {
|
@Override
|
public void run() {
|
current_time.setText(DateUtils.convertDateToStr(DateUtils.now(),
|
"HH:mm"));
|
current_time.postDelayed(this, 1000);
|
}
|
};
|
|
private BroadcastReceiver mBatteryBroadcastReceiver = new BroadcastReceiver() {
|
|
@Override
|
public void onReceive(Context context, Intent intent) {
|
if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)) {
|
int level = intent.getIntExtra("level", 0);
|
int scale = intent.getIntExtra("scale", 100);
|
int curPower = (level * 100 / scale) / 10;
|
if (curPower < 1) {
|
curPower = 1;
|
}
|
if (curPower > 10) {
|
curPower = 10;
|
}
|
int drawable = getResources().getIdentifier("power" + curPower,
|
"drawable", context.getPackageName());
|
// power_clock.setCompoundDrawablesWithIntrinsicBounds(0,
|
// drawable, 0, 0);
|
power_clock.setImageResource(drawable);
|
}
|
WifiManager wifiManager = (WifiManager) context.getSystemService(context.WIFI_SERVICE);
|
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
|
if (wifiInfo.getBSSID() != null) {
|
//wifi名称
|
String ssid = wifiInfo.getSSID();
|
//wifi信号强度
|
int signalLevel = WifiManager.calculateSignalLevel(wifiInfo.getRssi(), 5);
|
//wifi速度
|
int speed = wifiInfo.getLinkSpeed();
|
//wifi速度单位
|
String units = WifiInfo.LINK_SPEED_UNITS;
|
System.out.println("ssid=" + ssid + ",signalLevel=" + signalLevel + ",speed=" + speed + ",units=" + units);
|
switch (signalLevel) {
|
case 0:
|
wifi.setImageResource(R.drawable.wifi1);
|
break;
|
case 1:
|
wifi.setImageResource(R.drawable.wifi1);
|
break;
|
case 2:
|
wifi.setImageResource(R.drawable.wifi2);
|
break;
|
case 3:
|
wifi.setImageResource(R.drawable.wifi3);
|
break;
|
case 4:
|
wifi.setImageResource(R.drawable.wifi4);
|
break;
|
case 5:
|
wifi.setImageResource(R.drawable.wifi4);
|
break;
|
}
|
}
|
}
|
};
|
private int mLastVolume;
|
|
public BeibeiMediaController(Context context) {
|
super(context);
|
}
|
|
public BeibeiMediaController(Context context, AttributeSet attrs) {
|
super(context, attrs);
|
}
|
|
public BeibeiMediaController(Context context, AttributeSet attrs,
|
int defStyle) {
|
super(context, attrs, defStyle);
|
}
|
|
@Override
|
protected void init() {
|
super.init();
|
pause = (ImageView) findViewById(R.id.pause);
|
progress = (SeekBar) findViewById(R.id.mediacontroller_progress);
|
vDefinitionSelector = (ViewGroup) findViewById(R.id.linearlay_select_definition);
|
// lock = (ImageButton) findViewById(R.id.media_ib_lock);
|
mPrevButton = (ImageButton) findViewById(R.id.prev);
|
fl_advertisement = (FrameLayout) findViewById(R.id.fl_advertisement);
|
rl_controller_top = (RelativeLayout) findViewById(R.id.rl_controller_top);
|
back = (ImageButton) findViewById(R.id.back);
|
title = (TextView) findViewById(R.id.title);
|
from = (TextView) findViewById(R.id.from);
|
definition = (TextView) findViewById(R.id.btn_definition);
|
favourite = (ImageButton) findViewById(R.id.favourite);
|
offline = (ImageButton) findViewById(R.id.offline);
|
share = (ImageButton) findViewById(R.id.share);
|
choose_ep = (ImageButton) findViewById(R.id.choose_ep);
|
power_clock = (ImageView) findViewById(R.id.power_clock);
|
wifi = (ImageView) findViewById(R.id.iv_wifi);
|
current_time = (TextView) findViewById(R.id.tv_current_time);
|
next = (ImageView) findViewById(R.id.next);
|
volume = (ImageView) findViewById(R.id.volume);
|
mVolume = volume;
|
full_screen = (ImageButton) findViewById(R.id.full_screen);
|
|
// try {
|
// int cur = PPTVSdkMgr.getInstance().getCurrentFt();
|
// if (cur == 1) {
|
// definition.setText("高清");
|
// } else if (cur == 2) {
|
// definition.setText("超清");
|
// } else if (cur == 3) {
|
// definition.setText("蓝光");
|
// } else {
|
// definition.setText("普清");
|
// }
|
// } catch (Exception e) {
|
// e.printStackTrace();
|
// }
|
|
back.setOnClickListener(this);
|
next.setOnClickListener(this);
|
pause.setOnClickListener(this);
|
definition.setOnClickListener(this);
|
volume.setOnClickListener(this);
|
// lock.setOnClickListener(this);
|
favourite.setOnClickListener(this);
|
offline.setOnClickListener(this);
|
share.setOnClickListener(this);
|
choose_ep.setOnClickListener(this);
|
volume.setOnClickListener(this);
|
full_screen.setOnClickListener(this);
|
}
|
|
@Override
|
protected void onAttachedToWindow() {
|
super.onAttachedToWindow();
|
getContext().registerReceiver(mBatteryBroadcastReceiver,
|
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
}
|
|
|
@Override
|
protected void onDetachedFromWindow() {
|
super.onDetachedFromWindow();
|
getContext().unregisterReceiver(mBatteryBroadcastReceiver);
|
}
|
|
@Override
|
public void onClick(View v) {
|
switch (v.getId()) {
|
case R.id.full_screen: {
|
if (mCallback != null) {
|
mCallback.onFullScreenClick();
|
}
|
}
|
break;
|
case R.id.choose_ep: {
|
if (mCallback != null) {
|
mCallback.onChooseEpClick();
|
}
|
}
|
break;
|
case R.id.share: {
|
if (mCallback != null) {
|
mCallback.onShareClick();
|
}
|
}
|
break;
|
case R.id.volume: {
|
// if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT && android.os.Build.BRAND.contains("HuaWei")) {
|
// Log.i("mResult", "当前手机是:--HuaWei 4.4系统");
|
// return;
|
// }
|
try {
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
AudioManager audioManager = (AudioManager) getContext()
|
.getSystemService(Context.AUDIO_SERVICE);
|
if (audioManager.getStreamVolume(AudioManager.STREAM_MUSIC) > 0) {
|
mLastVolume = audioManager
|
.getStreamVolume(AudioManager.STREAM_MUSIC);
|
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0);
|
setVolumeness(0);
|
} else {
|
int requestVolume;
|
if (mLastVolume == 0) {
|
requestVolume = 2;
|
} else {
|
requestVolume = mLastVolume;
|
}
|
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
|
requestVolume, 0);
|
setVolumeness(requestVolume);
|
}
|
}
|
break;
|
case R.id.back: {
|
if (mCallback != null) {
|
mCallback.onBackClick();
|
}
|
}
|
break;
|
case R.id.favourite: {
|
if (mCallback != null) {
|
mCallback.onFavouriteClick();
|
}
|
}
|
break;
|
case R.id.offline: {
|
if (mCallback != null) {
|
mCallback.onOfflineClick();
|
}
|
}
|
case R.id.btn_definition: {
|
if (mCallback != null) {
|
mCallback.onDefinition();
|
}
|
}
|
break;
|
case R.id.next: {
|
if (mCallback != null) {
|
mCallback.onNext();
|
}
|
}
|
break;
|
// case R.id.media_ib_lock:// 锁屏
|
// if (mCallback != null) {
|
// mCallback.onLock();
|
// }
|
// touchNum++;
|
// // 点击第一次,由解锁变为锁定
|
// if (touchNum % 2 == 0) {// 点击双数 解锁
|
// showView(false);
|
// } else if (touchNum % 2 == 1) {// 点击单数 锁屏
|
// showView(true);
|
// }
|
// break;
|
}
|
}
|
|
/**
|
* 根据是否锁定来显示
|
*/
|
private void showView(boolean isLock) {
|
// TODO lock logic
|
if (isLock) {// 如果锁定
|
progress.setEnabled(false);
|
// lock.setImageResource(R.drawable.ic_locked);
|
back.setEnabled(false);
|
isVisibility(View.GONE);
|
} else {// 如果解锁
|
progress.setEnabled(true);
|
// lock.setImageResource(R.drawable.ic_unlocked);
|
back.setEnabled(true);
|
isVisibility(View.VISIBLE);
|
}
|
}
|
|
/**
|
* 根据传入参数决定View的状态
|
*/
|
private void isVisibility(int visibility) {
|
pause.setVisibility(visibility);
|
offline.setVisibility(visibility);
|
volume.setVisibility(visibility);
|
next.setVisibility(visibility);
|
choose_ep.setVisibility(visibility);
|
share.setVisibility(visibility);
|
favourite.setVisibility(visibility);
|
}
|
|
@Override
|
public void setVisibility(int visibility) {
|
super.setVisibility(visibility);
|
if (visibility == View.VISIBLE) {
|
power_clock.post(mClockUpdater);
|
} else {
|
power_clock.removeCallbacks(mClockUpdater);
|
}
|
}
|
|
@Override
|
public void setPrevNextListeners(OnClickListener next, OnClickListener prev) {
|
super.setPrevNextListeners(next, prev);
|
if (mPrevButton != null) {
|
mPrevButton.setVisibility(View.INVISIBLE);
|
}
|
}
|
|
@SuppressWarnings("deprecation")
|
public void onConfigurationChanged(Configuration newConfig) {
|
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
|
if (touchNum % 2 == 0) {// 如果是解锁状态
|
favourite.setVisibility(View.VISIBLE);
|
if (mIsCanSave) {
|
offline.setVisibility(View.VISIBLE);
|
} else {
|
offline.setVisibility(View.GONE);
|
}
|
choose_ep.setVisibility(View.VISIBLE);
|
power_clock.setVisibility(View.VISIBLE);
|
volume.setVisibility(View.VISIBLE);
|
next.setVisibility(View.VISIBLE);
|
}
|
full_screen.setVisibility(View.GONE);
|
// lock.setVisibility(View.VISIBLE);
|
Bitmap mBgBitmap = null;
|
try {
|
rl_controller_top.setBackgroundResource(R.drawable.dim_bg);
|
} catch (Exception e) {
|
// rl_controller_top.setBackgroundDrawable(getResources()
|
// .getDrawable(R.drawable.dim_bg));
|
mBgBitmap = BitmapFactory.decodeResource(getResources(),
|
R.drawable.dim_bg);
|
rl_controller_top.setBackgroundDrawable(new BitmapDrawable(
|
mBgBitmap));
|
} catch (OutOfMemoryError error) {
|
|
} finally {
|
if (mBgBitmap != null && !mBgBitmap.isRecycled()) {
|
mBgBitmap.recycle();
|
mBgBitmap = null;
|
}
|
}
|
if (fl_advertisement != null)
|
fl_advertisement.setVisibility(View.VISIBLE);
|
|
} else {
|
// lock.setVisibility(View.GONE);
|
favourite.setVisibility(View.GONE);
|
offline.setVisibility(View.GONE);
|
choose_ep.setVisibility(View.GONE);
|
power_clock.setVisibility(View.GONE);
|
next.setVisibility(View.VISIBLE);
|
volume.setVisibility(View.GONE);
|
full_screen.setVisibility(View.GONE);
|
try {
|
rl_controller_top.setBackgroundResource(0);
|
} catch (Exception e) {
|
rl_controller_top.setBackgroundDrawable(null);
|
}
|
if (fl_advertisement != null)
|
fl_advertisement.setVisibility(View.INVISIBLE);
|
}
|
}
|
|
public void setTitle(CharSequence titleCs) {
|
title.setText(titleCs);
|
}
|
|
public void setFrom(CharSequence fromCs) {
|
from.setText(fromCs);
|
}
|
|
public void setOfflined(boolean offlined) {
|
if (offlined) {
|
offline.setImageResource(R.drawable.ic_offline_two_highlight);
|
} else {
|
offline.setImageResource(R.drawable.selector_offline_two);
|
}
|
}
|
|
public void setFavourited(boolean favourited) {
|
if (favourited) {
|
favourite.setImageResource(R.drawable.ic_favourite_two_highlight);
|
} else {
|
favourite.setImageResource(R.drawable.selector_favourite_two);
|
}
|
}
|
|
public void setVolumeness(int requestVolumeness) {
|
if (requestVolumeness == 0) {
|
volume.setImageResource(R.drawable.ic_media_volume_mute);
|
} else {
|
volume.setImageResource(R.drawable.ic_media_volume);
|
}
|
}
|
|
public void clearAdThread() {
|
// if (mAdView != null) {
|
// mAdView.clearThread();
|
// }
|
}
|
|
private MediaControllerCallback mCallback;
|
|
public MediaControllerCallback getCallback() {
|
return mCallback;
|
}
|
|
public void setCallback(MediaControllerCallback callback) {
|
this.mCallback = callback;
|
}
|
|
public interface MediaControllerCallback {
|
|
public void onFullScreenClick();
|
|
public void onChooseEpClick();
|
|
public void onShareClick();
|
|
public void onBackClick();
|
|
public void onFavouriteClick();
|
|
public void onOfflineClick();
|
|
public void onDefinition();
|
|
public void onNext();
|
|
public void onSeek();
|
|
/**
|
* 锁屏
|
*/
|
// public void onLock();
|
}
|
|
public FrameLayout fl_advertisement;
|
|
public FrameLayout getFlAd() {
|
|
return fl_advertisement;
|
}
|
|
private ViewGroup vDefinitionSelector;
|
|
|
private String getStr(int i) {
|
String str = "";
|
if (i == 0) {
|
str = "普清";
|
} else if (i == 1) {
|
str = "高清";
|
} else if (i == 2) {
|
str = "超清";
|
} else if (i == 3) {
|
str = "蓝光";
|
}
|
return str;
|
}
|
|
private void onDefinitionVisibility() {
|
if (vDefinitionSelector.getVisibility() == VISIBLE) {
|
vDefinitionSelector.setVisibility(View.GONE);
|
} else {
|
vDefinitionSelector.setVisibility(View.VISIBLE);
|
}
|
}
|
|
/**
|
* 是否可以缓存,如果可以缓存,缓存按钮显示,否则隐藏
|
*
|
* @param isCanSave
|
*/
|
boolean mIsCanSave = true;
|
|
public void isCansave(boolean isCanSave) {
|
mIsCanSave = isCanSave;
|
}
|
}
|