Skip to content

Commit 8a35690

Browse files
committed
[Android]move watermark config to LiveStreaming module.
1 parent b67c82b commit 8a35690

5 files changed

Lines changed: 45 additions & 14 deletions

File tree

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

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import androidx.annotation.NonNull;
2020
import androidx.annotation.Nullable;
21+
import androidx.appcompat.widget.SwitchCompat;
2122

2223
import com.yanzhenjie.permission.AndPermission;
2324
import com.yanzhenjie.permission.runtime.Permission;
@@ -28,6 +29,7 @@
2829
import io.agora.api.example.R;
2930
import io.agora.api.example.annotation.Example;
3031
import io.agora.api.example.common.BaseFragment;
32+
import io.agora.api.example.common.Constant;
3133
import io.agora.api.example.common.widget.VideoReportLayout;
3234
import io.agora.api.example.utils.CommonUtil;
3335
import io.agora.api.example.utils.TokenUtils;
@@ -39,6 +41,7 @@
3941
import io.agora.rtc2.RtcEngineConfig;
4042
import io.agora.rtc2.video.VideoCanvas;
4143
import io.agora.rtc2.video.VideoEncoderConfiguration;
44+
import io.agora.rtc2.video.WatermarkOptions;
4245

4346
/**
4447
* This demo demonstrates how to make a one-to-one video call
@@ -67,6 +70,7 @@ public class LiveStreaming extends BaseFragment implements View.OnClickListener
6770
private boolean isHost = false;
6871
private boolean isLowLatency = false;
6972
private boolean isLocalVideoForeground = true;
73+
private SwitchCompat watermarkSwitch;
7074

7175
@Nullable
7276
@Override
@@ -90,6 +94,24 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
9094
foreGroundVideo = view.findViewById(R.id.background_video);
9195
backGroundVideo = view.findViewById(R.id.foreground_video);
9296
view.findViewById(R.id.btn_take_shot).setOnClickListener(this);
97+
watermarkSwitch = view.findViewById(R.id.switch_watermark);
98+
watermarkSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
99+
if (isChecked) {
100+
engine.enableVideo();
101+
WatermarkOptions watermarkOptions = new WatermarkOptions();
102+
int size = ((MainApplication) getActivity().getApplication()).getGlobalSettings().getVideoEncodingDimensionObject().width / 6;
103+
int height = ((MainApplication) getActivity().getApplication()).getGlobalSettings().getVideoEncodingDimensionObject().height;
104+
watermarkOptions.positionInPortraitMode = new WatermarkOptions.Rectangle(10, height / 2, size, size);
105+
watermarkOptions.positionInLandscapeMode = new WatermarkOptions.Rectangle(10, height / 2, size, size);
106+
watermarkOptions.visibleInPreview = true;
107+
int ret = engine.addVideoWatermark(Constant.WATER_MARK_FILE_PATH, watermarkOptions);
108+
if (ret != Constants.ERR_OK) {
109+
Log.e(TAG, "addVideoWatermark error=" + ret + ", msg=" + RtcEngine.getErrorDescription(ret));
110+
}
111+
} else {
112+
engine.clearVideoWatermarks();
113+
}
114+
});
93115
}
94116

95117
@Override
@@ -179,6 +201,9 @@ public void onClick(View v) {
179201
engine.stopPreview();
180202
engine.leaveChannel();
181203
join.setText(getString(R.string.join));
204+
watermarkSwitch.setEnabled(false);
205+
publish.setEnabled(false);
206+
latency.setEnabled(false);
182207
remoteUid = 0;
183208
}
184209
} else if (v.getId() == R.id.btn_publish) {
@@ -487,10 +512,12 @@ public void run() {
487512
*/
488513
@Override
489514
public void onClientRoleChanged(int oldRole, int newRole) {
490-
Log.i(TAG, String.format("client role changed from state %d to %d", oldRole, newRole)); handler.post(new Runnable() {
515+
Log.i(TAG, String.format("client role changed from state %d to %d", oldRole, newRole));
516+
handler.post(new Runnable() {
491517
@Override
492518
public void run() {
493519
publish.setEnabled(true);
520+
watermarkSwitch.setEnabled(newRole == Constants.CLIENT_ROLE_BROADCASTER);
494521
}
495522
});
496523
}

Android/APIExample/app/src/main/java/io/agora/api/example/examples/basic/JoinChannelVideo.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import io.agora.api.example.R;
3434
import io.agora.api.example.annotation.Example;
3535
import io.agora.api.example.common.BaseFragment;
36-
import io.agora.api.example.common.Constant;
3736
import io.agora.api.example.common.widget.VideoReportLayout;
3837
import io.agora.api.example.utils.CommonUtil;
3938
import io.agora.api.example.utils.TokenUtils;
@@ -44,7 +43,6 @@
4443
import io.agora.rtc2.RtcEngineConfig;
4544
import io.agora.rtc2.video.VideoCanvas;
4645
import io.agora.rtc2.video.VideoEncoderConfiguration;
47-
import io.agora.rtc2.video.WatermarkOptions;
4846

4947
/**This demo demonstrates how to make a one-to-one video call*/
5048
@Example(
@@ -255,16 +253,6 @@ private void joinChannel(String channelId)
255253
VideoEncoderConfiguration.ORIENTATION_MODE.valueOf(((MainApplication)getActivity().getApplication()).getGlobalSettings().getVideoEncodingOrientation())
256254
));
257255

258-
// Setup watermark options
259-
WatermarkOptions watermarkOptions = new WatermarkOptions();
260-
int size = ((MainApplication)getActivity().getApplication()).getGlobalSettings().getVideoEncodingDimensionObject().width / 6;
261-
int height = ((MainApplication)getActivity().getApplication()).getGlobalSettings().getVideoEncodingDimensionObject().height;
262-
watermarkOptions.positionInPortraitMode = new WatermarkOptions.Rectangle(10,height/2, size, size);
263-
watermarkOptions.positionInLandscapeMode = new WatermarkOptions.Rectangle(10,height/2, size, size);
264-
watermarkOptions.visibleInPreview = false;
265-
engine.addVideoWatermark(Constant.WATER_MARK_FILE_PATH, watermarkOptions);
266-
267-
268256
engine.startPreview();
269257

270258
ChannelMediaOptions option = new ChannelMediaOptions();

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

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,20 @@
2020
android:layout_alignParentTop="true"
2121
android:layout_alignParentEnd="true" />
2222

23+
<androidx.appcompat.widget.SwitchCompat
24+
android:id="@+id/switch_watermark"
25+
android:layout_width="wrap_content"
26+
android:layout_height="wrap_content"
27+
android:layout_above="@+id/btn_take_shot"
28+
android:layout_alignParentEnd="true"
29+
android:layout_marginEnd="16dp"
30+
android:layout_marginBottom="16dp"
31+
android:background="#dddddd"
32+
android:paddingHorizontal="16dp"
33+
android:paddingVertical="8dp"
34+
android:enabled="false"
35+
android:text="@string/watermark"/>
36+
2337
<androidx.appcompat.widget.AppCompatButton
2438
android:id="@+id/btn_take_shot"
2539
android:layout_width="wrap_content"
@@ -28,7 +42,7 @@
2842
android:layout_alignParentEnd="true"
2943
android:layout_marginEnd="16dp"
3044
android:layout_marginBottom="16dp"
31-
android:text="@string/remote_screenshot"/>
45+
android:text="@string/remote_screenshot" />
3246

3347
<androidx.appcompat.widget.AppCompatButton
3448
android:id="@+id/btn_latency"

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,4 +235,5 @@
235235
<string name="virtual_background_color">颜色</string>
236236
<string name="virtual_background_blur">毛玻璃</string>
237237
<string name="area">区域</string>
238+
<string name="watermark">水印</string>
238239
</resources>

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,4 +244,5 @@
244244
<string name="virtual_background_color">Color</string>
245245
<string name="virtual_background_blur">Blur</string>
246246
<string name="area">Area</string>
247+
<string name="watermark">Watermark</string>
247248
</resources>

0 commit comments

Comments
 (0)