Add biometric

pull/137/head
FongMi 2 years ago
parent 7a563c71d7
commit e8bef567be
  1. 5
      app/build.gradle
  2. 17
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  3. 13
      app/src/main/java/com/fongmi/android/tv/utils/Biometric.java
  4. 17
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java

@ -21,12 +21,12 @@ android {
leanback {
dimension "mode"
versionCode 204
versionName "20230816"
versionName "20230816#2"
}
mobile {
dimension "mode"
versionCode 204
versionName "20230816"
versionName "20230816#2"
}
java {
dimension "api"
@ -104,6 +104,7 @@ dependencies {
implementation project(':media-lib-session')
implementation project(':media-lib-ui')
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.biometric:biometric:1.1.0'
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.5.1'
implementation 'androidx.room:room-runtime:2.5.2'
implementation 'cat.ereza:customactivityoncrash:2.4.0'

@ -48,6 +48,7 @@ import com.fongmi.android.tv.ui.custom.dialog.PassDialog;
import com.fongmi.android.tv.ui.custom.dialog.TrackDialog;
import com.fongmi.android.tv.ui.presenter.ChannelPresenter;
import com.fongmi.android.tv.ui.presenter.GroupPresenter;
import com.fongmi.android.tv.utils.Biometric;
import com.fongmi.android.tv.utils.Clock;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.ResUtil;
@ -69,7 +70,7 @@ import okhttp3.Call;
import okhttp3.Response;
import tv.danmaku.ijk.media.player.ui.IjkVideoView;
public class LiveActivity extends BaseActivity implements GroupPresenter.OnClickListener, ChannelPresenter.OnClickListener, CustomKeyDownLive.Listener, CustomLiveListView.Callback, TrackDialog.Listener, PassCallback, LiveCallback {
public class LiveActivity extends BaseActivity implements GroupPresenter.OnClickListener, ChannelPresenter.OnClickListener, CustomKeyDownLive.Listener, CustomLiveListView.Callback, TrackDialog.Listener, Biometric.Callback, PassCallback, LiveCallback {
private ActivityLiveBinding mBinding;
private ArrayObjectAdapter mChannelAdapter;
@ -429,7 +430,8 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
mChannelAdapter.setItems(item.getChannel(), null);
mBinding.channel.setSelectedPosition(Math.max(item.getPosition(), 0));
if (!item.isKeep() || ++count < 5 || mHides.isEmpty()) return;
PassDialog.create().show(this);
if (Biometric.enable()) Biometric.show(this);
else PassDialog.create().show(this);
App.removeCallbacks(mR0);
resetPass();
}
@ -533,12 +535,21 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
@Override
public void setPass(String pass) {
unlock(pass);
}
@Override
public void onBiometricSuccess() {
unlock(null);
}
private void unlock(String pass) {
boolean first = true;
int position = mGroupAdapter.size();
Iterator<Group> iterator = mHides.iterator();
while (iterator.hasNext()) {
Group item = iterator.next();
if (!item.getPass().equals(pass)) continue;
if (pass != null && !pass.equals(item.getPass())) continue;
mGroupAdapter.add(mGroupAdapter.size(), item);
if (first) mBinding.group.setSelectedPosition(position);
if (first) onItemClick(mGroup = item);

@ -0,0 +1,13 @@
package com.fongmi.android.tv.utils;
public class Biometric {
public static boolean enable() {
return false;
}
public interface Callback {
void onBiometricSuccess();
}
}

@ -48,6 +48,7 @@ import com.fongmi.android.tv.ui.custom.dialog.CastDialog;
import com.fongmi.android.tv.ui.custom.dialog.LiveDialog;
import com.fongmi.android.tv.ui.custom.dialog.PassDialog;
import com.fongmi.android.tv.ui.custom.dialog.TrackDialog;
import com.fongmi.android.tv.utils.Biometric;
import com.fongmi.android.tv.utils.Clock;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.PiP;
@ -71,7 +72,7 @@ import okhttp3.Call;
import okhttp3.Response;
import tv.danmaku.ijk.media.player.ui.IjkVideoView;
public class LiveActivity extends BaseActivity implements CustomKeyDownLive.Listener, CastDialog.Listener, PiPReceiver.Listener, TrackDialog.Listener, PassCallback, LiveCallback, GroupAdapter.OnClickListener, ChannelAdapter.OnClickListener {
public class LiveActivity extends BaseActivity implements CustomKeyDownLive.Listener, CastDialog.Listener, PiPReceiver.Listener, TrackDialog.Listener, Biometric.Callback, PassCallback, LiveCallback, GroupAdapter.OnClickListener, ChannelAdapter.OnClickListener {
private ChannelAdapter mChannelAdapter;
private ActivityLiveBinding mBinding;
@ -451,7 +452,8 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
mChannelAdapter.setSelected(item.getPosition());
mBinding.channel.scrollToPosition(Math.max(item.getPosition(), 0));
if (!item.isKeep() || ++count < 5 || mHides.isEmpty()) return;
PassDialog.create().show(this);
if (Biometric.enable()) Biometric.show(this);
else PassDialog.create().show(this);
resetPass();
}
@ -555,11 +557,20 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
@Override
public void setPass(String pass) {
unlock(pass);
}
@Override
public void onBiometricSuccess() {
unlock(null);
}
private void unlock(String pass) {
boolean first = true;
Iterator<Group> iterator = mHides.iterator();
while (iterator.hasNext()) {
Group item = iterator.next();
if (!item.getPass().equals(pass)) continue;
if (pass != null && !pass.equals(item.getPass())) continue;
mGroupAdapter.add(item);
if (first) onItemClick(item);
iterator.remove();

Loading…
Cancel
Save