hanjing пре 6 година
родитељ
комит
307424f01e

+ 107 - 36
app/src/main/java/com/sheep/gamegroup/module/task/VideoTaskActivity.java

@@ -11,6 +11,7 @@ import android.text.TextUtils;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.WindowManager;
+import android.widget.Button;
 import android.widget.ImageView;
 import android.widget.TextView;
 
@@ -18,7 +19,6 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.kfzs.duanduan.cardview.ScreenUtil;
 import com.kfzs.duanduan.utils.ApkUtils;
-import com.kfzs.duanduan.utils.StatusBarUtils;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.Release_task;
@@ -30,6 +30,7 @@ import com.sheep.gamegroup.module.task.helper.VideoAd;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.DeviceUtil;
 import com.sheep.gamegroup.util.GlideImageLoader;
+import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.LocationUtils;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.UMConfigUtils;
@@ -44,6 +45,7 @@ import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
 import com.shuyu.gsyvideoplayer.GSYVideoManager;
 import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder;
 import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack;
+import com.shuyu.gsyvideoplayer.video.base.GSYVideoView;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -51,6 +53,7 @@ import java.util.Locale;
 import java.util.Map;
 
 import butterknife.BindView;
+import butterknife.OnClick;
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.schedulers.Schedulers;
 
@@ -60,8 +63,14 @@ public class VideoTaskActivity extends BaseActivity {
     SheepGSYVideoView videoPlayerView;
     @BindView(R.id.mask_view)
     View mask_view;
-    @BindView(R.id.desc_bottom_tv)
-    TextView desc_bottom_tv;
+    @BindView(R.id.desc_tv)
+    TextView desc_tv;
+    @BindView(R.id.name_tv)
+    TextView name_tv;
+    @BindView(R.id.action_btn)
+    Button action_btn;
+    @BindView(R.id.logo_iv)
+    ImageView logo_iv;
     @BindView(R.id.countdown_view)
     TextView countdown_view;
 
@@ -91,6 +100,14 @@ public class VideoTaskActivity extends BaseActivity {
     @Override
     public void onCreate(Bundle b) {
         super.onCreate(b);
+        getWindow().addFlags(
+                WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
+                        WindowManager.LayoutParams.FLAG_FULLSCREEN);
+    }
+
+    @Override
+    public void onWindowFocusChanged(boolean hasFocus) {
+        super.onWindowFocusChanged(hasFocus);
         int flag = View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && G.checkDeviceHasNavigationBar(this)) {
             getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);//白色
@@ -100,15 +117,13 @@ public class VideoTaskActivity extends BaseActivity {
                     View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
         }
         getWindow().getDecorView().setSystemUiVisibility(flag);
-        getWindow().addFlags(
-                WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
-                        WindowManager.LayoutParams.FLAG_FULLSCREEN);
     }
 
     @Override
     public void onResume() {
         super.onResume();
         videoPlayerView.onVideoResume();
+        configActionBtn();
     }
 
     @Override
@@ -138,19 +153,16 @@ public class VideoTaskActivity extends BaseActivity {
         videoPlayerView.getBackButton().setVisibility(View.GONE);
         videoPlayerView.getFullscreenButton().setVisibility(View.GONE);
         videoPlayerView.getBottomProgressBar().setVisibility(View.GONE);
+        
         mask_view.setOnTouchListener((v, event) -> {
             if (event.getAction() == MotionEvent.ACTION_UP && currentVideoAd != null) {
                 currentVideoAd.clickX = (int) event.getRawX();
                 currentVideoAd.clickY = (int) event.getRawY();
                 currentVideoAd.trigger(VideoAd.TYPE_CLICK);
-                String path = ADDownloader.getUrlPath(currentVideoAd.url);
-                if (PackageUtil.isAppInstalled(SheepApp.getInstance(), currentVideoAd.package_name)) {
-                    showOpenAppConfirmDialog();
-                } else if (!TextUtils.isEmpty(path)) {
-                    currentVideoAd.path = path;
-                    showInstallConfigDialog();
-                } else {
-                    showDownloadConfirmDialog();
+                if (videoPlayerView.getCurrentState() == GSYVideoView.CURRENT_STATE_PAUSE) {
+                    videoPlayerView.onVideoResume();
+                } else if (videoPlayerView.getCurrentState() == GSYVideoView.CURRENT_STATE_PLAYING) {
+                    videoPlayerView.onVideoPause();
                 }
             }
             return true;
@@ -205,8 +217,11 @@ public class VideoTaskActivity extends BaseActivity {
             runOnUiThread(() -> {
                 if (ret) {
                     currentVideoAd = ad;
-                    desc_bottom_tv.setText(currentVideoAd.desc);
+                    desc_tv.setText(currentVideoAd.desc);
+                    name_tv.setText(currentVideoAd.title);
+                    GlideImageLoader.circleImage(logo_iv, currentVideoAd.logo);
                     playVideo();
+                    configActionBtn();
                 } else {
                     ViewUtil.showConfirmDialog(VideoTaskActivity.this,
                             "不好",
@@ -219,6 +234,46 @@ public class VideoTaskActivity extends BaseActivity {
         });
     }
 
+    private void configActionBtn() {
+        if (this.isDestroyed() || currentVideoAd == null || currentVideoAd.url == null) return;
+        if (!currentVideoAd.url.endsWith(".apk")) {
+            action_btn.setText("查看详情");
+            action_btn.setTag(0);
+        } else {
+            String path = ADDownloader.getUrlPath(currentVideoAd.url);
+            if (PackageUtil.isAppInstalled(SheepApp.getInstance(), currentVideoAd.package_name)) {
+                action_btn.setText("打开应用");
+                action_btn.setTag(1);
+            } else if (!TextUtils.isEmpty(path)) {
+                action_btn.setText("立即安装");
+                action_btn.setTag(2);
+                currentVideoAd.path = path;
+            } else {
+                action_btn.setText("下载应用");
+                action_btn.setTag(3);
+            }
+        }
+    }
+
+    @OnClick(R.id.action_btn)
+    public void onActionClick(View v) {
+        int action = (int) v.getTag();
+        switch (action) {
+            case 0:
+                jumpWeb();
+                break;
+            case 1:
+                openApp();
+                break;
+            case 2:
+                installApp();
+                break;
+            case 3:
+                downloadApp();
+                break;
+        }
+    }
+
     private void playVideo() {
         GSYVideoOptionBuilder gsyVideoOption = new GSYVideoOptionBuilder();
         gsyVideoOption.setIsTouchWiget(false)
@@ -340,29 +395,35 @@ public class VideoTaskActivity extends BaseActivity {
                 d -> commitAutoTask()).show();
     }
 
-    private void showOpenAppConfirmDialog() {
+    private void jumpWeb() {
         if (currentVideoAd == null) return;
-        showAppConfirmDialog("跳转", "打开应用", d -> {
-            currentVideoAd.trigger(VideoAd.TYPE_ACTIVE);
-            currentVideoAd.trigger(VideoAd.TYPE_OPEN);
-            PackageUtil.startApp(this, currentVideoAd.package_name);
-        });
+        Jump2View.getInstance().goWeb(this, currentVideoAd.url);
     }
 
-    private void showDownloadConfirmDialog() {
+    private void openApp() {
         if (currentVideoAd == null) return;
-        showAppConfirmDialog("下载", "立即下载", d -> {
-            currentVideoAd.trigger(VideoAd.TYPE_DOWNLOAD);
-            showDownloadDialog();
-        });
+        currentVideoAd.trigger(VideoAd.TYPE_ACTIVE);
+        currentVideoAd.trigger(VideoAd.TYPE_OPEN);
+        PackageUtil.startApp(this, currentVideoAd.package_name);
     }
 
-    private void showInstallConfigDialog() {
+    private void downloadApp() {
         if (currentVideoAd == null) return;
-        showAppConfirmDialog("安装", "立即安装", d -> {
-            currentVideoAd.trigger(VideoAd.TYPE_INSTALL);
-            ApkUtils.installApk(this, currentVideoAd.path);
-        });
+        videoPlayerView.onVideoPause();
+        currentVideoAd.trigger(VideoAd.TYPE_DOWNLOAD);
+        showDownloadDialog();
+    }
+
+    private void installApp() {
+        if (currentVideoAd == null) return;
+        currentVideoAd.trigger(VideoAd.TYPE_INSTALL);
+        ApkUtils.installApk(this, currentVideoAd.path);
+    }
+
+    private void installApp(VideoAd ad) {
+        if (ad == null) return;
+        ad.trigger(VideoAd.TYPE_INSTALL);
+        ApkUtils.installApk(this, ad.path);
     }
 
     private void showAppConfirmDialog(String title, String btnText, ViewUtil.OnConfirDialogListener listener) {
@@ -384,7 +445,11 @@ public class VideoTaskActivity extends BaseActivity {
     }
 
     private void showDownloadDialog() {
-        final DialogProgress progress = DialogProgress.showDialog(this, false);
+        final DialogProgress progress = DialogProgress.showDialog(this, true);
+        progress.getAlertDialog().setOnDismissListener(d -> {
+
+        });
+        final VideoAd thisAd = currentVideoAd.clone();
         new ADDownloader()
                 .setListener(new ADDownloader.ProgressListener() {
 
@@ -393,19 +458,25 @@ public class VideoTaskActivity extends BaseActivity {
                         LogUtil.logE(offset + " /// " + total);
                         long percent = offset * 100 / total;
                         runOnUiThread(() -> {
-                            progress.getTextView().setText(percent + "%");
+                            if (progress.getAlertDialog().isShowing()) {
+                                progress.getTextView().setText(percent + "%");
+                            }
                         });
                     }
 
                     @Override
                     public void onStatus(String status, String msg) {
                         runOnUiThread(() -> {
-                            if ("COMPLETED".equals(status)) {
+                            if (VideoTaskActivity.this.isDestroyed()) return;
+                            if (progress.getAlertDialog().isShowing()) {
                                 progress.getAlertDialog().dismiss();
-                                showInstallConfigDialog();
+                            }
+                            if ("COMPLETED".equals(status)) {
+                                thisAd.path = msg;
+                                configActionBtn();
+                                installApp(thisAd);
                             } else {
                                 videoPlayerView.onVideoResume();
-                                progress.getAlertDialog().dismiss();
                                 LogUtil.logE(status + " /// " + msg);
                             }
                         });

+ 6 - 2
app/src/main/java/com/sheep/gamegroup/module/task/helper/ADDownloader.java

@@ -171,11 +171,15 @@ public class ADDownloader implements DownloadContextListener {
             if (realCause != null) {
                 realCause.printStackTrace();
             }
-            LogUtil.i("taskComplete: " + task.getUrl() + "   " + StatusUtil.getStatus(task).name() + "   " + cause.name());
+            LogUtil.i("taskComplete: " + task.getUrl() + "   " + StatusUtil.getStatus(task).name() + "   " + task.getFile().getAbsolutePath());
             VideoAd item = (VideoAd) task.getTag();
             item.subStatus = StatusUtil.getStatus(task).name();
             if (mListener != null) {
-                mListener.onStatus(StatusUtil.getStatus(task).name(), (realCause != null ? realCause.getMessage() : null));
+                if(StatusUtil.getStatus(task).name().equals("COMPLETED")){
+                    mListener.onStatus(StatusUtil.getStatus(task).name(), task.getFile().getAbsolutePath());
+                } else{
+                    mListener.onStatus(StatusUtil.getStatus(task).name(), (realCause != null ? realCause.getMessage() : null));
+                }
             }
         }
     }

+ 26 - 0
app/src/main/java/com/sheep/gamegroup/module/task/helper/VideoAd.java

@@ -77,6 +77,32 @@ public class VideoAd {
     public VideoAd() {
     }
 
+    public VideoAd(int status, String title, String desc, String logo, String coveImgUrl, String videoUrl, String package_name, String url, int url_type, Map<String, List<String>> eventTracks, int clickX, int clickY, String clickId, String subStatus, String path, long offset, long total, int isDelete) {
+        this.status = status;
+        this.title = title;
+        this.desc = desc;
+        this.logo = logo;
+        this.coveImgUrl = coveImgUrl;
+        this.videoUrl = videoUrl;
+        this.package_name = package_name;
+        this.url = url;
+        this.url_type = url_type;
+        this.eventTracks = eventTracks;
+        this.clickX = clickX;
+        this.clickY = clickY;
+        this.clickId = clickId;
+        this.subStatus = subStatus;
+        this.path = path;
+        this.offset = offset;
+        this.total = total;
+        this.isDelete = isDelete;
+    }
+
+    public VideoAd clone(){
+        VideoAd ad = new VideoAd(status, title, desc, logo, coveImgUrl, videoUrl, package_name, url, url_type, eventTracks, clickX, clickY, clickId, subStatus, path, offset, total, isDelete);
+        return ad;
+    }
+
     public void addTrack(String type, String url) {
         List<String> tracks = null;
         if (!eventTracks.containsKey("type")) {

+ 7 - 7
app/src/main/java/com/sheep/gamegroup/view/customview/SheepGSYVideoView.java

@@ -80,7 +80,7 @@ public class SheepGSYVideoView extends StandardGSYVideoPlayer {
             setViewShowState(mTopContainer, INVISIBLE);
             setViewShowState(mBottomContainer, INVISIBLE);
             setViewShowState(mStartButton, INVISIBLE);
-            setViewShowState(mLoadingProgressBar, VISIBLE);
+            setViewShowState(mLoadingProgressBar, INVISIBLE);
             setViewShowState(mThumbImageViewLayout, INVISIBLE);
             setViewShowState(mBottomProgressBar, VISIBLE);
             setViewShowState(mLockScreen, (mIfCurrentIsFullscreen && mNeedLockFull) ? VISIBLE : GONE);
@@ -101,7 +101,7 @@ public class SheepGSYVideoView extends StandardGSYVideoPlayer {
             setViewShowState(mTopContainer, INVISIBLE);
             setViewShowState(mBottomContainer, INVISIBLE);
             setViewShowState(mStartButton, INVISIBLE);
-            setViewShowState(mLoadingProgressBar, VISIBLE);
+            setViewShowState(mLoadingProgressBar, INVISIBLE);
             setViewShowState(mThumbImageViewLayout, INVISIBLE);
             setViewShowState(mBottomProgressBar, VISIBLE);
             setViewShowState(mLockScreen, GONE);
@@ -123,7 +123,7 @@ public class SheepGSYVideoView extends StandardGSYVideoPlayer {
             setViewShowState(mTopContainer, INVISIBLE);
             setViewShowState(mBottomContainer, INVISIBLE);
             setViewShowState(mStartButton, INVISIBLE);
-            setViewShowState(mLoadingProgressBar, VISIBLE);
+            setViewShowState(mLoadingProgressBar, INVISIBLE);
             setViewShowState(mThumbImageViewLayout, INVISIBLE);
             setViewShowState(mBottomProgressBar, VISIBLE);
             setViewShowState(mLockScreen, GONE);
@@ -144,7 +144,7 @@ public class SheepGSYVideoView extends StandardGSYVideoPlayer {
             setViewShowState(mTopContainer, INVISIBLE);
             setViewShowState(mBottomContainer, INVISIBLE);
             setViewShowState(mStartButton, VISIBLE);
-            setViewShowState(mLoadingProgressBar, VISIBLE);
+            setViewShowState(mLoadingProgressBar, INVISIBLE);
             setViewShowState(mThumbImageViewLayout, INVISIBLE);
             setViewShowState(mBottomProgressBar, VISIBLE);
             setViewShowState(mLockScreen, GONE);
@@ -166,7 +166,7 @@ public class SheepGSYVideoView extends StandardGSYVideoPlayer {
             setViewShowState(mTopContainer, INVISIBLE);
             setViewShowState(mBottomContainer, INVISIBLE);
             setViewShowState(mStartButton, INVISIBLE);
-            setViewShowState(mLoadingProgressBar, VISIBLE);
+            setViewShowState(mLoadingProgressBar, INVISIBLE);
             setViewShowState(mThumbImageViewLayout, INVISIBLE);
             setViewShowState(mBottomProgressBar, VISIBLE);
             setViewShowState(mLockScreen, GONE);
@@ -188,7 +188,7 @@ public class SheepGSYVideoView extends StandardGSYVideoPlayer {
             setViewShowState(mTopContainer, INVISIBLE);
             setViewShowState(mBottomContainer, INVISIBLE);
             setViewShowState(mStartButton, INVISIBLE);
-            setViewShowState(mLoadingProgressBar, VISIBLE);
+            setViewShowState(mLoadingProgressBar, INVISIBLE);
             setViewShowState(mThumbImageViewLayout, INVISIBLE);
             setViewShowState(mBottomProgressBar, VISIBLE);
             setViewShowState(mLockScreen, GONE);
@@ -208,7 +208,7 @@ public class SheepGSYVideoView extends StandardGSYVideoPlayer {
             setViewShowState(mTopContainer, INVISIBLE);
             setViewShowState(mBottomContainer, INVISIBLE);
             setViewShowState(mStartButton, INVISIBLE);
-            setViewShowState(mLoadingProgressBar, VISIBLE);
+            setViewShowState(mLoadingProgressBar, INVISIBLE);
             setViewShowState(mThumbImageViewLayout, INVISIBLE);
             setViewShowState(mBottomProgressBar, VISIBLE);
             setViewShowState(mLockScreen, GONE);

+ 44 - 10
app/src/main/res/layout/activity_video_task.xml

@@ -16,19 +16,53 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"/>
 
-    <TextView
-        android:id="@+id/desc_bottom_tv"
-        android:textSize="13sp"
-        android:textColor="@color/white"
-        android:gravity="center_vertical"
-        android:paddingTop="30dp"
-        android:paddingBottom="16sp"
-        android:paddingLeft="16sp"
-        android:paddingRight="16sp"
+    <RelativeLayout
+        android:id="@+id/bottom_bar"
         android:background="@drawable/bg_gradient_ver_black"
         android:layout_alignParentBottom="true"
+        android:layout_marginBottom="12dp"
+        android:paddingLeft="12dp"
+        android:paddingRight="12dp"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"/>
+        android:layout_height="wrap_content">
+        <TextView
+            android:id="@+id/desc_tv"
+            android:textSize="13sp"
+            android:textColor="@color/white"
+            android:gravity="center_vertical"
+            android:paddingBottom="12dp"
+            android:layout_above="@+id/logo_iv"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"/>
+
+        <ImageView
+            android:id="@+id/logo_iv"
+            android:layout_alignParentBottom="true"
+            android:layout_width="34dp"
+            android:layout_height="34dp" />
+
+        <TextView
+            android:id="@+id/name_tv"
+            android:textSize="16sp"
+            android:textColor="@color/white"
+            android:gravity="center_vertical"
+            android:layout_alignTop="@+id/logo_iv"
+            android:layout_toRightOf="@+id/logo_iv"
+            android:paddingLeft="12dp"
+            android:layout_width="match_parent"
+            android:layout_height="34dp"/>
+
+        <Button
+            android:id="@+id/action_btn"
+            android:textSize="15sp"
+            android:textColor="@color/white"
+            android:background="@drawable/shape_blue_solid_rectangle_18"
+            android:layout_alignParentBottom="true"
+            android:layout_alignParentRight="true"
+            android:layout_width="109dp"
+            android:layout_height="34dp" />
+
+    </RelativeLayout>
 
     <TextView
         android:id="@+id/countdown_view"

+ 1 - 1
app/src/main/res/layout/dialog_progress.xml

@@ -24,7 +24,7 @@
             android:layout_centerInParent="true"
             android:gravity="center"
             android:text="0%"
-            android:textColor="@color/theme_app_info_dark"
+            android:textColor="@color/colorAccent"
             android:textSize="20sp" />
     </RelativeLayout>
 </FrameLayout>