liuzhenxing1118 преди 1 година
родител
ревизия
6dee37f0d2

+ 7 - 0
app/src/main/java/com/xplora/xpchat/activity/BaseActivity.java

@@ -32,9 +32,16 @@ public class BaseActivity extends Activity {
         initView();
     }
 
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        onDestroyBase();
+    }
+
     protected void onCreateBase() { }
     protected void initData() { }
     protected void initView() { }
+    protected void onDestroyBase() { }
 
     private void setFullView() {
         this.requestWindowFeature(Window.FEATURE_NO_TITLE);

+ 106 - 0
app/src/main/java/com/xplora/xpchat/activity/BaseNetworkActivity.java

@@ -0,0 +1,106 @@
+package com.xplora.xpchat.activity;
+
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.provider.Settings;
+import android.util.Log;
+import androidx.annotation.NonNull;
+
+import com.xplora.xpchat.R;
+import com.xplora.xpchat.fragment.NetworkProblemFragment;
+import com.xplora.xpchat.utils.Constant;
+
+
+
+public class BaseNetworkActivity extends BaseActivity {
+    private NetworkStatusObserver mNetworkStatusObserver = null;
+    public static final String NETWORK_STATUS = "network_status";
+
+    @Override
+    protected void onCreateBase() {
+        super.onCreateBase();
+        //判断是否需要弹窗提示网络问题
+        checkNetworkProblem();
+        //监听网络字段
+        registerNetworkStatus();
+    }
+
+    private void checkNetworkProblem() {
+        if (getNetworkStatus() >= 1)
+            return;
+        showNetworkProblemView();
+    }
+
+    private void registerNetworkStatus() {
+        mNetworkStatusObserver = new NetworkStatusObserver(mHandler);
+        getContentResolver().registerContentObserver(
+                Settings.Global.getUriFor(NETWORK_STATUS), false, mNetworkStatusObserver);
+    }
+
+    public int getNetworkStatus() {
+        return Settings.Global.getInt(this.getContentResolver(), NETWORK_STATUS, 1);
+    }
+
+    void showNetworkProblemView() {
+        NetworkProblemFragment fragment = NetworkProblemFragment.newInstance(this);
+        fragment.show(this.getFragmentManager(), Constant.PACKAGE_NAME);
+    }
+
+    void showNetworkProblemToast() {
+        toast(getString(R.string.network_problem));
+    }
+
+    void onNetworkProblemChange(int status) {
+
+    }
+
+    @Override
+    protected void onDestroyBase() {
+        super.onDestroyBase();
+        if (mNetworkStatusObserver != null) {
+            getContentResolver().unregisterContentObserver(mNetworkStatusObserver);
+        }
+        mNetworkStatusObserver = null;
+    }
+
+    Handler mHandler = new Handler(Looper.myLooper()) {
+        @Override
+        public void handleMessage(@NonNull Message msg) {
+            super.handleMessage(msg);
+
+            if (msg.what == 10010) {
+                int status = getNetworkStatus();
+                onNetworkProblemChange(status);
+            }
+        }
+    };
+
+
+
+    public class NetworkStatusObserver extends ContentObserver {
+        private Handler mObserverHandler = null;
+        public NetworkStatusObserver(Handler handler) {
+            super(handler);
+            mObserverHandler = handler;
+        }
+
+        @Override
+        public void onChange(boolean selfChange, Uri uri) {
+            Log.d(TAG, "onChange :" + uri);
+            super.onChange(selfChange, uri);
+
+            if (uri == null)
+                return;
+
+            mObserverHandler.postDelayed(new Runnable() {
+                @Override
+                public void run() {
+                    mObserverHandler.sendEmptyMessage(10010);
+                }
+            }, 10);
+        }
+    }
+}

+ 2 - 1
app/src/main/java/com/xplora/xpchat/activity/PagerActivity.java

@@ -61,7 +61,7 @@ import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 
-public class PagerActivity extends BaseActivity implements Listener.PlayListener, Listener.RecordStateListener, Listener.ItemClickListener, Listener.ListViewListener, Listener.RecordBtnListener, Listener.ClickButtonListener, Listener.PresetTextListener{
+public class PagerActivity extends BaseNetworkActivity implements Listener.PlayListener, Listener.RecordStateListener, Listener.ItemClickListener, Listener.ListViewListener, Listener.RecordBtnListener, Listener.ClickButtonListener, Listener.PresetTextListener{
     private BaseViewPager mViewPager = null;
     private LinearLayout mViewPagerDots = null;
     private MediaPlayerUtils mPlayManager = null;
@@ -93,6 +93,7 @@ public class PagerActivity extends BaseActivity implements Listener.PlayListener
 
     @Override
     protected void onCreateBase() {
+        super.onCreateBase();
         Log.d(TAG, "onCreateBase: ");
         setContentView(R.layout.activity_viewpager);
     }

+ 48 - 0
app/src/main/java/com/xplora/xpchat/fragment/NetworkProblemFragment.java

@@ -0,0 +1,48 @@
+package com.xplora.xpchat.fragment;
+
+import android.app.DialogFragment;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.Window;
+import android.widget.Button;
+import android.widget.ImageButton;
+import android.widget.TextView;
+
+import com.xplora.xpchat.R;
+import com.xplora.xpchat.model.MessageBean;
+import com.xplora.xpchat.observer.Listener;
+
+public class NetworkProblemFragment extends DialogFragment {
+    public static NetworkProblemFragment newInstance(Context context) {
+        NetworkProblemFragment fragment = new NetworkProblemFragment();
+        return fragment;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        getDialog().getWindow().requestFeature(Window.FEATURE_SWIPE_TO_DISMISS);
+        View rootView = inflater.inflate(R.layout.fragment_network_problem, container, false);
+        ImageButton closeBtn = (ImageButton)rootView.findViewById(R.id.mCloseBtn);
+
+        closeBtn.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                remove();
+            }
+        });
+        return rootView;
+    }
+
+    private void remove() {
+        dismissAllowingStateLoss();
+    }
+}

BIN
app/src/main/res/drawable-xhdpi/icon_network_problem.png


+ 64 - 0
app/src/main/res/layout/fragment_network_problem.xml

@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/black"
+    >
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:gravity="center_horizontal"
+        >
+
+        <ImageView
+            android:layout_width="108dp"
+            android:layout_height="85dp"
+            android:layout_marginTop="35dp"
+            android:background="@drawable/icon_network_problem"
+            />
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="5dp"
+            android:layout_marginEnd="5dp"
+            android:textAlignment="center"
+            android:textStyle="bold"
+            android:textSize="15sp"
+            android:textColor="@color/white"
+            android:text="@string/network_problem"
+            />
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="5dp"
+            android:layout_marginEnd="5dp"
+            android:textAlignment="center"
+            android:textSize="11sp"
+            android:textColor="@color/white"
+            android:text="@string/network_problem_content"
+            />
+    </LinearLayout>
+
+    <RelativeLayout
+        android:id="@+id/mButtonLayout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        >
+
+        <ImageButton
+            android:id="@+id/mCloseBtn"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="10dp"
+            android:layout_marginEnd="10dp"
+            android:layout_alignParentEnd="true"
+            android:background="@drawable/action_close"
+            />
+    </RelativeLayout>
+
+</RelativeLayout>

+ 3 - 0
app/src/main/res/values/strings.xml

@@ -31,4 +31,7 @@
 
     <string name="no_file">File not found</string>
     <string name="forward_to">Forward to...</string>
+
+    <string name="network_problem">Network Problem</string>
+    <string name="network_problem_content">It looks like you’re in an area with a weak network signal.</string>
 </resources>