[+] 拍照、录像控制

This commit is contained in:
acgist
2023-04-29 16:28:45 +08:00
parent 59df04faaf
commit 3cbbc8f936
9 changed files with 201 additions and 28 deletions

View File

@@ -4,7 +4,9 @@ import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.graphics.Color;
import android.media.projection.MediaProjectionManager;
import android.os.Bundle;
import android.os.Handler;
@@ -29,6 +31,7 @@ import com.acgist.taoyao.client.signal.Taoyao;
import com.acgist.taoyao.media.MediaManager;
import com.acgist.taoyao.media.VideoSourceType;
import com.acgist.taoyao.media.config.Config;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import java.io.Serializable;
import java.util.stream.Stream;
@@ -180,7 +183,7 @@ public class MainActivity extends AppCompatActivity implements Serializable {
}
this.threadHandler.post(() -> {
// 进入房间
Taoyao.taoyao.roomEnter("4f19f6fc-1763-499b-a352-d8c955af5a6e", null);
// Taoyao.taoyao.roomEnter("4f19f6fc-1763-499b-a352-d8c955af5a6e", null);
// Taoyao.taoyao.sessionCall("taoyao");
});
}
@@ -216,6 +219,7 @@ public class MainActivity extends AppCompatActivity implements Serializable {
Log.d(MainHandler.class.getSimpleName(), "Handler消息" + message.what + " - " + message.obj);
switch (message.what) {
case Config.WHAT_SCREEN_CAPTURE -> MainActivity.this.screenCapture(message);
case Config.WHAT_RECORD -> MainActivity.this.record(message);
case Config.WHAT_NEW_LOCAL_VIDEO,
Config.WHAT_NEW_REMOTE_VIDEO -> MainActivity.this.previewVideo(message);
case Config.WHAT_REMOVE_VIDEO -> MainActivity.this.removeVideo(message);
@@ -233,6 +237,16 @@ public class MainActivity extends AppCompatActivity implements Serializable {
this.activityResultLauncher.launch(this.mediaProjectionManager.createScreenCaptureIntent());
}
private void record(Message message) {
final Resources resources = this.getResources();
final FloatingActionButton record = this.binding.record;
if(Boolean.TRUE.equals(message.obj)) {
record.setBackgroundTintList(ColorStateList.valueOf(resources.getColor(R.color.purple_500, this.getTheme())));
} else {
record.setBackgroundTintList(ColorStateList.valueOf(resources.getColor(R.color.teal_200, this.getTheme())));
}
}
/**
* 预览用户视频
*

View File

@@ -537,6 +537,8 @@ public final class Taoyao implements ITaoyao {
switch (header.getSignal()) {
case "control::config::audio" -> this.controlConfigAudio(message, message.body());
case "control::config::video" -> this.controlConfigVideo(message, message.body());
case "control::photograph" -> this.controlPhotograph(message, message.body());
case "control::record" -> this.controlRecord(message, message.body());
case "client::config" -> this.clientConfig(message, message.body());
case "client::register" -> this.clientRegister(message, message.body());
case "client::reboot" -> this.clientReboot(message, message.body());
@@ -601,6 +603,21 @@ public final class Taoyao implements ITaoyao {
this.mediaManager.updateVideoConfig(mediaVideoProperties);
}
private void controlPhotograph(Message message, Map<String, Object> body) {
this.mediaManager.photograph();
}
private void controlRecord(Message message, Map<String, Object> body) {
final Boolean enabled = MapUtils.getBoolean(body, "enabled");
if(Boolean.TRUE.equals(enabled)) {
this.mediaManager.startRecord();
} else {
this.mediaManager.stopRecord();
}
body.put("enabled", enabled);
this.push(message);
}
/**
* @param message 消息
* @param body 消息主体
@@ -890,7 +907,8 @@ public final class Taoyao implements ITaoyao {
if(sessionClient == null) {
return;
}
sessionClient.pause();
final String type = MapUtils.get(body, "type");
sessionClient.pause(type);
}
private void sessionResume(Message message, Map<String, Object> body) {
@@ -899,7 +917,8 @@ public final class Taoyao implements ITaoyao {
if(sessionClient == null) {
return;
}
sessionClient.resume();
final String type = MapUtils.get(body, "type");
sessionClient.resume(type);
}
/**