Skip to content

Commit eb77aaf

Browse files
committed
[Android][ScreenShare]add call of startPreview with parameter
1 parent 2e9540b commit eb77aaf

4 files changed

Lines changed: 54 additions & 23 deletions

File tree

Android/APIExample/app/src/main/java/io/agora/api/example/examples/advanced/SwitchCameraScreenShare.java

Lines changed: 41 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
package io.agora.api.example.examples.advanced;
22

3+
import static android.app.Activity.RESULT_OK;
4+
import static io.agora.api.example.common.Constant.TEXTUREVIEW;
5+
import static io.agora.api.example.common.model.Examples.ADVANCED;
6+
import static io.agora.rtc2.video.VideoCanvas.RENDER_MODE_HIDDEN;
7+
import static io.agora.rtc2.video.VideoEncoderConfiguration.FRAME_RATE.FRAME_RATE_FPS_15;
8+
import static io.agora.rtc2.video.VideoEncoderConfiguration.ORIENTATION_MODE.ORIENTATION_MODE_ADAPTIVE;
9+
import static io.agora.rtc2.video.VideoEncoderConfiguration.STANDARD_BITRATE;
10+
import static io.agora.rtc2.video.VideoEncoderConfiguration.VD_640x360;
11+
312
import android.app.Notification;
413
import android.app.NotificationChannel;
514
import android.app.NotificationManager;
@@ -24,7 +33,6 @@
2433
import android.widget.CompoundButton;
2534
import android.widget.EditText;
2635
import android.widget.FrameLayout;
27-
import android.widget.RelativeLayout;
2836
import android.widget.Switch;
2937

3038
import androidx.annotation.NonNull;
@@ -35,6 +43,8 @@
3543
import com.yanzhenjie.permission.AndPermission;
3644
import com.yanzhenjie.permission.runtime.Permission;
3745

46+
import java.util.Random;
47+
3848
import io.agora.api.example.R;
3949
import io.agora.api.example.annotation.Example;
4050
import io.agora.api.example.common.BaseFragment;
@@ -50,19 +60,6 @@
5060
import io.agora.rtc2.video.VideoCanvas;
5161
import io.agora.rtc2.video.VideoEncoderConfiguration;
5262

53-
import java.util.Random;
54-
55-
import static android.app.Activity.RESULT_OK;
56-
import static io.agora.api.example.common.Constant.TEXTUREVIEW;
57-
import static io.agora.api.example.common.model.Examples.ADVANCED;
58-
import static io.agora.rtc2.Constants.REMOTE_VIDEO_STATE_STARTING;
59-
import static io.agora.rtc2.video.VideoCanvas.RENDER_MODE_FIT;
60-
import static io.agora.rtc2.video.VideoCanvas.RENDER_MODE_HIDDEN;
61-
import static io.agora.rtc2.video.VideoEncoderConfiguration.FRAME_RATE.FRAME_RATE_FPS_15;
62-
import static io.agora.rtc2.video.VideoEncoderConfiguration.ORIENTATION_MODE.ORIENTATION_MODE_ADAPTIVE;
63-
import static io.agora.rtc2.video.VideoEncoderConfiguration.STANDARD_BITRATE;
64-
import static io.agora.rtc2.video.VideoEncoderConfiguration.VD_640x360;
65-
6663
/**
6764
* This example demonstrates how video can be flexibly switched between the camera stream and the
6865
* screen share stream during an audio-video call.
@@ -80,7 +77,7 @@ public class SwitchCameraScreenShare extends BaseFragment implements View.OnClic
8077
private static final int DEFAULT_SHARE_FRAME_RATE = 15;
8178
private FrameLayout fl_camera, fl_screen;
8279
private Button join;
83-
private Switch camera, screenShare;
80+
private Switch camera, screenShare, screenSharePreview;
8481
private EditText et_channel;
8582
private int myUid, remoteUid = -1;
8683
private boolean joined = false;
@@ -104,12 +101,14 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
104101
join = view.findViewById(R.id.btn_join);
105102
camera = view.findViewById(R.id.camera);
106103
screenShare = view.findViewById(R.id.screenShare);
104+
screenSharePreview = view.findViewById(R.id.screenSharePreview);
107105
et_channel = view.findViewById(R.id.et_channel);
108106
fl_camera = view.findViewById(R.id.fl_camera);
109107
fl_screen = view.findViewById(R.id.fl_screenshare);
110108
join.setOnClickListener(this);
111109
camera.setOnCheckedChangeListener(this);
112110
screenShare.setOnCheckedChangeListener(this);
111+
screenSharePreview.setOnCheckedChangeListener(this);
113112
}
114113

115114
@Override
@@ -178,6 +177,9 @@ public void onDestroy() {
178177
TEXTUREVIEW = null;
179178
/**leaveChannel and Destroy the RtcEngine instance*/
180179
if (engine != null) {
180+
if(camera.isChecked()){
181+
engine.leaveChannelEx(rtcConnection2);
182+
}
181183
engine.leaveChannel();
182184
engine.stopPreview();
183185
}
@@ -207,6 +209,8 @@ public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
207209
getActivity().stopService(fgServiceIntent);
208210
}
209211
}
212+
screenSharePreview.setEnabled(b);
213+
screenSharePreview.setChecked(b);
210214
handler.postDelayed(() -> {
211215
options.publishScreenTrack = b;
212216
engine.updateChannelMediaOptions(options);
@@ -233,7 +237,14 @@ public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
233237
}
234238
else{
235239
engine.leaveChannelEx(rtcConnection2);
240+
engine.startPreview(Constants.VideoSourceType.VIDEO_SOURCE_CAMERA_PRIMARY);
236241
}
242+
}else if (compoundButton.getId() == R.id.screenSharePreview) {
243+
if(b){
244+
addScreenSharePreview();
245+
}else{
246+
engine.stopPreview(Constants.VideoSourceType.VIDEO_SOURCE_SCREEN_PRIMARY);
247+
}
237248
}
238249
}
239250

@@ -266,6 +277,7 @@ public void onClick(View v) {
266277
join.setText(getString(R.string.join));
267278
camera.setEnabled(false);
268279
screenShare.setEnabled(false);
280+
screenSharePreview.setEnabled(false);
269281
fl_camera.removeAllViews();
270282
fl_screen.removeAllViews();
271283
engine.stopPreview();
@@ -288,6 +300,8 @@ public void onClick(View v) {
288300
* triggers the removeInjectStreamUrl method.*/
289301
engine.leaveChannel();
290302
TEXTUREVIEW = null;
303+
304+
requireActivity().finish();
291305
}
292306
}
293307
}
@@ -307,8 +321,11 @@ private void addScreenSharePreview() {
307321
// Add to the local container
308322
fl_screen.addView(surfaceView, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
309323
// Setup local video to render your local camera preview
310-
engine.setupLocalVideo(new VideoCanvas(surfaceView, Constants.RENDER_MODE_FIT, Constants.VIDEO_MIRROR_MODE_DISABLED, Constants.VIDEO_SOURCE_SCREEN_PRIMARY, 0));
311-
engine.startPreview();
324+
engine.setupLocalVideo(new VideoCanvas(surfaceView, Constants.RENDER_MODE_FIT,
325+
Constants.VIDEO_MIRROR_MODE_DISABLED,
326+
Constants.VIDEO_SOURCE_SCREEN_PRIMARY,
327+
0));
328+
engine.startPreview(Constants.VideoSourceType.VIDEO_SOURCE_SCREEN_PRIMARY);
312329
}
313330

314331
private void addCameraPreview() {
@@ -326,8 +343,13 @@ private void addCameraPreview() {
326343
// Add to the local container
327344
fl_camera.addView(surfaceView, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
328345
// Setup local video to render your local camera preview
329-
engine.setupLocalVideo(new VideoCanvas(surfaceView, RENDER_MODE_HIDDEN, 0));
330-
// engine.startPreview();
346+
engine.setupLocalVideo(new VideoCanvas(
347+
surfaceView,
348+
RENDER_MODE_HIDDEN,
349+
Constants.VIDEO_MIRROR_MODE_AUTO,
350+
Constants.VIDEO_SOURCE_CAMERA_PRIMARY,
351+
0));
352+
engine.startPreview(Constants.VideoSourceType.VIDEO_SOURCE_CAMERA_PRIMARY);
331353
}
332354

333355
private void joinChannel(String channelId) {
@@ -345,8 +367,6 @@ private void joinChannel(String channelId) {
345367

346368
/**Enable video module*/
347369
engine.enableVideo();
348-
// start preview
349-
engine.startPreview();
350370
// Setup video encoding configs
351371
engine.setVideoEncoderConfiguration(new VideoEncoderConfiguration(
352372
VD_640x360,
@@ -380,7 +400,6 @@ private void joinChannel(String channelId) {
380400
// Prevent repeated entry
381401
join.setEnabled(false);
382402
addCameraPreview();
383-
engine.startPreview();
384403
}
385404

386405
/**

Android/APIExample/app/src/main/res/layout/fragment_switch_camera_screenshare.xml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,23 @@
5151
</LinearLayout>
5252

5353
<Switch
54-
android:id="@+id/screenShare"
54+
android:id="@+id/screenSharePreview"
5555
android:layout_width="wrap_content"
5656
android:layout_height="wrap_content"
5757
android:layout_above="@id/ll_join"
5858
android:layout_alignParentEnd="true"
5959
android:layout_marginBottom="24dp"
6060
android:enabled="false"
61+
android:text="@string/screen_share_preview" />
62+
63+
<Switch
64+
android:id="@+id/screenShare"
65+
android:layout_width="wrap_content"
66+
android:layout_height="wrap_content"
67+
android:layout_above="@id/ll_join"
68+
android:layout_marginBottom="24dp"
69+
android:layout_toLeftOf="@id/screenSharePreview"
70+
android:enabled="false"
6171
android:text="@string/screen_share" />
6272

6373
<Switch

Android/APIExample/app/src/main/res/values-zh/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@
150150
<string name="writeback">音频回写</string>
151151
<string name="snapshot">截图</string>
152152
<string name="screen_share">屏幕共享</string>
153+
<string name="screen_share_preview">屏幕共享本地预览</string>
153154
<string name="spatial_sound">此示例演示了如何使用空间音效。</string>
154155
<string name="mix_control">混音控制</string>
155156
<string name="start">开始</string>

Android/APIExample/app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@
155155
<string name="spatial_sound">This example shows how to use spaital sound</string>
156156
<string name="snapshot">Snapshot</string>
157157
<string name="screen_share">Screen Share</string>
158+
<string name="screen_share_preview">Screen Share Preview</string>
158159
<string name="mix_control">Audio Mixing Control</string>
159160
<string name="start">Start</string>
160161
<string name="click_start">Start</string>

0 commit comments

Comments
 (0)