Browse Source

Merge branch 'new_dev' of https://github.com/deepcloud2048/deep_voice into new_dev

weicu
tanlongsheng 1 year ago
parent
commit
ec49648b5c
  1. 26
      ios/Runner.xcodeproj/project.pbxproj
  2. 38
      ios/Runner/Info.plist
  3. 24
      ios/Runner/Runner.entitlements
  4. 2
      lib/core/translations/language/en_us.dart
  5. 2
      lib/core/translations/language/ru_ru.dart
  6. 2
      lib/core/translations/language/th_th.dart
  7. 2
      lib/core/translations/language/tr_tr.dart
  8. 4
      lib/core/translations/language/uk_ua.dart
  9. 4
      lib/core/translations/language/zh_cn.dart
  10. 4
      lib/core/translations/language/zh_hk.dart
  11. 5
      lib/modules/meeting/views/bottomSheet/share_bottom_sheet.dart
  12. 8
      lib/modules/pairing/controllers/pairing_controller.dart
  13. 2
      lib/modules/pairing/views/pairing_view.dart
  14. 8
      lib/modules/splash/controllers/splash_controller.dart
  15. 2
      local_plugins/amap_service/ios/Classes/AmapService.swift
  16. 2
      local_plugins/amap_service/ios/Classes/AmapServicePlugin.swift
  17. 2
      local_plugins/spotify_sdk/ios/spotify_sdk.podspec
  18. 1
      pubspec.yaml

26
ios/Runner.xcodeproj/project.pbxproj

@ -514,7 +514,7 @@
NEW_SETTING = "";
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
TARGETED_DEVICE_FAMILY = 1;
VALIDATE_PRODUCT = YES;
};
name = Profile;
@ -539,8 +539,14 @@
MARKETING_VERSION = 1.0.1;
PRODUCT_BUNDLE_IDENTIFIER = com.saitong.voitrans;
PRODUCT_NAME = "$(TARGET_NAME)";
REGISTER_APP_GROUPS = NO;
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = YES;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = YES;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
};
name = Profile;
@ -572,6 +578,7 @@
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = K39FB49XKY;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
MARKETING_VERSION = 1.0;
@ -589,6 +596,7 @@
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = K39FB49XKY;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
MARKETING_VERSION = 1.0;
@ -654,7 +662,7 @@
NEW_SETTING = "";
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
TARGETED_DEVICE_FAMILY = 1;
};
name = Debug;
};
@ -709,7 +717,7 @@
SUPPORTED_PLATFORMS = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
TARGETED_DEVICE_FAMILY = "1,2";
TARGETED_DEVICE_FAMILY = 1;
VALIDATE_PRODUCT = YES;
};
name = Release;
@ -734,9 +742,15 @@
MARKETING_VERSION = 1.0.1;
PRODUCT_BUNDLE_IDENTIFIER = com.saitong.voitrans;
PRODUCT_NAME = "$(TARGET_NAME)";
REGISTER_APP_GROUPS = NO;
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = YES;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = YES;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
};
name = Debug;
@ -761,8 +775,14 @@
MARKETING_VERSION = 1.0.1;
PRODUCT_BUNDLE_IDENTIFIER = com.saitong.voitrans;
PRODUCT_NAME = "$(TARGET_NAME)";
REGISTER_APP_GROUPS = NO;
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = YES;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = YES;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
};
name = Release;

38
ios/Runner/Info.plist

@ -57,12 +57,6 @@
<false/>
<key>FacebookClientToken</key>
<string>193d0a2b1757c41cfa557ea8e8f21c33</string>
<!-- Explicitly disable user tracking -->
<key>SKAdNetworkItems</key>
<array/>
<!-- Disable ad tracking -->
<key>NSAdvertisingAttributionReportEndpoint</key>
<string></string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>weixin</string>
@ -86,6 +80,8 @@
</array>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAdvertisingAttributionReportEndpoint</key>
<string></string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
@ -102,15 +98,19 @@
<key>NSCameraUsageDescription</key>
<string>Camera permission is required for QR code scanning and video calling functions</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>The voice assistant needs location permission to provide you with location-based information and services</string>
<string>Location access enables the app to provide location-based voice translation services, such as translating local place names and providing contextual information relevant to your current location during conversations.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>The voice assistant needs location permission to provide you with location-based information and services</string>
<string>Location access enables the app to provide location-based voice translation services, such as translating local place names and providing contextual information relevant to your current location during conversations.</string>
<key>NSMicrophoneUsageDescription</key>
<string>Microphone permission is required for voice recognition and recording functions</string>
<string>Our app's voice AI interaction features (such as voice wake-up for AI, issuing commands, and real-time conversations) require microphone access. With this permission, you can interact with AI directly through speech, improving operational efficiency. We strictly protect your voice data—only used for real-time processing of interaction requests, and raw audio will not be stored.</string>
<key>NSMotionUsageDescription</key>
<string>We need access to your motion data to provide more accurate navigation services</string>
<string>This app uses motion and fitness data to detect when you're walking or moving, which helps optimize voice recognition accuracy and automatically adjust microphone sensitivity for better audio recording quality during different activities.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Photo library permission is required to save recording files and import audio files</string>
<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>
<key>SKAdNetworkItems</key>
<array/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UIBackgroundModes</key>
@ -119,22 +119,20 @@
<string>audio</string>
<string>location</string>
</array>
<key>UIDeviceFamily</key>
<array>
<string>1</string>
</array>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationPortrait</string> <!-- 竖屏正向 -->
<string>UIInterfaceOrientationPortraitUpsideDown</string> <!-- 竖屏倒置(关键缺失项) -->
<string>UIInterfaceOrientationLandscapeLeft</string> <!-- 横屏左 -->
<string>UIInterfaceOrientationLandscapeRight</string> <!-- 横屏右 -->
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

24
ios/Runner/Runner.entitlements

@ -2,6 +2,10 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.applesignin</key>
<array>
<string>Default</string>
</array>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:voitrans.net</string>
@ -10,9 +14,21 @@
<true/>
<key>com.apple.external-accessory.wireless-configuration</key>
<true/>
<key>com.apple.developer.applesignin</key>
<array>
<string>Default</string>
</array>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.device.audio-input</key>
<true/>
<key>com.apple.security.device.bluetooth</key>
<true/>
<key>com.apple.security.device.camera</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.personal-information.calendars</key>
<true/>
<key>com.apple.security.personal-information.location</key>
<true/>
<key>com.apple.security.personal-information.photos-library</key>
<true/>
</dict>
</plist>

2
lib/core/translations/language/en_us.dart

@ -742,7 +742,7 @@ const Map<String, String> enUS = {
// 配对模块
// 配对页面
"devicePairing": "Device Pairing",
"connectYourDeepSoundHeadset": "Connect Your DeepSound Headset",
"connectYourDeepSoundHeadset": "Connect Your Voitrans Headset",
"bind": "Bind",
"authorizeBind": "Authorize Binding",
"enterCode": "Please enter code",

2
lib/core/translations/language/ru_ru.dart

@ -702,7 +702,7 @@ const Map<String, String> ruRU = {
// 配对模块
// 配对页面 (pairing_view.dart & pairing_view_new.dart)
"devicePairing": "Сопряжение устройства",
"connectYourDeepSoundHeadset": "Подключите ваши наушники DeepSound",
"connectYourDeepSoundHeadset": "Подключите ваши наушники Voitrans",
"bind": "Привязать",
"authorizeBind": "Авторизовать привязку",
"enterCode": "Пожалуйста, введите код",

2
lib/core/translations/language/th_th.dart

@ -736,7 +736,7 @@ const Map<String, String> thTH = {
'retryAuthorization': 'ลองอนุญาตอีกครั้ง',
'pleaseGrantNecessaryPermissions': 'กรุณาให้สิทธิ์ที่จำเป็น',
'checkFailedRetry': 'การตรวจสอบล้มเหลว โปรดลองอีกครั้ง',
'pleaseConnectDeepSoundDevice': 'กรุณาเชื่อมต่ออุปกรณ์ DeepSound',
'pleaseConnectDeepSoundDevice': 'กรุณาเชื่อมต่ออุปกรณ์ Voitrans',
'verificationFailedRetry': 'การตรวจสอบล้มเหลว โปรดลองอีกครั้ง',
'invalidDeviceAddress': 'ที่อยู่อุปกรณ์ไม่ถูกต้อง',
'bleDeviceAssociationFailed': 'การเชื่อมโยงอุปกรณ์ BLE ล้มเหลว',

2
lib/core/translations/language/tr_tr.dart

@ -695,7 +695,7 @@ const Map<String, String> trTR = {
// 配对模块
// 配对页面 (pairing_view.dart & pairing_view_new.dart)
"devicePairing": "Cihaz Eşleştirme",
"connectYourDeepSoundHeadset": "DeepSound Kulaklığınızı Bağlayın",
"connectYourDeepSoundHeadset": "Voitrans Kulaklığınızı Bağlayın",
"bind": "Bağla",
"authorizeBind": "Bağlamayı Yetkilendir",
"enterCode": "Lütfen kodu girin",

4
lib/core/translations/language/uk_ua.dart

@ -702,7 +702,7 @@ const Map<String, String> ukUA = {
// 配对模块
// 配对页面 (pairing_view.dart & pairing_view_new.dart)
"devicePairing": "Спарювання пристрою",
"connectYourDeepSoundHeadset": "Підключіть ваші навушники DeepSound",
"connectYourDeepSoundHeadset": "Підключіть ваші навушники Voitrans",
"bind": "Прив'язати",
"authorizeBind": "Авторизувати прив'язку",
"enterCode": "Будь ласка, введіть код",
@ -757,7 +757,7 @@ const Map<String, String> ukUA = {
'retryAuthorization': 'Повторити авторизацію',
'pleaseGrantNecessaryPermissions': 'Будь ласка, надайте необхідні дозволи',
'checkFailedRetry': 'Перевірка не вдалася, спробуйте ще раз',
'pleaseConnectDeepSoundDevice': 'Будь ласка, підключіть пристрій DeepSound',
'pleaseConnectDeepSoundDevice': 'Будь ласка, підключіть пристрій Voitrans',
'verificationFailedRetry': 'Перевірка не вдалася, спробуйте ще раз',
'invalidDeviceAddress': 'Недійсна адреса пристрою',
'bleDeviceAssociationFailed': 'Не вдалося асоціювати пристрій BLE',

4
lib/core/translations/language/zh_cn.dart

@ -684,7 +684,7 @@ const Map<String, String> zhCN = {
// 配对模块
// 配对页面 (pairing_view.dart & pairing_view_new.dart)
"devicePairing": "设备配对",
"connectYourDeepSoundHeadset": "连接您的 DeepSound 耳机",
"connectYourDeepSoundHeadset": "连接您的 Voitrans 耳机",
"bind": "绑定",
"authorizeBind": "授权绑定",
"enterCode": "请输入代码",
@ -736,7 +736,7 @@ const Map<String, String> zhCN = {
'retryAuthorization': '重新授权',
'pleaseGrantNecessaryPermissions': '请授予必要权限',
'checkFailedRetry': '检查失败,请重试',
'pleaseConnectDeepSoundDevice': '请连接 DeepSound 设备',
'pleaseConnectDeepSoundDevice': '请连接 Voitrans 设备',
'verificationFailedRetry': '验证失败,请重试',
'invalidDeviceAddress': '设备地址无效',
'bleDeviceAssociationFailed': 'BLE设备关联失败',

4
lib/core/translations/language/zh_hk.dart

@ -648,7 +648,7 @@ const Map<String, String> zhHK = {
// 配對模塊
// 配對頁面 (pairing_view.dart & pairing_view_new.dart)
"devicePairing": "設備配對",
"connectYourDeepSoundHeadset": "連接您的 DeepSound 耳機",
"connectYourDeepSoundHeadset": "連接您的 Voitrans 耳機",
"bind": "綁定",
"authorizeBind": "授權綁定",
"enterCode": "請輸入代碼",
@ -695,7 +695,7 @@ const Map<String, String> zhHK = {
'retryAuthorization': '重新授權',
'pleaseGrantNecessaryPermissions': '請授予必要權限',
'checkFailedRetry': '檢查失敗,請重試',
'pleaseConnectDeepSoundDevice': '請連接 DeepSound 設備',
'pleaseConnectDeepSoundDevice': '請連接 Voitrans 設備',
'verificationFailedRetry': '驗證失敗,請重試',
'invalidDeviceAddress': '設備地址無效',
'bleDeviceAssociationFailed': 'BLE設備關聯失敗',

5
lib/modules/meeting/views/bottomSheet/share_bottom_sheet.dart

@ -103,7 +103,7 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> {
final result = await SharePlus.instance.share(ShareParams(
title: _controller.meetingData.value.title,
subject:
'DeepSound WEB,由DeepSound.Ai提供支持-实时记录会议纪要,多语言翻译。',
'Voitrans WEB,由DeepSound.Ai提供支持-实时记录会议纪要,多语言翻译。',
uri: Uri.parse(
'http://web.ideapsound.com/share/$id/$token',
),
@ -281,7 +281,8 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> {
title,
style: TextStyle(
fontSize: 14.sp,
color: Colors.black87.withValues(alpha: onTap != null ? 1 : 0.5),
color:
Colors.black87.withValues(alpha: onTap != null ? 1 : 0.5),
),
),
),

8
lib/modules/pairing/controllers/pairing_controller.dart

@ -181,7 +181,8 @@ class PairingController extends GetxController {
/// 处理蓝牙开关状态变化
void _handleBluetoothStateChange(String state) {
if (state == 'off') {
_setError(ErrorType.bluetoothOff, 'pleaseEnableBluetooth'.tr);
_setError(
ErrorType.bluetoothOff, 'connectDeepSoundViaSystemBluetooth'.tr);
} else if (state == 'on' && _errorType.value == ErrorType.bluetoothOff) {
// 蓝牙重新开启,恢复流程
Logger.i(_tag, '检测到蓝牙已开启,自动恢复配对流程');
@ -336,7 +337,7 @@ class PairingController extends GetxController {
switch (_errorType.value) {
case ErrorType.bluetoothOff:
showConnectButton.value = true;
connectButtonText.value = 'enableBluetooth'.tr; //开启蓝牙
connectButtonText.value = 'goToBluetoothSettings'.tr; //开启蓝牙
break;
case ErrorType.noClassicDevice:
showConnectButton.value = true;
@ -400,7 +401,8 @@ class PairingController extends GetxController {
final arePermissionsOk = results[1] as bool;
if (!isBluetoothOk) {
_setError(ErrorType.bluetoothOff, 'pleaseEnableBluetooth'.tr);
_setError(
ErrorType.bluetoothOff, 'connectDeepSoundViaSystemBluetooth'.tr);
return;
}

2
lib/modules/pairing/views/pairing_view.dart

@ -481,7 +481,7 @@ class _PairingViewState extends State<PairingView>
final errorType = controller.errorType;
switch (errorType) {
case ErrorType.bluetoothOff:
return 'bluetoothTurnedOff'.tr; // 蓝牙已关闭,请打开蓝牙
return 'connectDeepSoundViaSystemBluetooth'.tr; // 蓝牙已关闭,请打开蓝牙
case ErrorType.noPermission:
return 'lackPermissions'.tr; // 缺少蓝牙权限
case ErrorType.noClassicDevice:

8
lib/modules/splash/controllers/splash_controller.dart

@ -1,5 +1,7 @@
import 'dart:async';
import 'dart:io';
import 'package:app_tracking_transparency/app_tracking_transparency.dart';
import '../../../data/models/appconfig.dart';
import '../../../data/models/appconfig_model.dart';
import 'package:flutter/material.dart';
@ -47,6 +49,12 @@ class SplashController extends GetxController {
_startNormalFlow();
}
});
//弹出用户追中问题
WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((_) async {
final status =
await AppTrackingTransparency.requestTrackingAuthorization();
});
}
void _startNormalFlow() {

2
local_plugins/amap_service/ios/Classes/AmapService.swift

@ -24,7 +24,7 @@ public class AmapService: NSObject, AMapNaviDriveManagerDelegate {
// 设置高德地图服务
// 1. 设置隐私合规
AMapServices.shared()?.enableHTTPS = true
AMapServices.shared()?.apiKey = "0b704e172b7ade5a7a18728e8f517a05"
AMapServices.shared()?.apiKey = "6144a636c24dc9f2e1e57f7597849cf7"
}
public func startNavigation(from start: String, to end: String) {

2
local_plugins/amap_service/ios/Classes/AmapServicePlugin.swift

@ -22,7 +22,7 @@ public class AmapServicePlugin: NSObject, FlutterPlugin, FlutterStreamHandler {
// 高德SDK初始化
DispatchQueue.main.async {
AMapServices.shared()?.apiKey = "0b704e172b7ade5a7a18728e8f517a05"
AMapServices.shared()?.apiKey = "6144a636c24dc9f2e1e57f7597849cf7"
AMapServices.shared()?.enableHTTPS = true
if #available(iOS 13.0, *) {

2
local_plugins/spotify_sdk/ios/spotify_sdk.podspec

@ -20,7 +20,7 @@ Unofficial Spotify Flutter SDK.
# Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported.
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' }
s.swift_version = '5.0'
s.prepare_command = './prepare-iOS-SDK.sh'
# s.prepare_command = './prepare-iOS-SDK.sh'
s.vendored_frameworks = 'ios-sdk/SpotifyiOS.xcframework'
s.preserve_paths = 'ios-sdk/SpotifyiOS.xcframework'
end

1
pubspec.yaml

@ -70,6 +70,7 @@ dependencies:
flutter_image_compress: ^2.4.0
common_utils: ^2.1.0
image_gallery_saver_plus: ^4.0.1
app_tracking_transparency: ^2.0.1
dio: ^5.8.0+1
sqflite: ^2.4.2
path: ^1.9.1

Loading…
Cancel
Save