diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 07765cb..d181825 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -116,7 +116,7 @@ android:exported="false" android:screenOrientation="landscape" /> <activity - android:name=".player.ProVideoActivity" + android:name=".watcher.player.ProVideoActivity" android:exported="false" android:screenOrientation="landscape" android:theme="@style/FullscreenTheme" /> diff --git a/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt b/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt index 00ef7ea..52a5309 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt @@ -15,8 +15,8 @@ import com.yinuo.library.vlc.TxtOverlay import com.yinuo.safetywatcher.watcher.net.UploadFileApi import com.yinuo.safetywatcher.watcher.ui.view.CommonDialog import com.yinuo.safetywatcher.watcher.utils.DateUtils -import com.yinuo.safetywatcher.xls.SimpleCellValue -import com.yinuo.safetywatcher.xls.utils.ExcelUtils +import com.yinuo.safetywatcher.watcher.xls.SimpleCellValue +import com.yinuo.safetywatcher.watcher.xls.utils.ExcelUtils import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import java.io.BufferedReader diff --git a/app/src/main/java/com/yinuo/safetywatcher/player/ProVideoActivity.java b/app/src/main/java/com/yinuo/safetywatcher/watcher/player/ProVideoActivity.java similarity index 99% rename from app/src/main/java/com/yinuo/safetywatcher/player/ProVideoActivity.java rename to app/src/main/java/com/yinuo/safetywatcher/watcher/player/ProVideoActivity.java index 8a647c7..b932e15 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/player/ProVideoActivity.java +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/player/ProVideoActivity.java @@ -1,4 +1,4 @@ -package com.yinuo.safetywatcher.player; +package com.yinuo.safetywatcher.watcher.player; /* * Copyright (C) 2015 Zhang Rui <bbcallen@gmail.com> diff --git a/app/src/main/java/com/yinuo/safetywatcher/player/ProVideoView.java b/app/src/main/java/com/yinuo/safetywatcher/watcher/player/ProVideoView.java similarity index 88% rename from app/src/main/java/com/yinuo/safetywatcher/player/ProVideoView.java rename to app/src/main/java/com/yinuo/safetywatcher/watcher/player/ProVideoView.java index 5333c17..c5abbd2 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/player/ProVideoView.java +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/player/ProVideoView.java @@ -1,11 +1,8 @@ -package com.yinuo.safetywatcher.player; +package com.yinuo.safetywatcher.watcher.player; import android.content.Context; -import android.net.Uri; -import android.text.TextUtils; import android.util.AttributeSet; -import tv.danmaku.ijk.media.player.IjkMediaPlayer; import tv.danmaku.ijk.media.widget.media.IjkVideoView; /** diff --git a/app/src/main/java/com/yinuo/safetywatcher/player/VideoControllerView.java b/app/src/main/java/com/yinuo/safetywatcher/watcher/player/VideoControllerView.java similarity index 90% rename from app/src/main/java/com/yinuo/safetywatcher/player/VideoControllerView.java rename to app/src/main/java/com/yinuo/safetywatcher/watcher/player/VideoControllerView.java index 8796a37..96d5f9f 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/player/VideoControllerView.java +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/player/VideoControllerView.java @@ -1,6 +1,9 @@ -package com.yinuo.safetywatcher.player; +package com.yinuo.safetywatcher.watcher.player; +import android.app.Activity; import android.content.Context; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.StateListDrawable; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; @@ -18,6 +21,8 @@ import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.TextView; +import androidx.appcompat.content.res.AppCompatResources; + import com.yinuo.safetywatcher.R; import java.lang.ref.WeakReference; @@ -56,6 +61,7 @@ public class VideoControllerView extends FrameLayout implements IMediaController private TextView mCurrentTime; // 当前播放时间点 private TextView mEndTime; // 总时长 + private View mControlView; private ImageButton mPauseButton; // 暂停or开始 private ImageButton mFastButton; // 快进 private ImageButton mRewindButton; // 快退 @@ -227,8 +233,8 @@ public class VideoControllerView extends FrameLayout implements IMediaController doPauseResume(); show(sDefaultTimeout); - if (mPauseButton != null) { - mPauseButton.requestFocus(); + if (mControlView != null) { + mControlView.requestFocus(); } } @@ -343,15 +349,15 @@ public class VideoControllerView extends FrameLayout implements IMediaController if (!mShowing && mAnchor != null) { setProgress(); - if (mPauseButton != null) { - mPauseButton.requestFocus(); + if (mControlView != null) { + mControlView.requestFocus(); } disableUnsupportedButtons(); LayoutParams tlp = new LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.MATCH_PARENT, Gravity.BOTTOM); if (mAnchor instanceof ViewGroup) { @@ -386,7 +392,7 @@ public class VideoControllerView extends FrameLayout implements IMediaController */ protected View makeControllerView() { LayoutInflater inflate = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - mRoot = inflate.inflate(R.layout.media_controller, null); + mRoot = inflate.inflate(R.layout.media_controller, this, false); initControllerView(mRoot); return mRoot; } @@ -394,7 +400,6 @@ public class VideoControllerView extends FrameLayout implements IMediaController private void initControllerView(View v) { mPauseButton = (ImageButton) v.findViewById(R.id.pause); if (mPauseButton != null) { - mPauseButton.requestFocus(); mPauseButton.setOnClickListener(mPauseListener); } @@ -434,6 +439,39 @@ public class VideoControllerView extends FrameLayout implements IMediaController } else { v.findViewById(R.id.seek_bar_container).setVisibility(VISIBLE); } + + View backArea = v.findViewById(R.id.back_area); + backArea.setOnClickListener(v1 -> { + if (mContext instanceof Activity) { + ((Activity) mContext).finish(); + } + }); + + setCommonBg(backArea); + mControlView = v.findViewById(R.id.control_area); + mControlView.setOnKeyListener((v12, keyCode, event) -> { + if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER || keyCode == KeyEvent.KEYCODE_ENTER) { + if (event.getAction() == KeyEvent.ACTION_DOWN) { + mPauseButton.performClick(); + } + return true; + } + return false; + }); + setCommonBg(mControlView); + mControlView.requestFocus(); + } + + private void setCommonBg(View v) { + StateListDrawable bg = new StateListDrawable(); + Drawable currentBackground = v.getBackground(); + Drawable drawable = AppCompatResources.getDrawable( + mContext, + com.yinuo.safetywatcher.R.drawable.focus_bg + ); + bg.addState(new int[]{android.R.attr.state_focused}, drawable); + bg.addState(new int[]{}, currentBackground); + v.setBackground(bg); } /** diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HistoryVideoActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HistoryVideoActivity.kt index c22587f..1c97604 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HistoryVideoActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HistoryVideoActivity.kt @@ -5,13 +5,11 @@ import android.view.View import androidx.activity.result.contract.ActivityResultContracts import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView import com.common.commonlib.db.DBUtils -import com.common.commonlib.db.entity.Gas import com.common.commonlib.db.entity.Video import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.databinding.ActivityHistoryVideoBinding -import com.yinuo.safetywatcher.player.ProVideoActivity +import com.yinuo.safetywatcher.watcher.player.ProVideoActivity import com.yinuo.safetywatcher.watcher.base.BaseActivity import com.yinuo.safetywatcher.watcher.constant.DEFAULT_QUERY_TIME_INTERVAL import com.yinuo.safetywatcher.watcher.ui.adapter.HistoryVideoAdapter diff --git a/app/src/main/java/com/yinuo/safetywatcher/xls/ICellValue.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/xls/ICellValue.kt similarity index 54% rename from app/src/main/java/com/yinuo/safetywatcher/xls/ICellValue.kt rename to app/src/main/java/com/yinuo/safetywatcher/watcher/xls/ICellValue.kt index 8f9e953..a9f7e47 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/xls/ICellValue.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/xls/ICellValue.kt @@ -1,4 +1,4 @@ -package com.yinuo.safetywatcher.xls +package com.yinuo.safetywatcher.watcher.xls interface ICellValue { fun getValue(): String diff --git a/app/src/main/java/com/yinuo/safetywatcher/xls/SimpleCellValue.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/xls/SimpleCellValue.kt similarity index 75% rename from app/src/main/java/com/yinuo/safetywatcher/xls/SimpleCellValue.kt rename to app/src/main/java/com/yinuo/safetywatcher/watcher/xls/SimpleCellValue.kt index 44f95c1..ef9802f 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/xls/SimpleCellValue.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/xls/SimpleCellValue.kt @@ -1,4 +1,4 @@ -package com.yinuo.safetywatcher.xls +package com.yinuo.safetywatcher.watcher.xls data class SimpleCellValue(val content: String) : ICellValue { override fun getValue(): String { diff --git a/app/src/main/java/com/yinuo/safetywatcher/xls/utils/ExcelUtils.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/xls/utils/ExcelUtils.kt similarity index 97% rename from app/src/main/java/com/yinuo/safetywatcher/xls/utils/ExcelUtils.kt rename to app/src/main/java/com/yinuo/safetywatcher/watcher/xls/utils/ExcelUtils.kt index fa58161..55bde46 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/xls/utils/ExcelUtils.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/xls/utils/ExcelUtils.kt @@ -1,8 +1,8 @@ -package com.yinuo.safetywatcher.xls.utils +package com.yinuo.safetywatcher.watcher.xls.utils import android.content.Context import android.util.Log -import com.yinuo.safetywatcher.xls.ICellValue +import com.yinuo.safetywatcher.watcher.xls.ICellValue import com.yinuo.safetywatcher.R import jxl.Workbook import jxl.WorkbookSettings diff --git a/app/src/main/java/com/yinuo/safetywatcher/xls/utils/PathUtils.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/xls/utils/PathUtils.kt similarity index 97% rename from app/src/main/java/com/yinuo/safetywatcher/xls/utils/PathUtils.kt rename to app/src/main/java/com/yinuo/safetywatcher/watcher/xls/utils/PathUtils.kt index f86bd85..1698a0f 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/xls/utils/PathUtils.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/xls/utils/PathUtils.kt @@ -1,4 +1,4 @@ -package com.yinuo.safetywatcher.xls.utils +package com.yinuo.safetywatcher.watcher.xls.utils import android.content.Context import android.os.Environment diff --git a/app/src/main/res/layout/activity_main_pro.xml b/app/src/main/res/layout/activity_main_pro.xml index b7881ee..c386406 100644 --- a/app/src/main/res/layout/activity_main_pro.xml +++ b/app/src/main/res/layout/activity_main_pro.xml @@ -12,7 +12,7 @@ android:layout_gravity="center" android:background="#000000"> - <com.yinuo.safetywatcher.player.ProVideoView + <com.yinuo.safetywatcher.watcher.player.ProVideoView android:id="@+id/video_view" android:layout_width="match_parent" android:layout_height="match_parent" diff --git a/app/src/main/res/layout/media_controller.xml b/app/src/main/res/layout/media_controller.xml index f169aa6..01f63e3 100644 --- a/app/src/main/res/layout/media_controller.xml +++ b/app/src/main/res/layout/media_controller.xml @@ -2,75 +2,102 @@ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/media_controller_ll" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="#6000" + android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout - android:id="@+id/seek_bar_container" + android:id="@+id/back_area" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center_vertical" - android:paddingTop="@dimen/_30dp" - android:orientation="horizontal"> + android:layout_height="@dimen/_87dp" + android:background="#6000" + android:focusable="true" + android:gravity="center_vertical"> - <TextView - android:id="@+id/time_current" + <ImageView android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:paddingLeft="@dimen/_20dp" - android:paddingRight="@dimen/_20dp" - android:textColor="@color/white" - android:textSize="@dimen/_30dp" - android:textStyle="bold" /> + android:layout_height="@dimen/_40dp" + android:layout_marginStart="@dimen/_31dp" + android:src="@mipmap/ic_back" /> + </LinearLayout> - <SeekBar - android:id="@+id/media_controller_progress" - style="@style/CustomSeekbarStyle" - android:layout_width="0dip" - android:layout_height="wrap_content" - android:layout_weight="1" - android:progress="0"/> + <Space + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="1" /> - <TextView - android:id="@+id/total_time" - android:layout_width="wrap_content" + <LinearLayout + android:id="@+id/control_area" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="#6000" + android:focusable="true" + android:orientation="vertical"> + + <LinearLayout + android:id="@+id/seek_bar_container" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:paddingLeft="@dimen/_20dp" - android:paddingRight="@dimen/_20dp" - android:textColor="@color/white" - android:textSize="@dimen/_30dp" - android:textStyle="bold" /> + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingTop="@dimen/_30dp"> - </LinearLayout> + <TextView + android:id="@+id/time_current" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal" + android:paddingLeft="@dimen/_20dp" + android:paddingRight="@dimen/_20dp" + android:textColor="@color/white" + android:textSize="@dimen/_30dp" + android:textStyle="bold" /> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="@dimen/_108dp" - android:gravity="center" - android:orientation="horizontal" - android:paddingHorizontal="@dimen/_580dp"> + <SeekBar + android:id="@+id/media_controller_progress" + style="@style/CustomSeekbarStyle" + android:layout_width="0dip" + android:layout_height="wrap_content" + android:layout_weight="1" + android:progress="0" /> - <ImageButton - android:id="@+id/rewind" - style="@android:style/MediaButton.Rew" - android:layout_weight="1" - android:src="@drawable/new_moveback_btn" /> + <TextView + android:id="@+id/total_time" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal" + android:paddingLeft="@dimen/_20dp" + android:paddingRight="@dimen/_20dp" + android:textColor="@color/white" + android:textSize="@dimen/_30dp" + android:textStyle="bold" /> - <ImageButton - android:id="@+id/pause" - style="@android:style/MediaButton.Play" - android:layout_weight="1" - android:src="@drawable/new_stop_white" /> + </LinearLayout> - <ImageButton - android:id="@+id/fast_forward" - style="@android:style/MediaButton.Ffwd" - android:layout_weight="1" - android:src="@drawable/new_forward_btn" /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="@dimen/_108dp" + android:gravity="center" + android:orientation="horizontal" + android:paddingHorizontal="@dimen/_580dp"> - </LinearLayout> + <ImageButton + android:id="@+id/rewind" + style="@android:style/MediaButton.Rew" + android:layout_weight="1" + android:src="@drawable/new_moveback_btn" /> + + <ImageButton + android:id="@+id/pause" + style="@android:style/MediaButton.Play" + android:layout_weight="1" + android:src="@drawable/new_stop_white" /> + <ImageButton + android:id="@+id/fast_forward" + style="@android:style/MediaButton.Ffwd" + android:layout_weight="1" + android:src="@drawable/new_forward_btn" /> + + </LinearLayout> + </LinearLayout> </LinearLayout> \ No newline at end of file