# flutter_ys7
**Repository Path**: xiaokai1990/flutter_ys7
## Basic Information
- **Project Name**: flutter_ys7
- **Description**: flutter 萤石云sdk插件
- **Primary Language**: Dart
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 4
- **Created**: 2023-08-25
- **Last Updated**: 2023-08-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# flutter_ys7
flutter 萤石云直播插件
| 功能 | android | ios |
| -------- | ------- | ------ |
| 直播功能 | ✔️ | ✔️ |
| 云台控制 | ✔️ | ✔️ |
| sd卡/NVR回放 | ✔️ | ✔️ |
### 安装
添加依赖 `flutter_ys7` 到 pubspec.yaml 文件
#### IOS
关闭目标target的bitcode功能 Build Settings->Enable Bitcode设置为NO
将以下内容添加到你的 info.plist 文件
1. 相册权限: 如果需要使用开放平台播放器录像和截图并保存的功能,就需要配置相册权限。
```
NSPhotoLibraryUsageDescription
需要使用手机相册
NSPhotoLibraryAddUsageDescription
需要使用手机相册
```
2. 麦克风权限: 如果需要使用设备对讲功能,就需要配置麦克风权限。务必在发起对讲前向iOS系统申请麦克风权限,否则将导致第一次对讲异常。
```
NSMicrophoneUsageDescription
需要使用手机麦克风
```
3. 摄像头权限: 如果需要仿照demo实现扫码添加设备功能,就需要配置摄像头权限。
```
NSCameraUsageDescription
需要使用手机照相机
```
#### android
在 AndroidMainfest.xml 文件中添加权限:
```
```
使用 kotlin 在 MainActivity 添加
```kotlin
class MainActivity: FlutterActivity() {
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
flutterEngine.platformViewsController.registry.registerViewFactory("cspy/flutter_ys7/videoView",
FlutterYs7ViewFactory(flutterEngine.dartExecutor.binaryMessenger,application))
}
}
```
使用 java 在 MainActivity 添加
```java
public class MainActivity extends FlutterActivity {
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
super.configureFlutterEngine(flutterEngine);
flutterEngine.getPlatformViewsController().getRegistry().registerViewFactory("cspy/flutter_ys7/videoView",
new FlutterYs7ViewFactory(flutterEngine.getDartExecutor().getBinaryMessenger(),getApplication()));
}
}
```
#### 代码混淆
目前sdk在打包时不能混淆,请添加以下内容
```
#========SDK对外接口=======#
-keep class com.ezviz.opensdk.** { *;}
#========以下是hik二方库=======#
-dontwarn com.ezviz.**
-keep class com.ezviz.** { *;}
-dontwarn com.ez.**
-keep class com.ez.** { *;}
-dontwarn com.hc.CASClient.**
-keep class com.hc.CASClient.** { *;}
-dontwarn com.videogo.**
-keep class com.videogo.** { *;}
-dontwarn com.hik.TTSClient.**
-keep class com.hik.TTSClient.** { *;}
-dontwarn com.hik.stunclient.**
-keep class com.hik.stunclient.** { *;}
-dontwarn com.hik.streamclient.**
-keep class com.hik.streamclient.** { *;}
-dontwarn com.hikvision.sadp.**
-keep class com.hikvision.sadp.** { *;}
-dontwarn com.hikvision.netsdk.**
-keep class com.hikvision.netsdk.** { *;}
-dontwarn com.neutral.netsdk.**
-keep class com.neutral.netsdk.** { *;}
-dontwarn com.hikvision.audio.**
-keep class com.hikvision.audio.** { *;}
-dontwarn com.mediaplayer.audio.**
-keep class com.mediaplayer.audio.** { *;}
-dontwarn com.hikvision.wifi.**
-keep class com.hikvision.wifi.** { *;}
-dontwarn com.hikvision.keyprotect.**
-keep class com.hikvision.keyprotect.** { *;}
-dontwarn com.hikvision.audio.**
-keep class com.hikvision.audio.** { *;}
-dontwarn org.MediaPlayer.PlayM4.**
-keep class org.MediaPlayer.PlayM4.** { *;}
#========以上是hik二方库=======#
#========以下是第三方开源库=======#
# JNA
-dontwarn com.sun.jna.**
-keep class com.sun.jna.** { *;}
# Gson
-keepattributes *Annotation*
-keep class sun.misc.Unsafe { *; }
-keep class com.idea.fifaalarmclock.entity.***
-keep class com.google.gson.stream.** { *; }
# OkHttp
# JSR 305 annotations are for embedding nullability information.
-dontwarn javax.annotation.**
# A resource is loaded with a relative path so the package of this class must be preserved.
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
-dontwarn org.codehaus.mojo.animal_sniffer.*
# OkHttp platform used only on JVM and when Conscrypt dependency is available.
-dontwarn okhttp3.internal.platform.ConscryptPlatform
# 必须额外加的,否则编译无法通过
-dontwarn okio.**
#========以上是第三方开源库=======#
```
### 使用方式
```dart
// 详情见example/lib/main.dart
// 手势监听使用 Listener
```