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:
commit
2aa56b65de
1
star_lock/.flutter-plugins-dependencies 2
Normal file
1
star_lock/.flutter-plugins-dependencies 2
Normal file
File diff suppressed because one or more lines are too long
@ -633,8 +633,7 @@ class LockDetailLogic extends BaseGetXController{
|
||||
print("有蓝牙权限开始扫描");
|
||||
startScanAction();
|
||||
}else{
|
||||
getMicrophonePermission()
|
||||
.then((value) {
|
||||
getMicrophonePermission().then((value) {
|
||||
if (value) {
|
||||
// 有权限
|
||||
print("有蓝牙权限开始扫描");
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,6 +62,8 @@ class UDPMainProtocolCommand extends UDPSenderProtocol {
|
||||
data.add(int.parse(element));
|
||||
});
|
||||
|
||||
data.addAll(endData!);
|
||||
|
||||
// print("datadatadata:$data");
|
||||
return data;
|
||||
}
|
||||
|
||||
@ -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) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user