Merge branch 'talk_flutter' of gitee.com:starlock-cn/app-starlock into talk_flutter

# Conflicts:
#	star_lock/lib/talk/call/callTalk.dart
This commit is contained in:
Daisy 2023-12-26 16:30:56 +08:00
commit 2aa56b65de
7 changed files with 60 additions and 32 deletions

File diff suppressed because one or more lines are too long

View File

@ -633,8 +633,7 @@ class LockDetailLogic extends BaseGetXController{
print("有蓝牙权限开始扫描");
startScanAction();
}else{
getMicrophonePermission()
.then((value) {
getMicrophonePermission().then((value) {
if (value) {
//
print("有蓝牙权限开始扫描");

View File

@ -65,6 +65,7 @@ class _LockDetailPageState extends State<LockDetailPage> with TickerProviderStat
var saveSignKeyList = changeIntListToStringList(signKeyData);
Storage.setStringList(saveBlueSignKey, saveSignKeyList);
Storage.setStringList(saveBlueToken, [0, 0, 0, 0]);
// logic.startScanAction();
listeningAnimations();

View File

@ -223,6 +223,8 @@ class _LockMonitoringPageState extends State<LockMonitoringPage> {
}),
bottomBtnItemWidget("images/main/icon_lockDetail_monitoringUnlock.png",
"开锁", AppColors.mainColor, () {
// _playRecording();
showDeletPasswordAlertDialog(context);
})
]);
@ -231,34 +233,22 @@ class _LockMonitoringPageState extends State<LockMonitoringPage> {
String getAnswerBtnImg() {
switch (state.udpStatus.value) {
case 8:
{
return "images/main/icon_lockDetail_monitoringUnTalkback.png";
}
case 9:
{
return "images/main/icon_lockDetail_monitoringTalkback.png";
}
default:
{
return "images/main/icon_lockDetail_monitoringAnswerCalls.png";
}
}
}
String getAnswerBtnName() {
switch (state.udpStatus.value) {
case 8:
{
return "长按说话";
}
case 9:
{
return "松开发送";
}
default:
{
return "接听";
}
}
}
@ -356,6 +346,9 @@ class _LockMonitoringPageState extends State<LockMonitoringPage> {
await recorder.startRecorder(
toFile: filePath,
codec: Codec.pcm16WAV,
bitRate: 8000,
numChannels: 1,
sampleRate: 8000,
);
}
@ -363,9 +356,6 @@ class _LockMonitoringPageState extends State<LockMonitoringPage> {
_stopRecording() async {
await recorder.stopRecorder();
var userMobileIP = await NetworkInfo().getWifiIP();
var userMobile = await Storage.getMobile();
// final file = File(filePath);
File file = File(filePath); // 使 create
@ -374,23 +364,13 @@ class _LockMonitoringPageState extends State<LockMonitoringPage> {
final List<int> bytes = await file.readAsBytes();
print('Recorded audio bytes.length:${bytes.length} bytes: $bytes');
//
UDPSenderManage.sendMainProtocol(
command: 150,
commandTypeIsCalling: 1,
subCommand: 8,
lockID: UDPManage().lockId,
lockIP: UDPManage().host,
userMobile: userMobile,
userMobileIP: userMobileIP,
endData: bytes
);
_sendRecordData(bytes);
}
}
Future<String> getFilePath() async {
final directory = await getApplicationDocumentsDirectory();
final filePath = '${directory.path}/recording.mp3';
final filePath = '${directory.path}/recording.wav';
//
File file = File(filePath);
@ -425,4 +405,33 @@ class _LockMonitoringPageState extends State<LockMonitoringPage> {
// _stopPlaying() async {
// await player.stopPlayer();
// }
_sendRecordData(List<int> bytes) async {
//
var userMobileIP = await NetworkInfo().getWifiIP();
var userMobile = await Storage.getMobile();
// 57
List<int> topBytes = [
1, 1, 1, 1, //
1, 0, //
1, 0, //
64, 0, 0, 0, //
1, 0, //
1, 0, //
64, 1, //
176, 4, //
];
UDPSenderManage.sendMainProtocol(
command: 150,
commandTypeIsCalling: 1,
subCommand: 8,
lockID: UDPManage().lockId,
lockIP: UDPManage().host,
userMobile: userMobile,
userMobileIP: userMobileIP,
endData: bytes
);
}
}

View File

@ -3,7 +3,6 @@ import 'package:flutter/material.dart';
import 'package:flutter_sound/flutter_sound.dart';
import 'package:star_lock/talk/call/g711.dart';
import 'package:star_lock/talk/call/iFrameInfo.dart';
import '../../tools/eventBusEventManage.dart';
class CallTalk {
@ -22,6 +21,7 @@ class CallTalk {
var growableList;
bool getFirstFrame = false; //
final FlutterSoundPlayer _audioPlayer = FlutterSoundPlayer();
List<int>? allPcmData = [];
CallTalk._init() {
iframe = IframeInfo();
@ -39,6 +39,15 @@ class CallTalk {
//
if (bb[61] == 1) {
Uint8List g711Data = bb.sublist(77, bb.length);
// // PCM
// Uint8List pcmData = G711Decoder().g711Decode(g711Data, G711Type.uLaw);
// // 使 pcmData
// print('得到的pcmData:$pcmData');
// allPcmData!.addAll(pcmData);
// await Future.delayed(const Duration(seconds: 3));
// _playRawData(allPcmData!);
print('dinglingling bb.length:${g711Data.length} 音频数据来:$g711Data ');
List<int> pcmBytes = Uint8List.fromList([]);
@ -49,11 +58,14 @@ class CallTalk {
print('Error decoding G.711 to PCM: $e');
}
allPcmData!.addAll(pcmBytes!);
await Future.delayed(const Duration(seconds: 1));
print('PCM decoded data: $pcmBytes');
if (pcmBytes != null) {
_initializeAudioPlayer();
_playRawData(pcmBytes);
_playRawData(Uint8List.fromList(allPcmData!));
} else {
print('Error decoding G.711 to PCM');
}
@ -153,4 +165,8 @@ class CallTalk {
},
);
}
Future<void> stopLocalAudio() async {
await _audioPlayer.stopPlayer();
}
}

View File

@ -62,6 +62,8 @@ class UDPMainProtocolCommand extends UDPSenderProtocol {
data.add(int.parse(element));
});
data.addAll(endData!);
// print("datadatadata:$data");
return data;
}

View File

@ -19,7 +19,7 @@ class CommandUDPReciverManager {
if (dataSize < 4) {
return;
}
// print("appReceiveUDPData:$data");
print("appReceiveUDPData:$data");
Uint8List data1 = Uint8List.fromList(data);
if (data1.length == 1) {