diff options
author | Alex Ning <chineseperson5@gmail.com> | 2020-04-30 09:33:52 +0000 |
---|---|---|
committer | Alex Ning <chineseperson5@gmail.com> | 2020-04-30 09:33:52 +0000 |
commit | ac10441d5494db48fd3bb05f4a37e34a5ed38261 (patch) | |
tree | cdf181ca4df886e0b652e7d93a6bb38ca1899bcc /app/src | |
parent | 4678caa92bad919201b53000e8d4100bf253c497 (diff) | |
download | infinity-for-reddit-ac10441d5494db48fd3bb05f4a37e34a5ed38261.tar infinity-for-reddit-ac10441d5494db48fd3bb05f4a37e34a5ed38261.tar.gz infinity-for-reddit-ac10441d5494db48fd3bb05f4a37e34a5ed38261.tar.bz2 infinity-for-reddit-ac10441d5494db48fd3bb05f4a37e34a5ed38261.tar.lz infinity-for-reddit-ac10441d5494db48fd3bb05f4a37e34a5ed38261.tar.xz infinity-for-reddit-ac10441d5494db48fd3bb05f4a37e34a5ed38261.tar.zst infinity-for-reddit-ac10441d5494db48fd3bb05f4a37e34a5ed38261.zip |
Add a BroadcastReceiver to receive network status change and enable or disable video autoplay.
Diffstat (limited to 'app/src')
4 files changed, 55 insertions, 0 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/BroadcastReceiver/NetworkWifiStatusReceiver.java b/app/src/main/java/ml/docilealligator/infinityforreddit/BroadcastReceiver/NetworkWifiStatusReceiver.java new file mode 100644 index 00000000..fb8d3ae4 --- /dev/null +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/BroadcastReceiver/NetworkWifiStatusReceiver.java @@ -0,0 +1,22 @@ +package ml.docilealligator.infinityforreddit.BroadcastReceiver; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +public class NetworkWifiStatusReceiver extends BroadcastReceiver { + private NetworkWifiStatusReceiverListener networkWifiStatusReceiverListener; + + public interface NetworkWifiStatusReceiverListener { + void networkStatusChange(); + } + + public NetworkWifiStatusReceiver(NetworkWifiStatusReceiverListener listener) { + networkWifiStatusReceiverListener = listener; + } + + @Override + public void onReceive(Context context, Intent intent) { + networkWifiStatusReceiverListener.networkStatusChange(); + } +} diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Event/ChangeWifiStatusEvent.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Event/ChangeWifiStatusEvent.java new file mode 100644 index 00000000..2c25b8c9 --- /dev/null +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Event/ChangeWifiStatusEvent.java @@ -0,0 +1,8 @@ +package ml.docilealligator.infinityforreddit.Event; + +public class ChangeWifiStatusEvent { + public boolean isConnectedToWifi; + public ChangeWifiStatusEvent(boolean isConnectedToWifi) { + this.isConnectedToWifi = isConnectedToWifi; + } +} diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/PostFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/PostFragment.java index 6ce0ac92..5b76d340 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/PostFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/PostFragment.java @@ -62,6 +62,7 @@ import ml.docilealligator.infinityforreddit.Event.ChangeShowElapsedTimeEvent; import ml.docilealligator.infinityforreddit.Event.ChangeSpoilerBlurEvent; import ml.docilealligator.infinityforreddit.Event.ChangeVideoAutoplayEvent; import ml.docilealligator.infinityforreddit.Event.ChangeVoteButtonsPositionEvent; +import ml.docilealligator.infinityforreddit.Event.ChangeWifiStatusEvent; import ml.docilealligator.infinityforreddit.Event.PostUpdateEventToPostList; import ml.docilealligator.infinityforreddit.Event.ShowDividerInCompactLayoutPreferenceEvent; import ml.docilealligator.infinityforreddit.FragmentCommunicator; @@ -854,6 +855,17 @@ public class PostFragment extends Fragment implements FragmentCommunicator { } } + @Subscribe + public void onChangeWifiStatusEvent(ChangeWifiStatusEvent changeWifiStatusEvent) { + if (mAdapter != null) { + String autoplay = mSharedPreferences.getString(SharedPreferencesUtils.VIDEO_AUTOPLAY, SharedPreferencesUtils.VIDEO_AUTOPLAY_VALUE_NEVER); + if (autoplay.equals(SharedPreferencesUtils.VIDEO_AUTOPLAY_VALUE_ON_WIFI)) { + mAdapter.setAutoplay(changeWifiStatusEvent.isConnectedToWifi); + refreshAdapter(); + } + } + } + private void refreshAdapter() { int previousPosition = -1; if (mLinearLayoutManager != null) { diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Infinity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Infinity.java index df5a1100..90478a08 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Infinity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Infinity.java @@ -1,6 +1,8 @@ package ml.docilealligator.infinityforreddit; import android.app.Application; +import android.content.IntentFilter; +import android.net.ConnectivityManager; import android.os.Bundle; import androidx.annotation.NonNull; @@ -10,8 +12,15 @@ import com.evernote.android.state.StateSaver; import com.livefront.bridge.Bridge; import com.livefront.bridge.SavedStateHandler; +import org.greenrobot.eventbus.EventBus; + +import ml.docilealligator.infinityforreddit.BroadcastReceiver.NetworkWifiStatusReceiver; +import ml.docilealligator.infinityforreddit.Event.ChangeWifiStatusEvent; +import ml.docilealligator.infinityforreddit.Utils.Utils; + public class Infinity extends Application { private AppComponent mAppComponent; + private NetworkWifiStatusReceiver mNetworkWifiStatusReceiver; @Override public void onCreate() { @@ -32,6 +41,10 @@ public class Infinity extends Application { StateSaver.restoreInstanceState(target, state); } }); + + mNetworkWifiStatusReceiver = + new NetworkWifiStatusReceiver(() -> EventBus.getDefault().post(new ChangeWifiStatusEvent(Utils.isConnectedToWifi(getApplicationContext())))); + registerReceiver(mNetworkWifiStatusReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); } public AppComponent getAppComponent() { |