pull/5/head
FongMi 4 years ago
parent 44f843eabb
commit 06ee0b30ba
  1. 3
      app/src/main/java/com/fongmi/bear/ui/activity/PlayActivity.java
  2. 78
      app/src/main/java/com/fongmi/bear/utils/Clock.java
  3. 58
      app/src/main/java/com/fongmi/bear/utils/KeyDown.java
  4. 43
      app/src/main/java/com/fongmi/bear/utils/Utils.java

@ -20,7 +20,6 @@ import com.fongmi.bear.utils.KeyDown;
import com.fongmi.bear.utils.Notify;
import com.fongmi.bear.utils.Prefers;
import com.fongmi.bear.utils.ResUtil;
import com.fongmi.bear.utils.Utils;
import com.google.android.exoplayer2.Player;
import org.greenrobot.eventbus.EventBus;
@ -142,7 +141,7 @@ public class PlayActivity extends BaseActivity implements KeyDownImpl {
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (!mBinding.video.isControllerFullyVisible() && Utils.hasEvent(event)) return mKeyDown.onKeyDown(event);
if (!mBinding.video.isControllerFullyVisible() && mKeyDown.hasEvent(event)) return mKeyDown.onKeyDown(event);
else return super.dispatchKeyEvent(event);
}

@ -12,43 +12,43 @@ import java.util.TimerTask;
public class Clock {
private final SimpleDateFormat formatter;
private final Handler handler;
private Timer timer;
private static class Loader {
static volatile Clock INSTANCE = new Clock();
}
public static Clock get() {
return Loader.INSTANCE;
}
public Clock() {
this.formatter = new SimpleDateFormat("MM/dd HH:mm:ss", Locale.getDefault());
this.handler = new Handler(Looper.getMainLooper());
}
public static void start(TextView view) {
get().cancel();
get().run(view);
}
public static void destroy() {
get().cancel();
}
private void run(TextView view) {
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
handler.post(() -> view.setText(formatter.format(new Date())));
}
}, 0, 1000);
}
private void cancel() {
if (timer != null) timer.cancel();
}
private final SimpleDateFormat formatter;
private final Handler handler;
private Timer timer;
private static class Loader {
static volatile Clock INSTANCE = new Clock();
}
public static Clock get() {
return Loader.INSTANCE;
}
public Clock() {
this.formatter = new SimpleDateFormat("MM/dd HH:mm:ss", Locale.getDefault());
this.handler = new Handler(Looper.getMainLooper());
}
public static void start(TextView view) {
get().cancel();
get().run(view);
}
public static void destroy() {
get().cancel();
}
private void run(TextView view) {
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
handler.post(() -> view.setText(formatter.format(new Date())));
}
}, 0, 1000);
}
private void cancel() {
if (timer != null) timer.cancel();
}
}

@ -18,23 +18,23 @@ public class KeyDown {
}
public boolean onKeyDown(KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN && Utils.isLeftKey(event)) {
if (event.getAction() == KeyEvent.ACTION_DOWN && isLeftKey(event)) {
mKeyDown.onSeek(false);
} else if (event.getAction() == KeyEvent.ACTION_DOWN && Utils.isRightKey(event)) {
} else if (event.getAction() == KeyEvent.ACTION_DOWN && isRightKey(event)) {
mKeyDown.onSeek(true);
} else if (event.getAction() == KeyEvent.ACTION_UP && Utils.isUpKey(event)) {
} else if (event.getAction() == KeyEvent.ACTION_UP && isUpKey(event)) {
mKeyDown.onKeyUp();
} else if (event.getAction() == KeyEvent.ACTION_UP && Utils.isDownKey(event)) {
} else if (event.getAction() == KeyEvent.ACTION_UP && isDownKey(event)) {
mKeyDown.onKeyDown();
} else if (event.getAction() == KeyEvent.ACTION_UP && Utils.isLeftKey(event)) {
} else if (event.getAction() == KeyEvent.ACTION_UP && isLeftKey(event)) {
mKeyDown.onKeyLeft();
} else if (event.getAction() == KeyEvent.ACTION_UP && Utils.isRightKey(event)) {
} else if (event.getAction() == KeyEvent.ACTION_UP && isRightKey(event)) {
mKeyDown.onKeyRight();
} else if (event.getAction() == KeyEvent.ACTION_UP && Utils.isBackKey(event)) {
} else if (event.getAction() == KeyEvent.ACTION_UP && isBackKey(event)) {
mKeyDown.onKeyBack();
} else if (event.getAction() == KeyEvent.ACTION_UP && Utils.isMenuKey(event)) {
} else if (event.getAction() == KeyEvent.ACTION_UP && isMenuKey(event)) {
mKeyDown.onKeyMenu();
} else if (Utils.isEnterKey(event)) {
} else if (isEnterKey(event)) {
checkPress(event);
}
return true;
@ -49,4 +49,44 @@ public class KeyDown {
else mKeyDown.onKeyCenter();
}
}
public boolean hasEvent(KeyEvent event) {
return isArrowKey(event) || isBackKey(event) || isMenuKey(event) || isDigitKey(event) || event.isLongPress();
}
private boolean isArrowKey(KeyEvent event) {
return isEnterKey(event) || isUpKey(event) || isDownKey(event) || isLeftKey(event) || isRightKey(event);
}
private boolean isBackKey(KeyEvent event) {
return event.getKeyCode() == KeyEvent.KEYCODE_BACK;
}
private boolean isMenuKey(KeyEvent event) {
return event.getKeyCode() == KeyEvent.KEYCODE_MENU;
}
private boolean isDigitKey(KeyEvent event) {
return event.getKeyCode() >= KeyEvent.KEYCODE_0 && event.getKeyCode() <= KeyEvent.KEYCODE_9 || event.getKeyCode() >= KeyEvent.KEYCODE_NUMPAD_0 && event.getKeyCode() <= KeyEvent.KEYCODE_NUMPAD_9;
}
private boolean isEnterKey(KeyEvent event) {
return event.getKeyCode() == KeyEvent.KEYCODE_DPAD_CENTER || event.getKeyCode() == KeyEvent.KEYCODE_ENTER || event.getKeyCode() == KeyEvent.KEYCODE_SPACE || event.getKeyCode() == KeyEvent.KEYCODE_NUMPAD_ENTER;
}
private boolean isUpKey(KeyEvent event) {
return event.getKeyCode() == KeyEvent.KEYCODE_DPAD_UP || event.getKeyCode() == KeyEvent.KEYCODE_CHANNEL_UP || event.getKeyCode() == KeyEvent.KEYCODE_PAGE_UP || event.getKeyCode() == KeyEvent.KEYCODE_MEDIA_PREVIOUS;
}
private boolean isDownKey(KeyEvent event) {
return event.getKeyCode() == KeyEvent.KEYCODE_DPAD_DOWN || event.getKeyCode() == KeyEvent.KEYCODE_CHANNEL_DOWN || event.getKeyCode() == KeyEvent.KEYCODE_PAGE_DOWN || event.getKeyCode() == KeyEvent.KEYCODE_MEDIA_NEXT;
}
private boolean isLeftKey(KeyEvent event) {
return event.getKeyCode() == KeyEvent.KEYCODE_DPAD_LEFT;
}
private boolean isRightKey(KeyEvent event) {
return event.getKeyCode() == KeyEvent.KEYCODE_DPAD_RIGHT;
}
}

@ -6,7 +6,6 @@ import android.content.pm.PackageManager;
import android.os.Build;
import android.provider.Settings;
import android.util.Rational;
import android.view.KeyEvent;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
@ -18,47 +17,7 @@ import java.util.regex.Pattern;
public class Utils {
private static final Pattern snifferMatch = Pattern.compile("http((?!http).){26,}?\\.(m3u8|mp4)\\?.*|http((?!http).){26,}\\.(m3u8|mp4)|http((?!http).){26,}?/m3u8\\?pt=m3u8.*|http((?!http).)*?default\\.ixigua\\.com/.*|http((?!http).)*?cdn-tos[^\\?]*|http((?!http).)*?/obj/tos[^\\?]*|http.*?/player/m3u8play\\.php\\?url=.*|http.*?/player/.*?[pP]lay\\.php\\?url=.*|http.*?/playlist/m3u8/\\?vid=.*|http.*?\\.php\\?type=m3u8&.*|http.*?/download.aspx\\?.*|http.*?/api/up_api.php\\?.*|https.*?\\.66yk\\.cn.*|http((?!http).)*?netease\\.com/file/.*");
public static boolean hasEvent(KeyEvent event) {
return isArrowKey(event) || isBackKey(event) || isMenuKey(event) || isDigitKey(event) || event.isLongPress();
}
private static boolean isArrowKey(KeyEvent event) {
return isEnterKey(event) || isUpKey(event) || isDownKey(event) || isLeftKey(event) || isRightKey(event);
}
static boolean isBackKey(KeyEvent event) {
return event.getKeyCode() == KeyEvent.KEYCODE_BACK;
}
static boolean isMenuKey(KeyEvent event) {
return event.getKeyCode() == KeyEvent.KEYCODE_MENU;
}
public static boolean isDigitKey(KeyEvent event) {
return event.getKeyCode() >= KeyEvent.KEYCODE_0 && event.getKeyCode() <= KeyEvent.KEYCODE_9 || event.getKeyCode() >= KeyEvent.KEYCODE_NUMPAD_0 && event.getKeyCode() <= KeyEvent.KEYCODE_NUMPAD_9;
}
static boolean isEnterKey(KeyEvent event) {
return event.getKeyCode() == KeyEvent.KEYCODE_DPAD_CENTER || event.getKeyCode() == KeyEvent.KEYCODE_ENTER || event.getKeyCode() == KeyEvent.KEYCODE_SPACE || event.getKeyCode() == KeyEvent.KEYCODE_NUMPAD_ENTER;
}
static boolean isUpKey(KeyEvent event) {
return event.getKeyCode() == KeyEvent.KEYCODE_DPAD_UP || event.getKeyCode() == KeyEvent.KEYCODE_CHANNEL_UP || event.getKeyCode() == KeyEvent.KEYCODE_PAGE_UP || event.getKeyCode() == KeyEvent.KEYCODE_MEDIA_PREVIOUS;
}
static boolean isDownKey(KeyEvent event) {
return event.getKeyCode() == KeyEvent.KEYCODE_DPAD_DOWN || event.getKeyCode() == KeyEvent.KEYCODE_CHANNEL_DOWN || event.getKeyCode() == KeyEvent.KEYCODE_PAGE_DOWN || event.getKeyCode() == KeyEvent.KEYCODE_MEDIA_NEXT;
}
static boolean isLeftKey(KeyEvent event) {
return event.getKeyCode() == KeyEvent.KEYCODE_DPAD_LEFT;
}
static boolean isRightKey(KeyEvent event) {
return event.getKeyCode() == KeyEvent.KEYCODE_DPAD_RIGHT;
}
private static final Pattern snifferMatch = Pattern.compile("http((?!http).){26,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)\\?.*|http((?!http).){26,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)|http((?!http).){26,}?/m3u8\\?pt=m3u8.*|http((?!http).)*?default\\.ixigua\\.com/.*|http((?!http).)*?cdn-tos[^\\?]*|http((?!http).)*?/obj/tos[^\\?]*|http.*?/player/m3u8play\\.php\\?url=.*|http.*?/player/.*?[pP]lay\\.php\\?url=.*|http.*?/playlist/m3u8/\\?vid=.*|http.*?\\.php\\?type=m3u8&.*|http.*?/download.aspx\\?.*|http.*?/api/up_api.php\\?.*|https.*?\\.66yk\\.cn.*|http((?!http).)*?netease\\.com/file/.*");
public static <T> void loadImage(T model, ImageView view) {
Glide.with(App.get()).load(model).placeholder(R.drawable.ic_img_loading).error(R.drawable.ic_img_error).into(view);

Loading…
Cancel
Save