fix:(对讲铃声)调整路由页面昵称;调整铃声播放逻辑
This commit is contained in:
parent
ceb889c3a3
commit
c0b2114683
@ -516,7 +516,7 @@ abstract class Routers {
|
|||||||
static const String doubleLockLinkPage = '/doubleLockLinkPage'; //双锁联动
|
static const String doubleLockLinkPage = '/doubleLockLinkPage'; //双锁联动
|
||||||
static const String starChartPage = '/starChartPage'; //星图
|
static const String starChartPage = '/starChartPage'; //星图
|
||||||
static const String starChartTalkView = '/starChartTalkView'; //星图对讲页面
|
static const String starChartTalkView = '/starChartTalkView'; //星图对讲页面
|
||||||
static const String h264WebView = '/h264WebView'; //星图对讲页面
|
static const String h264View = '/h264View'; //星图对讲页面
|
||||||
static const String imageTransmissionView =
|
static const String imageTransmissionView =
|
||||||
'/imageTransmissionView'; //星图对讲页面(图传)
|
'/imageTransmissionView'; //星图对讲页面(图传)
|
||||||
static const String permissionGuidancePage =
|
static const String permissionGuidancePage =
|
||||||
@ -1192,7 +1192,7 @@ abstract class AppRouters {
|
|||||||
GetPage<dynamic>(
|
GetPage<dynamic>(
|
||||||
name: Routers.starChartTalkView, page: () => const TalkViewPage()),
|
name: Routers.starChartTalkView, page: () => const TalkViewPage()),
|
||||||
GetPage<dynamic>(
|
GetPage<dynamic>(
|
||||||
name: Routers.h264WebView, page: () => TalkViewNativeDecodePage()),
|
name: Routers.h264View, page: () => TalkViewNativeDecodePage()),
|
||||||
// 插件播放页面
|
// 插件播放页面
|
||||||
GetPage<dynamic>(
|
GetPage<dynamic>(
|
||||||
name: Routers.imageTransmissionView,
|
name: Routers.imageTransmissionView,
|
||||||
@ -1202,6 +1202,6 @@ abstract class AppRouters {
|
|||||||
name: Routers.permissionGuidancePage,
|
name: Routers.permissionGuidancePage,
|
||||||
page: () => PermissionGuidancePage()),
|
page: () => PermissionGuidancePage()),
|
||||||
// 插件播放页面
|
// 插件播放页面
|
||||||
// GetPage<dynamic>(name: Routers.h264WebView, page: () => H264WebView()), // webview播放页面
|
// GetPage<dynamic>(name: Routers.h264View, page: () => H264WebView()), // webview播放页面
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,14 +16,22 @@ class AudioPlayerManager {
|
|||||||
|
|
||||||
// 单例的 AudioPlayer 实例
|
// 单例的 AudioPlayer 实例
|
||||||
final AudioPlayer _audioPlayer = AudioPlayer();
|
final AudioPlayer _audioPlayer = AudioPlayer();
|
||||||
|
// 播放状态,防止重复播放
|
||||||
|
bool _isPlaying = false;
|
||||||
|
|
||||||
// 播放铃声
|
// 播放铃声
|
||||||
Future<void> playRingtone() async {
|
Future<void> playRingtone() async {
|
||||||
|
if (_isPlaying) {
|
||||||
|
log(text: 'Ringtone is already playing.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
await _audioPlayer.setReleaseMode(ReleaseMode.loop);
|
await _audioPlayer.setReleaseMode(ReleaseMode.loop);
|
||||||
await _audioPlayer.play(AssetSource('ring1.mp3'));
|
await _audioPlayer.play(AssetSource('ring1.mp3'));
|
||||||
|
_isPlaying = true;
|
||||||
log(text: 'Ringtone started playing.');
|
log(text: 'Ringtone started playing.');
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
_isPlaying = false;
|
||||||
log(text: 'Error playing ringtone: $e');
|
log(text: 'Error playing ringtone: $e');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -31,12 +39,12 @@ class AudioPlayerManager {
|
|||||||
// 停止播放铃声
|
// 停止播放铃声
|
||||||
Future<void> stopRingtone() async {
|
Future<void> stopRingtone() async {
|
||||||
try {
|
try {
|
||||||
// 不需要设置 ReleaseMode,在停止时保持默认即可
|
|
||||||
_audioPlayer.setReleaseMode(ReleaseMode.loop);
|
_audioPlayer.setReleaseMode(ReleaseMode.loop);
|
||||||
await _audioPlayer.stop();
|
await _audioPlayer.stop();
|
||||||
|
_isPlaying = false;
|
||||||
log(text: 'Ringtone stopped.');
|
log(text: 'Ringtone stopped.');
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
_isPlaying = false;
|
||||||
log(text: 'Error stopping ringtone: $e');
|
log(text: 'Error stopping ringtone: $e');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -45,8 +53,10 @@ class AudioPlayerManager {
|
|||||||
Future<void> pauseRingtone() async {
|
Future<void> pauseRingtone() async {
|
||||||
try {
|
try {
|
||||||
await _audioPlayer.pause();
|
await _audioPlayer.pause();
|
||||||
|
_isPlaying = false;
|
||||||
log(text: 'Ringtone paused.');
|
log(text: 'Ringtone paused.');
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
_isPlaying = false;
|
||||||
log(text: 'Error pausing ringtone: $e');
|
log(text: 'Error pausing ringtone: $e');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -54,8 +64,10 @@ class AudioPlayerManager {
|
|||||||
Future<void> resumeRingtone() async {
|
Future<void> resumeRingtone() async {
|
||||||
try {
|
try {
|
||||||
await _audioPlayer.resume();
|
await _audioPlayer.resume();
|
||||||
|
_isPlaying = true;
|
||||||
log(text: 'Ringtone resumed.');
|
log(text: 'Ringtone resumed.');
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
_isPlaying = false;
|
||||||
log(text: 'Error resuming ringtone: $e');
|
log(text: 'Error resuming ringtone: $e');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,9 +41,6 @@ class UdpTalkExpectHandler extends ScpMessageBaseHandle
|
|||||||
final TalkExpectResp talkExpectResp = scpMessage.Payload;
|
final TalkExpectResp talkExpectResp = scpMessage.Payload;
|
||||||
|
|
||||||
if (talkExpectResp != null) {
|
if (talkExpectResp != null) {
|
||||||
// 播放铃声
|
|
||||||
//test:使用自定义铃声
|
|
||||||
playRingtone();
|
|
||||||
// print('收到预期音视频数据回复,scpMessage:$scpMessage');
|
// print('收到预期音视频数据回复,scpMessage:$scpMessage');
|
||||||
// 停止发送预期数据的定时器
|
// 停止发送预期数据的定时器
|
||||||
startChartManage.stopTalkExpectMessageTimer();
|
startChartManage.stopTalkExpectMessageTimer();
|
||||||
@ -66,6 +63,8 @@ class UdpTalkExpectHandler extends ScpMessageBaseHandle
|
|||||||
talkStatus.setAnsweredSuccessfully();
|
talkStatus.setAnsweredSuccessfully();
|
||||||
// 主动呼叫时需要启动ping
|
// 主动呼叫时需要启动ping
|
||||||
startChartManage.startTalkPingMessageTimer();
|
startChartManage.startTalkPingMessageTimer();
|
||||||
|
} else if (talkStatus.status != TalkStatus.answeredSuccessfully) {
|
||||||
|
playRingtone();
|
||||||
}
|
}
|
||||||
AppLog.log(
|
AppLog.log(
|
||||||
'视频画面需要旋转:${talkExpectResp.rotate},画面宽高:${talkExpectResp.width}-${talkExpectResp.height}');
|
'视频画面需要旋转:${talkExpectResp.rotate},画面宽高:${talkExpectResp.width}-${talkExpectResp.height}');
|
||||||
@ -97,6 +96,7 @@ class UdpTalkExpectHandler extends ScpMessageBaseHandle
|
|||||||
talkExpectResp.width == 640 &&
|
talkExpectResp.width == 640 &&
|
||||||
talkExpectResp.height == 480)) {
|
talkExpectResp.height == 480)) {
|
||||||
Get.toNamed(Routers.imageTransmissionView);
|
Get.toNamed(Routers.imageTransmissionView);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (startChartManage
|
if (startChartManage
|
||||||
@ -104,7 +104,7 @@ class UdpTalkExpectHandler extends ScpMessageBaseHandle
|
|||||||
.videoType
|
.videoType
|
||||||
.contains(VideoTypeE.H264)) {
|
.contains(VideoTypeE.H264)) {
|
||||||
Get.toNamed(
|
Get.toNamed(
|
||||||
Routers.h264WebView,
|
Routers.h264View,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
Get.toNamed(
|
Get.toNamed(
|
||||||
|
|||||||
@ -430,7 +430,7 @@ class StartChartManage {
|
|||||||
// 优先使用H264,其次是MJPEG
|
// 优先使用H264,其次是MJPEG
|
||||||
if (isH264) {
|
if (isH264) {
|
||||||
Get.toNamed(
|
Get.toNamed(
|
||||||
Routers.h264WebView,
|
Routers.h264View,
|
||||||
);
|
);
|
||||||
} else if (isMJpeg) {
|
} else if (isMJpeg) {
|
||||||
Get.toNamed(
|
Get.toNamed(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user