Browse Source

Merge commit 'e4c5b5fbce23737d5f48b13c10c74ba3650511aa' into lxm

weicu
lxm 2 years ago
parent
commit
90415cf3ba
  1. 8
      android/app/build.gradle.kts
  2. 12
      android/app/src/main/kotlin/com/example/deep_voice/MainActivity.kt
  3. 6
      ios/Runner/AudioSessionManager.swift
  4. 15
      lib/core/widgets/select_location_map.dart
  5. 36
      lib/modules/meeting/views/meeting_record_view.dart

8
android/app/build.gradle.kts

@ -3,8 +3,6 @@ import java.io.FileInputStream
repositories {
google()
mavenCentral()
maven { url = uri("https://artifact.bytedance.com/repository/Volcengine/") }
maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots/") }
}
plugins {
@ -42,7 +40,7 @@ android {
// You can update the following values to match your application needs.
// For more information, see: https://flutter.dev/to/review-gradle-config.
minSdk = 24 // Updated to meet azure_speech_recognition_null_safety requirements
targetSdk = 33 // 设置为 Android 13 (API 33),以匹配 FOREGROUND_SERVICE_MEDIA_PLAYBACK 权限的要求
targetSdk = 34 // 设置为 Android 13 (API 33),以匹配 FOREGROUND_SERVICE_MEDIA_PLAYBACK 权限的要求
versionCode = flutter.versionCode
versionName = flutter.versionName
}
@ -83,9 +81,7 @@ android {
}
dependencies {
// WebRTC依赖已移除
// implementation("io.antmedia:webrtc-android-framework:2.8.0-SNAPSHOT")
// 添加OkHttp依赖
implementation("com.squareup.okhttp3:okhttp:4.9.3")

12
android/app/src/main/kotlin/com/example/deep_voice/MainActivity.kt

@ -267,7 +267,11 @@ class MainActivity: FlutterActivity() {
addAction(VoiceInteractionService.ACTION_RECOGNITION_STARTED)
addAction(VoiceInteractionService.ACTION_CHAT_HISTORY_UPDATED)
}
registerReceiver(voiceInteractionReceiver, voiceInteractionFilter)
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
registerReceiver(voiceInteractionReceiver, voiceInteractionFilter, Context.RECEIVER_NOT_EXPORTED)
} else {
registerReceiver(voiceInteractionReceiver, voiceInteractionFilter)
}
// 注册蓝牙状态变化广播接收器
val bluetoothFilter = IntentFilter().apply {
@ -275,7 +279,11 @@ class MainActivity: FlutterActivity() {
addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED)
addAction(BluetoothAdapter.ACTION_STATE_CHANGED)
}
registerReceiver(bluetoothStateReceiver, bluetoothFilter)
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
registerReceiver(bluetoothStateReceiver, bluetoothFilter, Context.RECEIVER_NOT_EXPORTED)
} else {
registerReceiver(bluetoothStateReceiver, bluetoothFilter)
}
}
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {

6
ios/Runner/AudioSessionManager.swift

@ -206,7 +206,7 @@ import UIKit
// 重新激活会话
try audioSession.setActive(true, options: .notifyOthersOnDeactivation)
isActive = true
// 切换到扬声器
// 记录当前配置
currentCategory = category
currentMode = mode
@ -319,6 +319,8 @@ import UIKit
],
force: false // 是否强制重新配置
)
try audioSession.overrideOutputAudioPort(.speaker)
}
@ -516,6 +518,8 @@ import UIKit
force: force // 是否强制重新配置
)
try audioSession.overrideOutputAudioPort(.speaker)
// 额外的优化配置
if configureAdditionalSettings {
// 获取当前是否使用耳机

15
lib/core/widgets/select_location_map.dart

@ -0,0 +1,15 @@
import 'package:flutter/material.dart';
class SelectLocationMap extends StatefulWidget {
const SelectLocationMap({super.key});
@override
State<SelectLocationMap> createState() => _SelectLocationMapState();
}
class _SelectLocationMapState extends State<SelectLocationMap> {
@override
Widget build(BuildContext context) {
return const Placeholder();
}
}

36
lib/modules/meeting/views/meeting_record_view.dart

@ -5,6 +5,7 @@ import 'package:get/get.dart';
import 'package:lottie/lottie.dart';
import '../../../core/theme/app_colors.dart';
import '../../../core/widgets/select_location_map.dart';
import '../controllers/meeting_record_controller.dart';
class MeetingRecordView extends GetView<MeetingRecordController> {
@ -121,23 +122,28 @@ class MeetingRecordView extends GetView<MeetingRecordController> {
],
),
),
Padding(
padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 5.w),
child: Row(
children: [
Icon(
Icons.location_on,
size: 16.w,
color: isDarkMode ? Colors.grey[400] : Colors.grey[500],
),
Text(
controller.address.value,
style: TextStyle(
GestureDetector(
onTap: () {
Get.to(() => const SelectLocationMap());
},
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 5.w),
child: Row(
children: [
Icon(
Icons.location_on,
size: 16.w,
color: isDarkMode ? Colors.grey[400] : Colors.grey[500],
fontSize: 14.sp,
),
),
],
Text(
controller.address.value,
style: TextStyle(
color: isDarkMode ? Colors.grey[400] : Colors.grey[500],
fontSize: 14.sp,
),
),
],
),
),
),
_recordContent(isDarkMode),

Loading…
Cancel
Save