diff --git a/app/src/main/java/com/gh/common/util/EntranceUtils.java b/app/src/main/java/com/gh/common/util/EntranceUtils.java index 690dc36e79..e8a34706ea 100644 --- a/app/src/main/java/com/gh/common/util/EntranceUtils.java +++ b/app/src/main/java/com/gh/common/util/EntranceUtils.java @@ -55,6 +55,7 @@ public class EntranceUtils { public static final String KEY_NAME = "name"; public static final String KEY_POSITION = "position"; public static final String KEY_ENTRANCE = "entrance"; + public static final String KEY_ENTRANCE_LINK = "entrance_link"; public static final String KEY_TARGET = "target"; public static final String ENTRANCE_BROWSER = "(浏览器)"; public static final String ENTRANCE_WELCOME = "(启动弹窗)"; diff --git a/app/src/main/java/com/gh/common/util/LogUtils.java b/app/src/main/java/com/gh/common/util/LogUtils.java index b4b368912e..b05f6b228d 100644 --- a/app/src/main/java/com/gh/common/util/LogUtils.java +++ b/app/src/main/java/com/gh/common/util/LogUtils.java @@ -33,6 +33,22 @@ import java.util.List; */ public class LogUtils { + public static void logVideoStreamingUpload(String action, String entrance, String entranceDetail, String videoId) { + JSONObject object = new JSONObject(); + JSONObject payloadObject = new JSONObject(); + + try { + object.put("event", "UPLOAD_VIDEO_STEAMING"); + object.put("action", action); + payloadObject.put("entrance", entrance); + payloadObject.put("entrance_detail", entranceDetail); + payloadObject.put("video_id", videoId); + object.put("payload", payloadObject); + } catch (JSONException e) { + e.printStackTrace(); + } + uploadVideoStreaming(object); + } public static void uploadDownloadEvent(DownloadEntity downloadEntity) { Context context = HaloApp.getInstance().getApplication(); diff --git a/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoActivity.kt b/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoActivity.kt index 0bbd0cf98c..30f845de2b 100644 --- a/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoActivity.kt @@ -61,6 +61,10 @@ class UploadVideoActivity : ToolBarActivity() { private var mUpdatedPosterPath = "" + // 仅用于数据统计 + private lateinit var mEntranceLink: String + private lateinit var mPath: String + override fun getLayoutId(): Int { return R.layout.activity_video_uplaod @@ -105,6 +109,8 @@ class UploadVideoActivity : ToolBarActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + mEntranceLink = intent.getStringExtra(EntranceUtils.KEY_ENTRANCE_LINK) ?: "" + mPath = intent.getStringExtra(EntranceUtils.KEY_PATH) ?: "其他" // toolbar setNavigationTitle("视频上传") @@ -129,10 +135,12 @@ class UploadVideoActivity : ToolBarActivity() { } mBinding.postButton.setOnClickListener { verifyData(false) + LogUtils.logVideoStreamingUpload("点击提交", mPath, mEntranceLink, "") } mBinding.videoPoster.setOnClickListener { - MtaHelper.onEvent("上传视频", "上传视频", "换封面") startMediaStore() + MtaHelper.onEvent("上传视频", "上传视频", "换封面") + LogUtils.logVideoStreamingUpload("换封面", mPath, mEntranceLink, "") } uploadProtocolHandle() @@ -203,6 +211,7 @@ class UploadVideoActivity : ToolBarActivity() { AppExecutor.uiExecutor.executeWithDelay(Runnable { NotificationHelper.showNotificationHintDialog(NotificationUgc.VIDEO) }, 1000) + LogUtils.logVideoStreamingUpload("提交成功", mPath, mEntranceLink, it.data) } else if (it.status == Status.ERROR) { ErrorHelper.handleError(this@UploadVideoActivity, it.exception?.response()?.errorBody()?.string()) } @@ -265,6 +274,7 @@ class UploadVideoActivity : ToolBarActivity() { override fun onMenuItemClick(item: MenuItem): Boolean { if (item.itemId == R.id.menu_text) { + LogUtils.logVideoStreamingUpload("存草稿", mPath, mEntranceLink, "") MtaHelper.onEvent("上传视频", "上传视频", "存草稿") if (mVideoFileEntity?.path.isNullOrEmpty() || !File(mVideoFileEntity?.path).exists()) { toast("保存失败,视频文件不存在") @@ -277,10 +287,12 @@ class UploadVideoActivity : ToolBarActivity() { handleFileNotFound() } MtaHelper.onEvent("上传视频", "上传视频-存草稿", "继续上传") + LogUtils.logVideoStreamingUpload("存草稿-取消", mPath, mEntranceLink, "") }, { verifyData(true) MtaHelper.onEvent("上传视频", "上传视频-存草稿", "确定保存") + LogUtils.logVideoStreamingUpload("存草稿-确定", mPath, mEntranceLink, "") }) } } @@ -479,6 +491,7 @@ class UploadVideoActivity : ToolBarActivity() { mBinding.uploadButton.visibility = View.VISIBLE UploadManager.cancelTask(videoPath) MtaHelper.onEvent("上传视频", "上传视频", "上传暂停") + LogUtils.logVideoStreamingUpload("暂停上传", mPath, mEntranceLink, "") } else if (File(videoPath).exists()) { mBinding.uploadStatus.text = "视频上传中" mBinding.uploadStatus.setTextColor(R.color.text_333333.toColor()) @@ -486,6 +499,7 @@ class UploadVideoActivity : ToolBarActivity() { mBinding.uploadButton.visibility = View.VISIBLE createUploadTask(videoPath) MtaHelper.onEvent("上传视频", "上传视频", "上传继续") + LogUtils.logVideoStreamingUpload("恢复上传", mPath, mEntranceLink, "") } else { handleFileNotFound() toast("上传失败,视频文件不存在") @@ -573,16 +587,28 @@ class UploadVideoActivity : ToolBarActivity() { } override fun handleBackPressed(): Boolean { + LogUtils.logVideoStreamingUpload("返回", mPath, mEntranceLink, "") + if (mViewModel.videoPatch != null) return false if (mVideoFileEntity?.url.isNullOrEmpty()) { DialogUtils.showAlertDialog(this, "提示", "视频正在上传中,确定要返回吗?", "确定返回", - "暂时不了", DialogUtils.ConfirmListener { finish() }, null) + "暂时不了", { + finish() + LogUtils.logVideoStreamingUpload("返回-确定返回", mPath, mEntranceLink, "") + }, { + LogUtils.logVideoStreamingUpload("返回-暂时不了", mPath, mEntranceLink, "") + }) } else { DialogUtils.showAlertDialog(this, "提示", "视频已上传完毕,确定返回并放弃提交吗?", "确定返回", - "继续提交", DialogUtils.ConfirmListener { finish() }, null) + "继续提交", { + LogUtils.logVideoStreamingUpload("返回-确定返回", mPath, mEntranceLink, "") + finish() + }, { + LogUtils.logVideoStreamingUpload("返回-继续提交", mPath, mEntranceLink, "") + }) } return true @@ -604,19 +630,38 @@ class UploadVideoActivity : ToolBarActivity() { const val REQUEST_CODE_IMAGE_STORE = 119 const val REQUEST_CODE_IMAGE_CROP = 120 + /** + * 普通入口(视频投稿) + */ fun getIntent(context: Context, videoPath: String, entrance: String, path: String): Intent { val intent = Intent(context, UploadVideoActivity::class.java) + intent.putExtra(EntranceUtils.KEY_PATH, path) intent.putExtra(EntranceUtils.KEY_ENTRANCE, mergeEntranceAndPath(entrance, path)) intent.putExtra(EntranceUtils.KEY_PATH_VIDEO, videoPath) return intent } + /** + * WEB端入口 + * + * @param link 只用于数据统计 + */ + fun getIntent(context: Context, videoPath: String, link: String, entrance: String, path: String): Intent { + val intent = Intent(context, UploadVideoActivity::class.java) + intent.putExtra(EntranceUtils.KEY_ENTRANCE, mergeEntranceAndPath(entrance, path)) + intent.putExtra(EntranceUtils.KEY_PATH, path) + intent.putExtra(EntranceUtils.KEY_ENTRANCE_LINK, link) + intent.putExtra(EntranceUtils.KEY_PATH_VIDEO, videoPath) + return intent + } + /** * 通过草稿进入 */ fun getIntent(context: Context, videoDraft: VideoDraftEntity, entrance: String, path: String): Intent { val intent = Intent(context, UploadVideoActivity::class.java) intent.putExtra(EntranceUtils.KEY_ENTRANCE, mergeEntranceAndPath(entrance, path)) + intent.putExtra(EntranceUtils.KEY_PATH, path) intent.putExtra(VideoDraftEntity::class.java.simpleName, videoDraft) return intent } @@ -627,6 +672,7 @@ class UploadVideoActivity : ToolBarActivity() { fun getIntent(context: Context, video: VideoEntity, entrance: String, path: String): Intent { val intent = Intent(context, UploadVideoActivity::class.java) intent.putExtra(EntranceUtils.KEY_ENTRANCE, mergeEntranceAndPath(entrance, path)) + intent.putExtra(EntranceUtils.KEY_PATH, path) intent.putExtra(VideoEntity::class.java.simpleName, video) return intent } diff --git a/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoViewModel.kt b/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoViewModel.kt index 19817d40e3..b41d8dfbf2 100644 --- a/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoViewModel.kt @@ -9,6 +9,7 @@ import com.gh.base.fragment.WaitingDialogFragment import com.gh.common.util.UploadImageUtils import com.gh.common.util.toJson import com.gh.common.util.toRequestBody +import com.gh.common.util.tryWithDefaultCatch import com.gh.gamecenter.entity.SimpleGameEntity import com.gh.gamecenter.entity.VideoDraftEntity import com.gh.gamecenter.entity.VideoEntity @@ -56,7 +57,11 @@ class UploadVideoViewModel(application: Application) : AndroidViewModel(applicat override fun onResponse(response: ResponseBody?) { processDialog.postValue(WaitingDialogFragment.WaitingDialogData("", false)) - postLiveData.postValue(Resource.success("")) + var videoId = "" + tryWithDefaultCatch { + videoId = JSONObject(response?.string().toString()).getString("_id") + } + postLiveData.postValue(Resource.success(videoId)) } override fun onFailure(e: HttpException?) {