Commit 0812c7f1881aaf7846c7f587dc103c52c689ed34

Authored by 王琳
1 parent 2767a923

短视频新增上传图片功能,完善短视频列表

app/libs/libcnlivelive.jar
No preview for this file type
app/libs/libcnliveshortvideo.jar
No preview for this file type
app/src/main/AndroidManifest.xml
@@ -128,7 +128,10 @@ @@ -128,7 +128,10 @@
128 android:configChanges="orientation|keyboardHidden|screenSize" 128 android:configChanges="orientation|keyboardHidden|screenSize"
129 android:screenOrientation="portrait" 129 android:screenOrientation="portrait"
130 android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> 130 android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
131 - <activity android:name=".shortvideo.activity.ShortVideoPlayActivity"></activity> 131 + <activity android:name=".shortvideo.activity.ShortVideoPlayActivity"
  132 + android:configChanges="orientation|keyboardHidden|screenSize"
  133 + android:screenOrientation="portrait"
  134 + android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
132 </application> 135 </application>
133 136
134 </manifest> 137 </manifest>
135 \ No newline at end of file 138 \ No newline at end of file
app/src/main/java/com/cnlive/gundam/main/ui/fragment/ConfigFragment.java
@@ -69,7 +69,7 @@ public class ConfigFragment extends Fragment implements View.OnClickListener { @@ -69,7 +69,7 @@ public class ConfigFragment extends Fragment implements View.OnClickListener {
69 if (uid != 0) { 69 if (uid != 0) {
70 //进入个人中心页面 70 //进入个人中心页面
71 Intent intent = new Intent(getActivity(), UserPersonalActivity.class); 71 Intent intent = new Intent(getActivity(), UserPersonalActivity.class);
72 - intent.putExtra("isEdit",false); 72 + intent.putExtra("isEdit", false);
73 startActivity(intent); 73 startActivity(intent);
74 } else { 74 } else {
75 //进入登录页面 75 //进入登录页面
@@ -81,7 +81,13 @@ public class ConfigFragment extends Fragment implements View.OnClickListener { @@ -81,7 +81,13 @@ public class ConfigFragment extends Fragment implements View.OnClickListener {
81 startActivity(new Intent(getActivity(), CommentActivity.class)); 81 startActivity(new Intent(getActivity(), CommentActivity.class));
82 break; 82 break;
83 case R.id.my_video: 83 case R.id.my_video:
84 - startActivity(new Intent(getActivity(), MyVideoActivity.class)); 84 + int userId = UserService.getInstance(getActivity()).getActiveAccountInfo().getUid();
  85 + if (userId != 0) {
  86 + startActivity(new Intent(getActivity(), MyVideoActivity.class));
  87 +
  88 + } else {
  89 + startActivity(new Intent(getActivity(), LoginActivity.class));
  90 + }
85 break; 91 break;
86 92
87 } 93 }
@@ -99,11 +105,11 @@ public class ConfigFragment extends Fragment implements View.OnClickListener { @@ -99,11 +105,11 @@ public class ConfigFragment extends Fragment implements View.OnClickListener {
99 } 105 }
100 106
101 private void notifyUI(boolean isLogin) { 107 private void notifyUI(boolean isLogin) {
102 - if(isLogin){ 108 + if (isLogin) {
103 User activeAccountInfo = UserService.getInstance(getActivity()).getActiveAccountInfo(); 109 User activeAccountInfo = UserService.getInstance(getActivity()).getActiveAccountInfo();
104 Glide.with(getActivity()).load(activeAccountInfo.getFaceurl()).into(binding.headImg); 110 Glide.with(getActivity()).load(activeAccountInfo.getFaceurl()).into(binding.headImg);
105 binding.tvNickname.setText(activeAccountInfo.getNickname()); 111 binding.tvNickname.setText(activeAccountInfo.getNickname());
106 - }else{ 112 + } else {
107 Glide.with(getActivity()).load(R.drawable.cnlive_user_header).into(binding.headImg); 113 Glide.with(getActivity()).load(R.drawable.cnlive_user_header).into(binding.headImg);
108 binding.tvNickname.setText(getString(R.string.click_login)); 114 binding.tvNickname.setText(getString(R.string.click_login));
109 } 115 }
app/src/main/java/com/cnlive/gundam/shortvideo/activity/EditActivity.java
@@ -49,10 +49,12 @@ import com.cnlive.gundam.R; @@ -49,10 +49,12 @@ import com.cnlive.gundam.R;
49 import com.cnlive.gundam.databinding.ActivityEditBinding; 49 import com.cnlive.gundam.databinding.ActivityEditBinding;
50 import com.cnlive.gundam.shortvideo.sticker.StickerAdapter; 50 import com.cnlive.gundam.shortvideo.sticker.StickerAdapter;
51 import com.cnlive.gundam.shortvideo.util.ColorPicker; 51 import com.cnlive.gundam.shortvideo.util.ColorPicker;
  52 +import com.cnlive.gundam.shortvideo.util.FileUtils;
52 import com.cnlive.gundam.shortvideo.videorange.HorizontalListView; 53 import com.cnlive.gundam.shortvideo.videorange.HorizontalListView;
53 import com.cnlive.gundam.shortvideo.videorange.VideoRangeSeekBar; 54 import com.cnlive.gundam.shortvideo.videorange.VideoRangeSeekBar;
54 import com.cnlive.gundam.shortvideo.videorange.VideoThumbnailAdapter; 55 import com.cnlive.gundam.shortvideo.videorange.VideoThumbnailAdapter;
55 import com.cnlive.gundam.shortvideo.videorange.VideoThumbnailInfo; 56 import com.cnlive.gundam.shortvideo.videorange.VideoThumbnailInfo;
  57 +import com.cnlive.gundam.user.auth.UserService;
56 import com.cnlive.lib.upload.listener.CNPutObjectResponseListener; 58 import com.cnlive.lib.upload.listener.CNPutObjectResponseListener;
57 import com.cnlive.lib.upload.model.UploadError; 59 import com.cnlive.lib.upload.model.UploadError;
58 import com.cnlive.libs.shortvideo.kit.CNEditKit; 60 import com.cnlive.libs.shortvideo.kit.CNEditKit;
@@ -844,11 +846,6 @@ public class EditActivity extends AppCompatActivity implements ActivityCompat.On @@ -844,11 +846,6 @@ public class EditActivity extends AppCompatActivity implements ActivityCompat.On
844 Log.e(TAG, bitmap + " : " + strings[0]); 846 Log.e(TAG, bitmap + " : " + strings[0]);
845 binding.editBarBottom.audioChoose.originAudioReverb.setSelection(0); 847 binding.editBarBottom.audioChoose.originAudioReverb.setSelection(0);
846 binding.editBarBottom.audioChoose.originAudioEffect.setSelection(0); 848 binding.editBarBottom.audioChoose.originAudioEffect.setSelection(0);
847 -// if (mComposeAlertDialog != null) {  
848 -// mComposeAlertDialog.composeFinished(strings[0]);  
849 -// mComposeFinished = true;  
850 -// }  
851 -// mEditKit.getUploadInfo(strings[0], "test.mp4", "", mPutObjectResponseListener);  
852 showVideoDialog(bitmap, strings[0]); 849 showVideoDialog(bitmap, strings[0]);
853 } 850 }
854 case ShortVideoConstants.SHORTVIDEO_COMPOSE_ABORTED: 851 case ShortVideoConstants.SHORTVIDEO_COMPOSE_ABORTED:
@@ -869,7 +866,9 @@ public class EditActivity extends AppCompatActivity implements ActivityCompat.On @@ -869,7 +866,9 @@ public class EditActivity extends AppCompatActivity implements ActivityCompat.On
869 866
870 private AlertDialog uploadVideoMessageDialog; 867 private AlertDialog uploadVideoMessageDialog;
871 868
872 - public void showVideoDialog(Bitmap bitmap, final String fileUrl) { 869 + public void showVideoDialog(final Bitmap bitmap, final String fileUrl) {
  870 + final String userId = String.valueOf(UserService.getInstance(this).getActiveAccountInfo().getUid());
  871 + Log.e("Lynntest", userId);
873 LayoutInflater layoutInflater = LayoutInflater.from(this); 872 LayoutInflater layoutInflater = LayoutInflater.from(this);
874 View videoMesDialog = layoutInflater.inflate(R.layout.upload_video_dialog, null); 873 View videoMesDialog = layoutInflater.inflate(R.layout.upload_video_dialog, null);
875 874
@@ -906,7 +905,7 @@ public class EditActivity extends AppCompatActivity implements ActivityCompat.On @@ -906,7 +905,7 @@ public class EditActivity extends AppCompatActivity implements ActivityCompat.On
906 mComposeAlertDialog.composeFinished(fileUrl); 905 mComposeAlertDialog.composeFinished(fileUrl);
907 mComposeFinished = true; 906 mComposeFinished = true;
908 } 907 }
909 - mEditKit.getUploadInfo(fileUrl, titleStr.concat(".mp4"), desStr, mPutObjectResponseListener); 908 + mEditKit.getUploadInfo(userId, fileUrl, titleStr.concat(".mp4"), desStr, new File(FileUtils.saveBitmap(EditActivity.this, bitmap)), null, mPutObjectResponseListener);
910 uploadVideoMessageDialog.dismiss(); 909 uploadVideoMessageDialog.dismiss();
911 } else { 910 } else {
912 Toast.makeText(EditActivity.this, "标题不能为空哦~", Toast.LENGTH_SHORT).show(); 911 Toast.makeText(EditActivity.this, "标题不能为空哦~", Toast.LENGTH_SHORT).show();
app/src/main/java/com/cnlive/gundam/shortvideo/activity/ShortVideoActivity.java
@@ -596,7 +596,7 @@ public class ShortVideoActivity extends AppCompatActivity { @@ -596,7 +596,7 @@ public class ShortVideoActivity extends AppCompatActivity {
596 break; 596 break;
597 case R.id.short_video_record_right_img: 597 case R.id.short_video_record_right_img:
598 if (binding.shortVideoRecordBottomLayout.shortVideoRecordRightImg.getDrawable().getLevel() == 3) { 598 if (binding.shortVideoRecordBottomLayout.shortVideoRecordRightImg.getDrawable().getLevel() == 3) {
599 - Toast.makeText(ShortVideoActivity.this, "上传", Toast.LENGTH_SHORT).show(); 599 +// Toast.makeText(ShortVideoActivity.this, "上传", Toast.LENGTH_SHORT).show();
600 onNextClick(); 600 onNextClick();
601 601
602 } else if (binding.shortVideoRecordBottomLayout.shortVideoRecordRightImg.getDrawable().getLevel() == 1) { 602 } else if (binding.shortVideoRecordBottomLayout.shortVideoRecordRightImg.getDrawable().getLevel() == 1) {
app/src/main/java/com/cnlive/gundam/shortvideo/activity/ShortVideoPlayActivity.java
@@ -178,6 +178,7 @@ public class ShortVideoPlayActivity extends AppCompatActivity { @@ -178,6 +178,7 @@ public class ShortVideoPlayActivity extends AppCompatActivity {
178 toppanel = playBinding.topPlayerPanel; 178 toppanel = playBinding.topPlayerPanel;
179 playBinding.videoTitle.setText(name); 179 playBinding.videoTitle.setText(name);
180 playBinding.videoDescription.setText(des); 180 playBinding.videoDescription.setText(des);
  181 + mPlayerSeekbar.setOnSeekBarChangeListener(mSeekBarListener);
181 } 182 }
182 183
183 private MediaPlayer.OnPreparedListener mOnPreparedListener = new MediaPlayer.OnPreparedListener() { 184 private MediaPlayer.OnPreparedListener mOnPreparedListener = new MediaPlayer.OnPreparedListener() {
@@ -239,7 +240,7 @@ public class ShortVideoPlayActivity extends AppCompatActivity { @@ -239,7 +240,7 @@ public class ShortVideoPlayActivity extends AppCompatActivity {
239 private IMediaPlayer.OnCompletionListener mOnCompletionListener = new IMediaPlayer.OnCompletionListener() { 240 private IMediaPlayer.OnCompletionListener mOnCompletionListener = new IMediaPlayer.OnCompletionListener() {
240 @Override 241 @Override
241 public void onCompletion(IMediaPlayer mp) { 242 public void onCompletion(IMediaPlayer mp) {
242 - Toast.makeText(mContext, "OnCompletionListener, play complete.", Toast.LENGTH_LONG).show(); 243 +// Toast.makeText(mContext, "OnCompletionListener, play complete.", Toast.LENGTH_LONG).show();
243 videoPlayEnd(); 244 videoPlayEnd();
244 } 245 }
245 }; 246 };
@@ -272,10 +273,10 @@ public class ShortVideoPlayActivity extends AppCompatActivity { @@ -272,10 +273,10 @@ public class ShortVideoPlayActivity extends AppCompatActivity {
272 Log.d(TAG, "Buffering End."); 273 Log.d(TAG, "Buffering End.");
273 break; 274 break;
274 case MediaPlayer.MEDIA_INFO_AUDIO_RENDERING_START: 275 case MediaPlayer.MEDIA_INFO_AUDIO_RENDERING_START:
275 - Toast.makeText(mContext, "Audio Rendering Start", Toast.LENGTH_SHORT).show(); 276 +// Toast.makeText(mContext, "Audio Rendering Start", Toast.LENGTH_SHORT).show();
276 break; 277 break;
277 case MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START: 278 case MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START:
278 - Toast.makeText(mContext, "Video Rendering Start", Toast.LENGTH_SHORT).show(); 279 +// Toast.makeText(mContext, "Video Rendering Start", Toast.LENGTH_SHORT).show();
279 break; 280 break;
280 // case MediaPlayer.MEDIA_INFO_SUGGEST_RELOAD: 281 // case MediaPlayer.MEDIA_INFO_SUGGEST_RELOAD:
281 // // Player find a new stream(video or audio), and we could reload the video. 282 // // Player find a new stream(video or audio), and we could reload the video.
@@ -283,7 +284,7 @@ public class ShortVideoPlayActivity extends AppCompatActivity { @@ -283,7 +284,7 @@ public class ShortVideoPlayActivity extends AppCompatActivity {
283 // mVideoView.reload(mDataSource, false); 284 // mVideoView.reload(mDataSource, false);
284 // break; 285 // break;
285 case MediaPlayer.MEDIA_INFO_RELOADED: 286 case MediaPlayer.MEDIA_INFO_RELOADED:
286 - Toast.makeText(mContext, "Succeed to reload video.", Toast.LENGTH_SHORT).show(); 287 +// Toast.makeText(mContext, "Succeed to reload video.", Toast.LENGTH_SHORT).show();
287 Log.d(TAG, "Succeed to reload video."); 288 Log.d(TAG, "Succeed to reload video.");
288 return false; 289 return false;
289 } 290 }
@@ -408,6 +409,9 @@ public class ShortVideoPlayActivity extends AppCompatActivity { @@ -408,6 +409,9 @@ public class ShortVideoPlayActivity extends AppCompatActivity {
408 case R.id.player_start: 409 case R.id.player_start:
409 onPlayBtnClick(); 410 onPlayBtnClick();
410 break; 411 break;
  412 + case R.id.back:
  413 + videoPlayEnd();
  414 + break;
411 } 415 }
412 } 416 }
413 417
app/src/main/java/com/cnlive/gundam/shortvideo/fragment/MyVideoFragment.java
@@ -57,6 +57,8 @@ public class MyVideoFragment extends Fragment implements View.OnClickListener, @@ -57,6 +57,8 @@ public class MyVideoFragment extends Fragment implements View.OnClickListener,
57 private Handler mMainHandler; 57 private Handler mMainHandler;
58 private int maxDuration; 58 private int maxDuration;
59 59
  60 + private String userId;
  61 +
60 public MyVideoFragment() { 62 public MyVideoFragment() {
61 // Required empty public constructor 63 // Required empty public constructor
62 } 64 }
@@ -92,8 +94,11 @@ public class MyVideoFragment extends Fragment implements View.OnClickListener, @@ -92,8 +94,11 @@ public class MyVideoFragment extends Fragment implements View.OnClickListener,
92 } 94 }
93 95
94 private void loadData() { 96 private void loadData() {
  97 + userId = String.valueOf(UserService.getInstance(getActivity()).getActiveAccountInfo().getUid());
  98 +
95 Map<String, String> params = new HashMap<>(); 99 Map<String, String> params = new HashMap<>();
96 params.put("appId", Config.getAppId()); 100 params.put("appId", Config.getAppId());
  101 + params.put("userId", userId);
97 params.put("page", "1"); 102 params.put("page", "1");
98 params.put("pageSize", "15"); 103 params.put("pageSize", "15");
99 params.put("platform_id", Config.getContext().getPackageName()); 104 params.put("platform_id", Config.getContext().getPackageName());
@@ -132,13 +137,8 @@ public class MyVideoFragment extends Fragment implements View.OnClickListener, @@ -132,13 +137,8 @@ public class MyVideoFragment extends Fragment implements View.OnClickListener,
132 getActivity().finish(); 137 getActivity().finish();
133 break; 138 break;
134 case R.id.record: 139 case R.id.record:
135 - User user = UserService.getInstance(getActivity()).getActiveAccountInfo();  
136 - if (user.getUid() == 0) {  
137 - startActivity(new Intent(getActivity(), LoginActivity.class));  
138 - } else {  
139 - onRecordClick();  
140 - onAuthClick();  
141 - } 140 + onRecordClick();
  141 + onAuthClick();
142 break; 142 break;
143 } 143 }
144 } 144 }
@@ -207,7 +207,7 @@ public class MyVideoFragment extends Fragment implements View.OnClickListener, @@ -207,7 +207,7 @@ public class MyVideoFragment extends Fragment implements View.OnClickListener,
207 public void run() { 207 public void run() {
208 AuthInfoManager.getInstance().removeAuthResultListener(mCheckAuthResultListener); 208 AuthInfoManager.getInstance().removeAuthResultListener(mCheckAuthResultListener);
209 if (AuthInfoManager.getInstance().getAuthState()) { 209 if (AuthInfoManager.getInstance().getAuthState()) {
210 - Toast.makeText(getActivity(), "Auth Success", Toast.LENGTH_SHORT).show(); 210 +// Toast.makeText(getActivity(), "Auth Success", Toast.LENGTH_SHORT).show();
211 } else { 211 } else {
212 Toast.makeText(getActivity(), "Auth Failed", Toast.LENGTH_SHORT).show(); 212 Toast.makeText(getActivity(), "Auth Failed", Toast.LENGTH_SHORT).show();
213 } 213 }
@@ -243,6 +243,8 @@ public class MyVideoFragment extends Fragment implements View.OnClickListener, @@ -243,6 +243,8 @@ public class MyVideoFragment extends Fragment implements View.OnClickListener,
243 if (model != null && "0".equals(model.getCode())) { 243 if (model != null && "0".equals(model.getCode())) {
244 if (model.getData() == null) { 244 if (model.getData() == null) {
245 Toast.makeText(getActivity(), "暂无数据", Toast.LENGTH_SHORT).show(); 245 Toast.makeText(getActivity(), "暂无数据", Toast.LENGTH_SHORT).show();
  246 + binding.recyclerView.setVisibility(View.GONE);
  247 + binding.emptyView.setVisibility(View.VISIBLE);
246 } else { 248 } else {
247 adapter.updateItems(model.getData().getList()); 249 adapter.updateItems(model.getData().getList());
248 } 250 }
app/src/main/java/com/cnlive/gundam/shortvideo/model/ShortVideoInfo.java
1 package com.cnlive.gundam.shortvideo.model; 1 package com.cnlive.gundam.shortvideo.model;
2 2
3 -import com.cnlive.gundam.shortvideo.util.DateUtils;  
4 -  
5 import java.io.Serializable; 3 import java.io.Serializable;
6 4
7 /** 5 /**
@@ -9,33 +7,38 @@ import java.io.Serializable; @@ -9,33 +7,38 @@ import java.io.Serializable;
9 */ 7 */
10 8
11 public class ShortVideoInfo implements Serializable { 9 public class ShortVideoInfo implements Serializable {
12 - private String appId;  
13 - private String createTime; 10 +// private String appId;
  11 +// private String createTime;
14 private String description; 12 private String description;
15 - private String id;  
16 - private String md5; 13 +// private String id;
  14 +// private String md5;
17 private String name; 15 private String name;
18 - private String path;  
19 - private String spId; 16 + private String picKey;
  17 +// private String path;
  18 +// private String spId;
20 private String status; 19 private String status;
21 - private String updateTime; 20 +// private String updateTime;
22 private String videoId; 21 private String videoId;
23 22
24 - public String getAppId() {  
25 - return appId;  
26 - }  
27 -  
28 - public void setAppId(String appId) {  
29 - this.appId = appId;  
30 - }  
31 -  
32 - public String getCreateTime() {  
33 - return DateUtils.getDateToString(Long.parseLong(createTime));  
34 - }  
35 -  
36 - public void setCreateTime(String createTime) {  
37 - this.createTime = createTime;  
38 - } 23 +// public String getAppId() {
  24 +// return appId;
  25 +// }
  26 +//
  27 +// public void setAppId(String appId) {
  28 +// this.appId = appId;
  29 +// }
  30 +//
  31 +// public String getCreateTime() {
  32 +// if (createTime != null) {
  33 +// return DateUtils.getDateToString(Long.parseLong(createTime));
  34 +// }else {
  35 +// return "";
  36 +// }
  37 +// }
  38 +//
  39 +// public void setCreateTime(String createTime) {
  40 +// this.createTime = createTime;
  41 +// }
39 42
40 public String getDescription() { 43 public String getDescription() {
41 return description; 44 return description;
@@ -45,21 +48,21 @@ public class ShortVideoInfo implements Serializable { @@ -45,21 +48,21 @@ public class ShortVideoInfo implements Serializable {
45 this.description = description; 48 this.description = description;
46 } 49 }
47 50
48 - public String getId() {  
49 - return id;  
50 - }  
51 -  
52 - public void setId(String id) {  
53 - this.id = id;  
54 - }  
55 -  
56 - public String getMd5() {  
57 - return md5;  
58 - }  
59 -  
60 - public void setMd5(String md5) {  
61 - this.md5 = md5;  
62 - } 51 +// public String getId() {
  52 +// return id;
  53 +// }
  54 +//
  55 +// public void setId(String id) {
  56 +// this.id = id;
  57 +// }
  58 +//
  59 +// public String getMd5() {
  60 +// return md5;
  61 +// }
  62 +//
  63 +// public void setMd5(String md5) {
  64 +// this.md5 = md5;
  65 +// }
63 66
64 public String getName() { 67 public String getName() {
65 return name; 68 return name;
@@ -69,21 +72,29 @@ public class ShortVideoInfo implements Serializable { @@ -69,21 +72,29 @@ public class ShortVideoInfo implements Serializable {
69 this.name = name; 72 this.name = name;
70 } 73 }
71 74
72 - public String getPath() {  
73 - return path;  
74 - }  
75 -  
76 - public void setPath(String path) {  
77 - this.path = path; 75 + public String getPicKey() {
  76 + return picKey;
78 } 77 }
79 78
80 - public String getSpId() {  
81 - return spId; 79 + public void setPicKey(String picKey) {
  80 + this.picKey = picKey;
82 } 81 }
83 82
84 - public void setSpId(String spId) {  
85 - this.spId = spId;  
86 - } 83 + // public String getPath() {
  84 +// return path;
  85 +// }
  86 +//
  87 +// public void setPath(String path) {
  88 +// this.path = path;
  89 +// }
  90 +//
  91 +// public String getSpId() {
  92 +// return spId;
  93 +// }
  94 +//
  95 +// public void setSpId(String spId) {
  96 +// this.spId = spId;
  97 +// }
87 98
88 public String getStatus() { 99 public String getStatus() {
89 return status; 100 return status;
@@ -93,13 +104,13 @@ public class ShortVideoInfo implements Serializable { @@ -93,13 +104,13 @@ public class ShortVideoInfo implements Serializable {
93 this.status = status; 104 this.status = status;
94 } 105 }
95 106
96 - public String getUpdateTime() {  
97 - return updateTime;  
98 - }  
99 -  
100 - public void setUpdateTime(String updateTime) {  
101 - this.updateTime = updateTime;  
102 - } 107 +// public String getUpdateTime() {
  108 +// return updateTime;
  109 +// }
  110 +//
  111 +// public void setUpdateTime(String updateTime) {
  112 +// this.updateTime = updateTime;
  113 +// }
103 114
104 public String getVideoId() { 115 public String getVideoId() {
105 return videoId; 116 return videoId;
@@ -112,16 +123,10 @@ public class ShortVideoInfo implements Serializable { @@ -112,16 +123,10 @@ public class ShortVideoInfo implements Serializable {
112 @Override 123 @Override
113 public String toString() { 124 public String toString() {
114 return "ShortVideoInfo{" + 125 return "ShortVideoInfo{" +
115 - "appId='" + appId + '\'' +  
116 - ", createTime='" + createTime + '\'' +  
117 - ", description='" + description + '\'' +  
118 - ", id='" + id + '\'' +  
119 - ", md5='" + md5 + '\'' + 126 + "description='" + description + '\'' +
120 ", name='" + name + '\'' + 127 ", name='" + name + '\'' +
121 - ", path='" + path + '\'' +  
122 - ", spId='" + spId + '\'' + 128 + ", picKey='" + picKey + '\'' +
123 ", status='" + status + '\'' + 129 ", status='" + status + '\'' +
124 - ", updateTime='" + updateTime + '\'' +  
125 ", videoId='" + videoId + '\'' + 130 ", videoId='" + videoId + '\'' +
126 '}'; 131 '}';
127 } 132 }
app/src/main/java/com/cnlive/gundam/shortvideo/util/FileUtils.java
@@ -5,6 +5,7 @@ import android.content.Context; @@ -5,6 +5,7 @@ import android.content.Context;
5 import android.content.Intent; 5 import android.content.Intent;
6 import android.database.Cursor; 6 import android.database.Cursor;
7 import android.database.DatabaseUtils; 7 import android.database.DatabaseUtils;
  8 +import android.graphics.Bitmap;
8 import android.media.MediaMetadataRetriever; 9 import android.media.MediaMetadataRetriever;
9 import android.net.Uri; 10 import android.net.Uri;
10 import android.os.Build; 11 import android.os.Build;
@@ -15,6 +16,9 @@ import android.util.Log; @@ -15,6 +16,9 @@ import android.util.Log;
15 import android.webkit.MimeTypeMap; 16 import android.webkit.MimeTypeMap;
16 17
17 import java.io.File; 18 import java.io.File;
  19 +import java.io.FileOutputStream;
  20 +import java.io.IOException;
  21 +import java.util.UUID;
18 22
19 /** 23 /**
20 * Created by Lynn on 6/28/2017. 24 * Created by Lynn on 6/28/2017.
@@ -308,4 +312,54 @@ public class FileUtils { @@ -308,4 +312,54 @@ public class FileUtils {
308 } 312 }
309 return duration; 313 return duration;
310 } 314 }
  315 +
  316 +
  317 + private static final String SD_PATH = "/sdcard/cn_sv_cover_img";
  318 + private static final String IN_PATH = "/dskqxt/pic/";
  319 +
  320 + /**
  321 + * 随机生产文件名
  322 + *
  323 + * @return
  324 + */
  325 + private static String generateFileName() {
  326 + return UUID.randomUUID().toString();
  327 + }
  328 +
  329 + /**
  330 + * 保存bitmap到本地
  331 + *
  332 + * @param context
  333 + * @param mBitmap
  334 + * @return
  335 + */
  336 + public static String saveBitmap(Context context, Bitmap mBitmap) {
  337 + String savePath;
  338 + File filePic;
  339 + if (Environment.getExternalStorageState().equals(
  340 + Environment.MEDIA_MOUNTED)) {
  341 + savePath = SD_PATH;
  342 + } else {
  343 + savePath = context.getApplicationContext().getFilesDir()
  344 + .getAbsolutePath()
  345 + + IN_PATH;
  346 + }
  347 + try {
  348 + filePic = new File(savePath + generateFileName() + ".png");
  349 + if (!filePic.exists()) {
  350 + filePic.getParentFile().mkdirs();
  351 + filePic.createNewFile();
  352 + }
  353 + FileOutputStream fos = new FileOutputStream(filePic);
  354 + mBitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
  355 + fos.flush();
  356 + fos.close();
  357 + } catch (IOException e) {
  358 + // TODO Auto-generated catch block
  359 + e.printStackTrace();
  360 + return null;
  361 + }
  362 +
  363 + return filePic.getAbsolutePath();
  364 + }
311 } 365 }
app/src/main/res/drawable/edit_title_choose.xml
1 <?xml version="1.0" encoding="utf-8"?> 1 <?xml version="1.0" encoding="utf-8"?>
2 <selector xmlns:android="http://schemas.android.com/apk/res/android"> 2 <selector xmlns:android="http://schemas.android.com/apk/res/android">
3 <item android:color="#ffcc00" android:state_activated="true" /> 3 <item android:color="#ffcc00" android:state_activated="true" />
4 - <item android:color="@android:color/white" /> 4 + <item android:color="#EEE8AA" />
5 </selector> 5 </selector>
6 \ No newline at end of file 6 \ No newline at end of file
app/src/main/res/layout/activity_short_video_play.xml
@@ -42,6 +42,7 @@ @@ -42,6 +42,7 @@
42 android:layout_height="wrap_content" 42 android:layout_height="wrap_content"
43 android:layout_gravity="center_vertical" 43 android:layout_gravity="center_vertical"
44 android:layout_marginLeft="10dp" 44 android:layout_marginLeft="10dp"
  45 + android:onClick="onClick"
45 android:src="@drawable/player_back" /> 46 android:src="@drawable/player_back" />
46 47
47 <TextView 48 <TextView
app/src/main/res/layout/edit_bottombar.xml
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 <RelativeLayout 4 <RelativeLayout
5 android:layout_width="match_parent" 5 android:layout_width="match_parent"
6 android:layout_height="match_parent" 6 android:layout_height="match_parent"
7 - android:background="#616060"> 7 + android:background="@color/white">
8 8
9 <RelativeLayout 9 <RelativeLayout
10 android:id="@+id/edit_layout" 10 android:id="@+id/edit_layout"
@@ -106,7 +106,7 @@ @@ -106,7 +106,7 @@
106 android:layout_width="match_parent" 106 android:layout_width="match_parent"
107 android:layout_height="2px" 107 android:layout_height="2px"
108 android:layout_below="@+id/edit_layout" 108 android:layout_below="@+id/edit_layout"
109 - android:background="#FF000000" /> 109 + android:background="@color/ffcc00" />
110 110
111 <FrameLayout 111 <FrameLayout
112 android:layout_width="match_parent" 112 android:layout_width="match_parent"
app/src/main/res/layout/edit_caption.xml
@@ -21,8 +21,8 @@ @@ -21,8 +21,8 @@
21 android:layout_weight="1" 21 android:layout_weight="1"
22 android:hint="input text ..." 22 android:hint="input text ..."
23 android:paddingLeft="8dp" 23 android:paddingLeft="8dp"
24 - android:textColor="#ffffff"  
25 - android:textColorHint="#ffffff" /> 24 + android:textColor="#ffcc00"
  25 + android:textColorHint="#f0f0f0" />
26 26
27 <ImageView 27 <ImageView
28 android:id="@+id/text_color" 28 android:id="@+id/text_color"
@@ -30,7 +30,7 @@ @@ -30,7 +30,7 @@
30 android:layout_height="25dp" 30 android:layout_height="25dp"
31 android:layout_gravity="center_vertical" 31 android:layout_gravity="center_vertical"
32 android:layout_margin="10dp" 32 android:layout_margin="10dp"
33 - android:background="#ffffff" 33 + android:background="#ffcc00"
34 android:onClick="onClick" /> 34 android:onClick="onClick" />
35 35
36 </LinearLayout> 36 </LinearLayout>
app/src/main/res/layout/fragment_my_video.xml
@@ -21,29 +21,39 @@ @@ -21,29 +21,39 @@
21 android:layout_height="match_parent"> 21 android:layout_height="match_parent">
22 22
23 <android.support.v4.widget.SwipeRefreshLayout 23 <android.support.v4.widget.SwipeRefreshLayout
24 - android:id="@+id/contentView"  
25 - android:layout_width="match_parent"  
26 - android:layout_height="match_parent">  
27 -  
28 - <LinearLayout 24 + android:id="@+id/contentView"
29 android:layout_width="match_parent" 25 android:layout_width="match_parent"
30 - android:layout_height="wrap_content"  
31 - android:orientation="vertical"> 26 + android:layout_height="match_parent">
32 27
33 - <include  
34 - android:id="@+id/myVideoIncludLayout"  
35 - layout="@layout/toolbar_my_video" />  
36 -  
37 - <include layout="@layout/user_divider_head_line" />  
38 -  
39 - <android.support.v7.widget.RecyclerView  
40 - android:id="@+id/recycler_view" 28 + <LinearLayout
41 android:layout_width="match_parent" 29 android:layout_width="match_parent"
42 - android:layout_height="match_parent"  
43 - app:adapter="@{listAdapter}"  
44 - app:layoutManager="@{layoutManager}" />  
45 -  
46 - </LinearLayout> 30 + android:layout_height="wrap_content"
  31 + android:orientation="vertical">
  32 +
  33 + <include
  34 + android:id="@+id/myVideoIncludLayout"
  35 + layout="@layout/toolbar_my_video" />
  36 +
  37 + <include layout="@layout/user_divider_head_line" />
  38 +
  39 + <android.support.v7.widget.RecyclerView
  40 + android:id="@+id/recycler_view"
  41 + android:layout_width="match_parent"
  42 + android:layout_height="match_parent"
  43 + app:adapter="@{listAdapter}"
  44 + app:layoutManager="@{layoutManager}" />
  45 +
  46 + <TextView
  47 + android:id="@+id/empty_view"
  48 + android:layout_width="match_parent"
  49 + android:layout_height="match_parent"
  50 + android:layout_gravity="center"
  51 + android:gravity="center"
  52 + android:text="您还没有录制过视频\n\n快去录制吧⁽⁽ଘ( ˊᵕˋ )ଓ⁾⁾*"
  53 + android:textSize="20sp"
  54 + android:visibility="gone" />
  55 +
  56 + </LinearLayout>
47 </android.support.v4.widget.SwipeRefreshLayout> 57 </android.support.v4.widget.SwipeRefreshLayout>
48 </RelativeLayout> 58 </RelativeLayout>
49 59
app/src/main/res/layout/layout_item_short_video.xml
@@ -36,7 +36,9 @@ @@ -36,7 +36,9 @@
36 android:id="@+id/cover_image" 36 android:id="@+id/cover_image"
37 android:layout_width="90dp" 37 android:layout_width="90dp"
38 android:layout_height="90dp" 38 android:layout_height="90dp"
39 - android:src="@drawable/default_pic" /> 39 + android:padding="2dp"
  40 + app:error="@{@drawable/default_pic}"
  41 + app:imageUrl="@{shortVideoInfo.picKey}" />
40 42
41 <LinearLayout 43 <LinearLayout
42 android:layout_width="match_parent" 44 android:layout_width="match_parent"
@@ -53,14 +55,14 @@ @@ -53,14 +55,14 @@
53 android:textColor="@color/black" 55 android:textColor="@color/black"
54 android:textSize="18sp" /> 56 android:textSize="18sp" />
55 57
56 - <TextView  
57 - android:id="@+id/video_time"  
58 - android:layout_width="wrap_content"  
59 - android:layout_height="wrap_content"  
60 - android:layout_marginLeft="10dp"  
61 - android:layout_marginTop="10dp"  
62 - android:text="@{shortVideoInfo.createTime}"  
63 - android:textSize="14sp" /> 58 + <!--<TextView-->
  59 + <!--android:id="@+id/video_time"-->
  60 + <!--android:layout_width="wrap_content"-->
  61 + <!--android:layout_height="wrap_content"-->
  62 + <!--android:layout_marginLeft="10dp"-->
  63 + <!--android:layout_marginTop="10dp"-->
  64 + <!--android:text="@{shortVideoInfo.createTime}"-->
  65 + <!--android:textSize="14sp" />-->
64 66
65 <TextView 67 <TextView
66 android:id="@+id/video_description" 68 android:id="@+id/video_description"