Flutter 开放视频呼叫颤振

Flutter 开放视频呼叫颤振,flutter,dart,Flutter,Dart,在Flatter中打开本机手机上的视频通话功能是否有解决方案?我看过Agora和其他人,但没有一个像我们所需要的那样工作。这对研究和提出来说相当烦人,就这样。这是我能想到的最好的解决方案,同时保持高复杂性和付费SDK的解决方案之外 首先,在启动视频通话之前,您必须区分两种平台(iOS/Android)。因为两种平台都没有统一的解决方案 导入'dart:io'; if(Platform.isAndroid){ //Android视频通话 }else if(Platform.isIOS){ //iO

在Flatter中打开本机手机上的视频通话功能是否有解决方案?我看过Agora和其他人,但没有一个像我们所需要的那样工作。

这对研究和提出来说相当烦人,就这样。这是我能想到的最好的解决方案,同时保持高复杂性和付费SDK的解决方案之外

首先,在启动视频通话之前,您必须区分两种平台(iOS/Android)。因为两种平台都没有统一的解决方案

导入'dart:io';
if(Platform.isAndroid){
//Android视频通话
}else if(Platform.isIOS){
//iOS视频通话
}
网间网操作系统
  • 安装臭名昭著的酒吧
  • 您需要使用(请参阅完整的iOS URL方案参考或)
  • 文本示例:
    facetime:14085551234
    这将启动facetime视频通话至14085551234(您也使用电子邮件而不是电话号码)
import'package:url_launcher/url_launcher.dart';
最终字符串url='facetime:$phoneNumber';
如果(等待canLaunch(url)){
等待发射(url);
}否则{
抛出“无法启动$url”;
}
这项工作出人意料地好。在这种情况下,您可以将
$phoneNumber
变量替换为
$userEmail
变量

安卓
  • 安装发布
  • 如果您正在使用,或者只是在没有权限的情况下使用,请添加权限并向用户显示其提示
这就是问题所在。。。我尝试了以下解决方案,它只适用于常规通话,不适用于视频通话

import'package:android_intent/android_intent.dart';
///此acton通过本机电话应用程序直接呼叫用户,但需要在AndroidManifest中获得“呼叫电话”权限。
final callIntentAction='android.intent.action.CALL';
///此操作显示拨号板打开的本机电话应用程序,显示传递的电话号码意图的参数/额外参数。自2020年1月起不需要权限。
final dialIntentAction='android.intent.action.DIAL';
最终目的=认证;
类雄激素意图=类雄激素(
行动:意图,
数据:Uri.encodeFull('tel:$phoneNumber'),
论据:{
///键:要拨打的实际电话号码[来源](https://developer.android.com/reference/android/content/Intent.html#EXTRA_PHONE_NUMBER)
///值:电话号码
'android.intent.extra.PHONE_NUMBER':phoneNumber,
///键:[使用视频状态启动通话](https://developer.android.com/reference/android/telecom/TelecomManager.html#EXTRA_START_CALL_WITH_VIDEO_STATE)
///值:`3`表示[状态](https://developer.android.com/reference/android/telecom/VideoProfile.html#STATE_BIDIRECTIONAL)
“android.telecom.extra.START_CALL_WITH_VIDEO_STATE”:“3”,
},
);
等待意图。启动();
错误处理旁注:不幸的是,对于android\u-intent-pub,没有像url\u-launcher那样的错误处理或“canOpen”方法

您的问题仍然在于Android作为通用视频通话应用程序。

您有两个选择:

  • A.您可以通过第三方或您自己的应用程序链接视频通话SDK/功能。(比如,agora_flatter_webrtc,)。这样做的缺点是被叫人必须使用相同的软件,即你的应用程序必须安装在被叫人的设备上。这种方法更能证明未来。注意,我没有加入我提到的任何图书馆
  • B.您可以为Android创建一个平台方法,以检查一组定义的意图,并检查已知视频通话应用程序的包名以及它们所需的额外/参数。你必须一个接一个地检查意图列表,看看哪一个是正确的,哪一个是正确的。适用于Whatsapp、Skype等应用程序。。。。这极易出错。如前所述

1。是否希望用户点击“电话号码”文本来执行此操作?2。用户是否选择启动视频通话的应用程序?想法是,他们单击按钮或图像或任何可能的内容,就会打开手机的本机视频通话功能。因此,您只需要用户点击按钮/图像。并打开“本机”视频通话应用程序。不传递用户正在呼叫的任何参数。不,我们将传递所有信息的数字银行!那么,安卓系统的最佳选择是什么?我们想远离第三方,但看起来不行。有了这些第三方选项,它们能像传递一个数字那样简单吗?它们能。但是有一个警告。。。由于这不是平台提供的视频呼叫服务,因此呼叫者和被呼叫者必须具有相同的服务。假设你在答案中选择了选项B。您可以使用第三方一对一视频通话SDK或您自己的WebRTC实现。在这种情况下,如果您Sam已经拥有我的号码,并尝试通过上述第三方或内部视频通话解决方案从您的应用程序视频呼叫我om ha,那么如果我没有安装您的应用程序(即,我的设备上没有该解决方案),它将无法工作,您将无法呼叫我。但是,对于选项A。由于Android上没有平台提供的视频通话解决方案,因此您仍然有与选项B相同的警告,但方式不同。您的意图涵盖的“顶级”视频通话应用越多越好,作为备用方案,您可以使用我的上述解决方案进行语音通话。您对这些意图的更新响应越快(根据每个应用程序更新的意图规范),当应用程序可供使用时,您就越安全地避免意图失败。注意,这必须通过平台方法在Android中本机完成。作为选项a中意图的补充,一些应用程序提供(带或不带意图)用于互操作或深度链接的API。总之,只要您希望呼叫者呼叫尚未安装您的应用程序的被呼叫者,那么我就会看到一个对Android和iOS都有效的解决方案,该解决方案可以回退到n