Skip to content

Commit 4ab72e3

Browse files
author
carolsuo
committed
Android:XiaoZhiBo:UI对齐iOS、增加录屏入口
1 parent 37927a6 commit 4ab72e3

File tree

92 files changed

+1592
-370
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+1592
-370
lines changed

Android/XiaoZhiBo/app/src/main/AndroidManifest.xml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,30 @@
7979
android:name=".anchor.TCCameraAnchorActivity"
8080
android:screenOrientation="portrait"
8181
android:windowSoftInputMode="adjustNothing" />
82+
<activity
83+
android:name=".anchor.screen.TCScreenAnchorActivity"
84+
android:theme="@style/RecordActivityTheme"
85+
android:configChanges="orientation|keyboardHidden|screenSize"
86+
android:screenOrientation="portrait"
87+
android:windowSoftInputMode="adjustNothing"
88+
android:launchMode="singleTask">
89+
<intent-filter>
90+
<category android:name="android.intent.category.DEFAULT" />
91+
</intent-filter>
92+
</activity>
93+
<service
94+
android:name=".anchor.screen.TCScreenRecordService"
95+
android:enabled="true"
96+
android:exported="false">
97+
98+
</service>
8299
<activity
83100
android:name=".profile.TCEditUseInfoActivity"
84101
android:screenOrientation="portrait" />
85102

103+
<activity android:name="com.tencent.rtmp.video.TXScreenCapture$TXScreenCaptureAssistantActivity" android:theme="@android:style/Theme.Translucent" />
104+
105+
86106
<provider
87107
android:name="android.support.v4.content.FileProvider"
88108
android:authorities="com.tencent.qcloud.xiaozhibo.fileprovider"

Android/XiaoZhiBo/app/src/main/java/com/tencent/liteav/demo/lvb/liveroom/MLVBLiveRoomImpl.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3133,6 +3133,10 @@ public void onPushEvent(final int event, final Bundle param) {
31333133
String msg = "[LivePusher] 推流失败[网络断开]";
31343134
TXCLog.e(TAG,msg);
31353135
callbackOnThread(mCallback, "onError", event, msg);
3136+
} else if (event == TXLiveConstants.PUSH_ERR_SCREEN_CAPTURE_START_FAILED) {
3137+
String msg = "[LivePusher] 推流失败[录屏启动失败]";
3138+
TXCLog.e(TAG,msg);
3139+
callbackOnThread(mCallback, "onError", event, msg);
31363140
}
31373141
}
31383142

Android/XiaoZhiBo/app/src/main/java/com/tencent/qcloud/xiaozhibo/anchor/TCBaseAnchorActivity.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747

4848
import java.io.UnsupportedEncodingException;
4949
import java.util.ArrayList;
50+
import java.util.Locale;
5051
import java.util.Timer;
5152
import java.util.TimerTask;
5253

@@ -578,7 +579,18 @@ public void run() {
578579
* 如:观看数量、点赞数量、直播时长数
579580
*/
580581
protected void showPublishFinishDetailsDialog() {
581-
582+
//确认则显示观看detail
583+
FinishDetailDialogFragment dialogFragment = new FinishDetailDialogFragment();
584+
Bundle args = new Bundle();
585+
args.putString("time", TCUtils.formattedTime(mSecond));
586+
args.putString("heartCount", String.format(Locale.CHINA, "%d", mHeartCount));
587+
args.putString("totalMemberCount", String.format(Locale.CHINA, "%d", mTotalMemberCount));
588+
dialogFragment.setArguments(args);
589+
dialogFragment.setCancelable(false);
590+
if (dialogFragment.isAdded())
591+
dialogFragment.dismiss();
592+
else
593+
dialogFragment.show(getFragmentManager(), "");
582594
}
583595

584596
/**

Android/XiaoZhiBo/app/src/main/java/com/tencent/qcloud/xiaozhibo/anchor/TCCameraAnchorActivity.java

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -428,8 +428,8 @@ public void onClick(View v) {
428428
}
429429
mFlashOn = !mFlashOn;
430430
mFlashView.setBackgroundDrawable(mFlashOn ?
431-
getResources().getDrawable(R.drawable.icon_flash_pressed) :
432-
getResources().getDrawable(R.drawable.icon_flash));
431+
getResources().getDrawable(R.drawable.flash_on) :
432+
getResources().getDrawable(R.drawable.flash_off));
433433

434434
break;
435435
case R.id.beauty_btn:
@@ -534,21 +534,4 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis
534534
break;
535535
}
536536
}
537-
538-
@Override
539-
protected void showPublishFinishDetailsDialog() {
540-
super.showPublishFinishDetailsDialog();
541-
//确认则显示观看detail
542-
FinishDetailDialogFragment dialogFragment = new FinishDetailDialogFragment();
543-
Bundle args = new Bundle();
544-
args.putString("time", TCUtils.formattedTime(mSecond));
545-
args.putString("heartCount", String.format(Locale.CHINA, "%d", mHeartCount));
546-
args.putString("totalMemberCount", String.format(Locale.CHINA, "%d", mTotalMemberCount));
547-
dialogFragment.setArguments(args);
548-
dialogFragment.setCancelable(false);
549-
if (dialogFragment.isAdded())
550-
dialogFragment.dismiss();
551-
else
552-
dialogFragment.show(getFragmentManager(), "");
553-
}
554537
}

Android/XiaoZhiBo/app/src/main/java/com/tencent/qcloud/xiaozhibo/anchor/prepare/TCAnchorPrepareActivity.java

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,14 @@
2323
import android.view.Window;
2424
import android.view.WindowManager;
2525
import android.widget.ImageView;
26+
import android.widget.RadioGroup;
2627
import android.widget.TextView;
2728
import android.widget.Toast;
2829

2930
import com.bumptech.glide.Glide;
3031
import com.bumptech.glide.RequestManager;
3132
import com.tencent.qcloud.xiaozhibo.R;
33+
import com.tencent.qcloud.xiaozhibo.anchor.screen.TCScreenAnchorActivity;
3234
import com.tencent.qcloud.xiaozhibo.common.net.TCHTTPMgr;
3335
import com.tencent.qcloud.xiaozhibo.common.utils.TCConstants;
3436
import com.tencent.qcloud.xiaozhibo.common.upload.TCUploadHelper;
@@ -40,6 +42,7 @@
4042
import org.json.JSONObject;
4143

4244
import java.io.File;
45+
import java.io.IOException;
4346
import java.util.ArrayList;
4447
import java.util.List;
4548

@@ -58,7 +61,7 @@
5861
* <p>
5962
* 5. 设置分享到微信、微博、QQ等
6063
*/
61-
public class TCAnchorPrepareActivity extends Activity implements View.OnClickListener, TCUploadHelper.OnUploadListener, TCLocationHelper.OnLocationListener {
64+
public class TCAnchorPrepareActivity extends Activity implements View.OnClickListener, TCUploadHelper.OnUploadListener, TCLocationHelper.OnLocationListener, RadioGroup.OnCheckedChangeListener {
6265
private static final String TAG = TCAnchorPrepareActivity.class.getSimpleName();
6366
private static final int CAPTURE_IMAGE_CAMERA = 100; // 封面:发起拍照
6467
private static final int IMAGE_STORE = 200; // 封面:选择图库
@@ -72,6 +75,8 @@ public class TCAnchorPrepareActivity extends Activity implements View.OnClickLis
7275
private Dialog mPicChsDialog; // 图片选择弹窗
7376
private ImageView mIvCover; // 图片封面
7477
private TCCustomSwitch mSwitchLocate; // 发起定位的按钮
78+
private RadioGroup mRGRecordType; // 推流类型:摄像头推流或屏幕录制推流
79+
private int mRecordType = TCConstants.RECORD_TYPE_CAMERA; // 默认摄像头推流
7580

7681
private Uri mSourceFileUri, mCropFileUri; // 封面图源文件的Uri,裁剪过后的Uri
7782
private boolean mUploadingCover = false; // 当前是否正在上传图片
@@ -91,11 +96,12 @@ protected void onCreate(Bundle savedInstanceState) {
9196
mIvCover = (ImageView) findViewById(R.id.anchor_btn_cover);
9297
mTvLocation = (TextView) findViewById(R.id.anchor_tv_location);
9398
mSwitchLocate = (TCCustomSwitch) findViewById(R.id.anchor_btn_location);
99+
mRGRecordType = (RadioGroup) findViewById(R.id.anchor_rg_record_type);
94100
mIvCover.setOnClickListener(this);
95101
mTvReturn.setOnClickListener(this);
96102
mTvPublish.setOnClickListener(this);
97103
mSwitchLocate.setOnClickListener(this);
98-
104+
mRGRecordType.setOnCheckedChangeListener(this);
99105

100106
mPermission = checkPublishPermission();
101107
initPhotoDialog();
@@ -216,7 +222,14 @@ public void onClick(View v) {
216222
*
217223
*/
218224
private void startPublish() {
219-
Intent intent = new Intent(this, TCCameraAnchorActivity.class);
225+
Intent intent = null;
226+
if (mRecordType == TCConstants.RECORD_TYPE_SCREEN) {
227+
//录屏
228+
intent = new Intent(this, TCScreenAnchorActivity.class);
229+
} else {
230+
intent = new Intent(this, TCCameraAnchorActivity.class);
231+
}
232+
220233
if (intent != null) {
221234
intent.putExtra(TCConstants.ROOM_TITLE,
222235
TextUtils.isEmpty(mTvTitle.getText().toString()) ? TCUserMgr.getInstance().getNickname() : mTvTitle.getText().toString());
@@ -512,4 +525,27 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis
512525
}
513526
}
514527

528+
@Override
529+
public void onCheckedChanged(RadioGroup group, int checkedId) {
530+
switch (checkedId) {
531+
case R.id.anchor_rb_record_camera:
532+
mRecordType = TCConstants.RECORD_TYPE_CAMERA;
533+
break;
534+
case R.id.anchor_rb_record_screen:
535+
if (!checkScrRecordPermission()) {
536+
Toast.makeText(getApplicationContext(), "当前安卓系统版本过低,仅支持5.0及以上系统", Toast.LENGTH_SHORT).show();
537+
mRGRecordType.check(R.id.anchor_rb_record_camera);
538+
return;
539+
}
540+
try {
541+
TCUtils.checkFloatWindowPermission(TCAnchorPrepareActivity.this);
542+
} catch (IOException e) {
543+
e.printStackTrace();
544+
}
545+
mRecordType = TCConstants.RECORD_TYPE_SCREEN;
546+
break;
547+
default:
548+
break;
549+
}
550+
}
515551
}

0 commit comments

Comments
 (0)