From caedb3a52b4aeeab45184ac0abffacbad1b909b8 Mon Sep 17 00:00:00 2001 From: shuyu <359369982@qq.com> Date: Thu, 1 Dec 2016 16:46:49 +0800 Subject: [PATCH] =?UTF-8?q?1.3.6=20init=20=E6=B2=A1=E6=9C=89=E7=BD=91?= =?UTF-8?q?=E7=BB=9C=E7=9A=84=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/gsyvideoplayer/DetailPlayer.java | 2 +- .../gsyvideoplayer/utils/NetworkUtils.java | 241 ++++++++++++++++++ .../video/StandardGSYVideoPlayer.java | 6 + .../src/main/res/values/strings.xml | 1 + 4 files changed, 249 insertions(+), 1 deletion(-) create mode 100644 gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/utils/NetworkUtils.java diff --git a/app/src/main/java/com/example/gsyvideoplayer/DetailPlayer.java b/app/src/main/java/com/example/gsyvideoplayer/DetailPlayer.java index daeecbd..bdbcd16 100644 --- a/app/src/main/java/com/example/gsyvideoplayer/DetailPlayer.java +++ b/app/src/main/java/com/example/gsyvideoplayer/DetailPlayer.java @@ -40,7 +40,7 @@ public class DetailPlayer extends FragmentActivity { ButterKnife.bind(this); String url = "http://baobab.wdjcdn.com/14564977406580.mp4"; - detailPlayer.setUp(url, true, ""); + detailPlayer.setUp(url, true, null, "测试视频"); //增加封面 ImageView imageView = new ImageView(this); diff --git a/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/utils/NetworkUtils.java b/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/utils/NetworkUtils.java new file mode 100644 index 0000000..1424cf8 --- /dev/null +++ b/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/utils/NetworkUtils.java @@ -0,0 +1,241 @@ +package com.shuyu.gsyvideoplayer.utils; + +/** + * Created by shuyu on 2016/8/10. + * + *
+ *     author: Blankj
+ *     blog  : http://blankj.com
+ *     time  : 2016/8/2
+ * 
+ * + */ + +import android.content.Context; +import android.content.Intent; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.telephony.TelephonyManager; + +public class NetworkUtils { + + private NetworkUtils() { + } + + public static final int NETWORK_WIFI = 1; // wifi network + public static final int NETWORK_4G = 4; // "4G" networks + public static final int NETWORK_3G = 3; // "3G" networks + public static final int NETWORK_2G = 2; // "2G" networks + public static final int NETWORK_UNKNOWN = 5; // unknown network + public static final int NETWORK_NO = -1; // no network + + private static final int NETWORK_TYPE_GSM = 16; + private static final int NETWORK_TYPE_TD_SCDMA = 17; + private static final int NETWORK_TYPE_IWLAN = 18; + + /** + * 打开网络设置界面 + *

3.0以下打开设置界面

+ * + * @param context 上下文 + */ + public static void openWirelessSettings(Context context) { + if (android.os.Build.VERSION.SDK_INT > 10) { + context.startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS)); + } else { + context.startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS)); + } + } + + /** + * 获取活动网路信息 + * + * @param context 上下文 + * @return NetworkInfo + */ + private static NetworkInfo getActiveNetworkInfo(Context context) { + ConnectivityManager cm = (ConnectivityManager) context + .getSystemService(Context.CONNECTIVITY_SERVICE); + return cm.getActiveNetworkInfo(); + } + + /** + * 判断网络是否可用 + *

需添加权限 android.permission.ACCESS_NETWORK_STATE

+ */ + public static boolean isAvailable(Context context) { + NetworkInfo info = getActiveNetworkInfo(context); + return info != null && info.isAvailable(); + } + + /** + * 判断网络是否连接 + *

需添加权限 android.permission.ACCESS_NETWORK_STATE

+ * + * @param context 上下文 + * @return true: 是
false: 否 + */ + public static boolean isConnected(Context context) { + NetworkInfo info = getActiveNetworkInfo(context); + return info != null && info.isConnected(); + } + + /** + * 判断网络是否是4G + *

需添加权限 android.permission.ACCESS_NETWORK_STATE

+ * + * @param context 上下文 + * @return true: 是
false: 不是 + */ + public static boolean is4G(Context context) { + NetworkInfo info = getActiveNetworkInfo(context); + return info != null && info.isAvailable() && info.getSubtype() == TelephonyManager.NETWORK_TYPE_LTE; + } + + /** + * 判断wifi是否连接状态 + *

需添加权限 android.permission.ACCESS_NETWORK_STATE

+ * + * @param context 上下文 + * @return true: 连接
false: 未连接 + */ + public static boolean isWifiConnected(Context context) { + ConnectivityManager cm = (ConnectivityManager) context + .getSystemService(Context.CONNECTIVITY_SERVICE); + return cm != null && cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI; + } + + /** + * 获取移动网络运营商名称 + *

如中国联通、中国移动、中国电信

+ * + * @param context 上下文 + * @return 移动网络运营商名称 + */ + public static String getNetworkOperatorName(Context context) { + TelephonyManager tm = (TelephonyManager) context + .getSystemService(Context.TELEPHONY_SERVICE); + return tm != null ? tm.getNetworkOperatorName() : null; + } + + /** + * 获取移动终端类型 + * + * @param context 上下文 + * @return 手机制式 + * + */ + public static int getPhoneType(Context context) { + TelephonyManager tm = (TelephonyManager) context + .getSystemService(Context.TELEPHONY_SERVICE); + return tm != null ? tm.getPhoneType() : -1; + } + + + /** + * 获取当前的网络类型(WIFI,2G,3G,4G) + *

需添加权限 android.permission.ACCESS_NETWORK_STATE

+ * + * @param context 上下文 + * @return 网络类型 + * + */ + public static int getNetWorkType(Context context) { + int netType = NETWORK_NO; + NetworkInfo info = getActiveNetworkInfo(context); + if (info != null && info.isAvailable()) { + + if (info.getType() == ConnectivityManager.TYPE_WIFI) { + netType = NETWORK_WIFI; + } else if (info.getType() == ConnectivityManager.TYPE_MOBILE) { + switch (info.getSubtype()) { + + case NETWORK_TYPE_GSM: + case TelephonyManager.NETWORK_TYPE_GPRS: + case TelephonyManager.NETWORK_TYPE_CDMA: + case TelephonyManager.NETWORK_TYPE_EDGE: + case TelephonyManager.NETWORK_TYPE_1xRTT: + case TelephonyManager.NETWORK_TYPE_IDEN: + netType = NETWORK_2G; + break; + + case NETWORK_TYPE_TD_SCDMA: + case TelephonyManager.NETWORK_TYPE_EVDO_A: + case TelephonyManager.NETWORK_TYPE_UMTS: + case TelephonyManager.NETWORK_TYPE_EVDO_0: + case TelephonyManager.NETWORK_TYPE_HSDPA: + case TelephonyManager.NETWORK_TYPE_HSUPA: + case TelephonyManager.NETWORK_TYPE_HSPA: + case TelephonyManager.NETWORK_TYPE_EVDO_B: + case TelephonyManager.NETWORK_TYPE_EHRPD: + case TelephonyManager.NETWORK_TYPE_HSPAP: + netType = NETWORK_3G; + break; + + case NETWORK_TYPE_IWLAN: + case TelephonyManager.NETWORK_TYPE_LTE: + netType = NETWORK_4G; + break; + default: + + String subtypeName = info.getSubtypeName(); + if (subtypeName.equalsIgnoreCase("TD-SCDMA") + || subtypeName.equalsIgnoreCase("WCDMA") + || subtypeName.equalsIgnoreCase("CDMA2000")) { + netType = NETWORK_3G; + } else { + netType = NETWORK_UNKNOWN; + } + break; + } + } else { + netType = NETWORK_UNKNOWN; + } + } + return netType; + } + + /** + * 获取当前的网络类型(WIFI,2G,3G,4G) + *

依赖上面的方法

+ * + * @param context 上下文 + * @return 网络类型名称 + * + */ + public static String getNetWorkTypeName(Context context) { + switch (getNetWorkType(context)) { + case NETWORK_WIFI: + return "NETWORK_WIFI"; + case NETWORK_4G: + return "NETWORK_4G"; + case NETWORK_3G: + return "NETWORK_3G"; + case NETWORK_2G: + return "NETWORK_2G"; + case NETWORK_NO: + return "NETWORK_NO"; + default: + return "NETWORK_UNKNOWN"; + } + } +} \ No newline at end of file diff --git a/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/video/StandardGSYVideoPlayer.java b/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/video/StandardGSYVideoPlayer.java index 723864a..3dfb501 100644 --- a/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/video/StandardGSYVideoPlayer.java +++ b/gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/video/StandardGSYVideoPlayer.java @@ -29,6 +29,7 @@ import com.shuyu.gsyvideoplayer.R; import com.shuyu.gsyvideoplayer.listener.StandardVideoAllCallBack; import com.shuyu.gsyvideoplayer.utils.CommonUtil; import com.shuyu.gsyvideoplayer.utils.Debuger; +import com.shuyu.gsyvideoplayer.utils.NetworkUtils; import java.io.File; import java.util.Map; @@ -267,6 +268,10 @@ public class StandardGSYVideoPlayer extends GSYVideoPlayer { @Override public void showWifiDialog() { super.showWifiDialog(); + if (!NetworkUtils.isAvailable(mContext)) { + Toast.makeText(mContext, getResources().getString(R.string.no_net), Toast.LENGTH_LONG).show(); + return; + } AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); builder.setMessage(getResources().getString(R.string.tips_not_wifi)); builder.setPositiveButton(getResources().getString(R.string.tips_not_wifi_confirm), new DialogInterface.OnClickListener() { @@ -802,4 +807,5 @@ public class StandardGSYVideoPlayer extends GSYVideoPlayer { public RelativeLayout getThumbImageViewLayout() { return mThumbImageViewLayout; } + } diff --git a/gsyVideoPlayer/src/main/res/values/strings.xml b/gsyVideoPlayer/src/main/res/values/strings.xml index 61fef09..f4cd5ff 100644 --- a/gsyVideoPlayer/src/main/res/values/strings.xml +++ b/gsyVideoPlayer/src/main/res/values/strings.xml @@ -3,6 +3,7 @@ 您当前正在使用移动网络,继续播放将消耗流量 继续播放 + 当前找不到网络 停止播放 播放地址无效 -- GitLab