Concevoir, développer une expérience pratique Plugin Flutter

Flutter comment appeler du code natif

Nous devons faire est d'obtenir audio en temps réel et la vidéo sur le Flutter. Donc, avant de commencer à travailler le béton, vous devez d'abord de savoir comment appeler Flutter tels que « Get appareils multimédias » tels API de la plate-forme native.

Graphique du fonctionnaire de haut a été assez clair, Flutter MethodChannel lancé en invoquant une méthode, puis mettre en uvre l'exécution native appropriée après avoir reçu la plate-forme de nouvelles (Java / Kotlin / Swift / Object-C) et renvoie le résultat de manière asynchrone getUserMedia à titre d'exemple, la première instruction dans la méthode flutter couche, est réalisée pour envoyer un message pour appeler un nom et les paramètres de procédé correspondant porté par MethodChannel.

avenir < MediaStream >  getUserMedia ( carte < String, dynamique >  mediaConstraints ) {Async // Obtenir une bonne inscription pré-unifiée MethodChannel MethodChannel channel = WebRTC.methodChannel (); try { // Par la MethodChannel pour appeler les correspondants getUserMedia méthode Carte finale < dynamique, dynamique >  réponse = await channel.invokeMethod ( 'GetUserMedia', // nom de la méthode < String, dynamique > { 'contraintes': mediaConstraints}, // Paramètre ); // objet encapsule un MediaStream complet utilisé dans la couche asynchrone Flutter basée sur un résultat renvoyé = Chaîne StreamID réponse ; flux = MediaStream nouveau MediaStream (StreamID); stream.setMediaTracks (réponse , réponse ); // Retourne flux de retour; } Sur PlatformException catch (e) { // gérer les exceptions Throw 'Impossible de getUserMedia: $ {} e.message'; } }

Désigne un futur appel asynchrone, similaire à Javascript Promise, async / attendre De même, dans une fonction async, sera exécutée de la même manière synchrone pour la méthode await, bien que celle-ci est await méthode asynchrone.

Lorsque la plate-forme également enregistrée dans la MainActivity MethodChannel, après avoir reçu le message et les paramètres de l'appel de méthode par MethodChannel, une plate-forme correspondante basée sur cette logique, et renvoie le résultat d'exécution, ici que la plate-forme Android, par exemple:

// Inscrivez-vous pour recevoir des appels MethodChannel de Flutter importation io.flutter.app.FlutterActivity; importation io.flutter.plugin.common.MethodCall; importation io.flutter.plugin.common.MethodChannel; importation io.flutter.plugin.common.MethodChannel.MethodCallHandler; importation io.flutter.plugin.common.MethodChannel.Result; MainActivity public class {étend FlutterActivity static private String CANAL = "FlutterWebRTC"; @Override public void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); GeneratedPluginRegistrant.registerWith (ce); // Inscription MethodChannel, ChannelName doit être enregistré dans le même nom que le précédent Flutter nouvelle MethodChannel (getFlutterView (), CANAL) .setMethodCallHandler ( // à condition que chaque implémentation de la méthode nouvelle MethodCallHandler () { @Override onMethodCall public void (appel MethodCall, résultat Résultat) { // TODO } }); } } // réalisation concrète @Override onMethodCall public void (appel MethodCall, résultat Résultat) { // Si la méthode appelée getUserMedia si (call.method.equals ( "getUserMedia")) { // méthode de réalisation Android getUserMedia // ... // renvoie l'information succès // result.success (// informations connexes); // En cas d'échec ou lance une exception // result.error (// information d'erreur); } Else { result.notImplemented (); } }

Des informations plus détaillées se référer à l'explication officielle et par exemple Flutter.

Réalisation d'idées de SDK audio et vidéo

Après l'appel de comprendre les principes de ce qui précède approche Flutter de la plate-forme native, nous avons deux idées pour mettre en uvre un SDK audio et vidéo.

1. La première réalisation de l'audio et la vidéo dans une plate-forme SDK natif, SDK fournit une méthode appelée directement après Flutter par MethodChannel.

Des programmes spécifiques pour les appels vocaux existants directement à travers le réseau Agora SDK MethodChannel, et les différences possibles dans la couche d'effacement Flutter, tels que différents paramètres, différentes parties du nom de la méthode.

Le principal avantage de cette approche est que vous pouvez maximiser la réutilisation des SDK existants, similaire à la mise en place d'un pont de couche.

2. Sur la base du premier critère pour la plate-forme native WebRTC, puis appelle WebRTC MethodChannel interfaces de couche Flutter, la logique du SDK audio et vidéo, puis obtenus.

Cette approche à l'utilisation de la norme de la plate-forme native WebRTC (avant une partie de cette mise en uvre est la norme getUserMedia) et enregistré comme dans la couche Plugin WebRTC Flutter. SDK référence audio réseau audio et vidéo sur cette base Flutter WebRTC Plugin sur, connecté au réseau virtuel mondial de communication de l'Agora SD-RTN.

Cette approche par rapport au point précédent, pour atteindre l'équivalent d'un tout nouveau SDK langage Dart, besoin Dart d'utiliser plus de la bibliothèque standard (comme les mathématiques, io, convertir etc.) et de l'écosystème tiers (tels que (flutter_webrtc). Supposons que vous voulez lorsque le support pour plusieurs plates-formes (comme Windows), seule la plate-forme pour la norme WebRTC peut être utilisé directement.

Familiariser les étudiants de WebRTC peuvent connaître le concept d'un adaptateur lors de l'implémentation application du navigateur WebRTC, le but est de cacher un peu différent WebRTC Interface plusieurs navigateurs principaux, et l'idée de ce programme est similaire, mais adapté plate-forme de Firefox / Chrome / Safari devient Windows / iOS / Android et ainsi de suite.

La finale aux fins de la recherche, mais aussi pour répondre à plus ensemble Flutter de code, idée universelle multi-plateforme (SDK est théoriquement une conception de la couche logique côté client complet, dans le cas de réception d'un bon soutien WebRTC, le contenu du travail devient est la suivante: comment utiliser la logique de communication audio langage Dart et vidéo sur le standard WebRTC), nous avons choisi d'adopter ce programme, afin que les lecteurs peuvent trouver près du son de la plate-forme Web audio et réseau vidéo SDK quelques-uns des nombreux concepts sur l'ensemble Flutter SDK .

Structure SDK

La fonction principale du SDK comprend une capture audio et vidéo en général et la lecture, et d'établir une gestion de connexion P2P, ainsi que des messages entre la passerelle et l'échange et le traitement Agora Gateway.

Bien que la communauté Flutter est relativement nouveau, mais les bibliothèques standards Dart peut être considéré comme un très complet, mais il y a déjà beaucoup d'excellents plug-in tiers.

Le code principal peut être divisé en modules suivants:

fléchette base: io Websocket méthode associée pour la communication de messages entre la passerelle (par exemple publier / message d'abonnement, et ces réponses)

Flutter_webrtc le projet communautaire open source pour obtenir la capture audio et vidéo et connexion p2p et d'autres fonctions connexes sur la base WebRTC

Sur la base des objets dart flux Carte ou simplement pour atteindre ces classes auxiliaires souhaité SDK EventEmitter (bien sûr, également être utilisé directement à Dart flux / Sink concept alternatif).

Après l'achèvement de ces modules, en plus de cela, vous pouvez obtenir un son similaire dans le SDK Web Network Client et de l'objet Stream.

Il est à noter la lecture d'un flux vidéo, peut être mis en uvre par RTCVideoView objets plug-in est flutter_webrtc, vous voulez comprendre les principes spécifiques peuvent en apprendre davantage sur Flutter texture ajouter des concepts (texture).

Ce SDK a été essentiellement formé, après le développement est la couche d'interface utilisateur, Flutter cette partie est largement inspirée par React cadre, le cadre familier des développeurs Web peuvent facilement atteindre cet objectif basé sur un SDK peut fonctionner sur Android / appel vidéo plate-forme App iOS. Nous avons dû partager la démo avait été un succès et avoir du son net Android / iOS / Web SDK interfonctionnement, le code correspondant sera probablement ouvert dans un proche avenir.

résumé

Bien que la communauté Flutter est encore très jeune, mais déjà il y a un nombre croissant d'excellents tiers plug-ins émerger, plus Dart bibliothèque standard relativement complète, audio et vidéo pour réaliser un tel SDK ou une fonction similaire n'a pas besoin de posséder beaucoup de terres pour créer la roue en plus Flutter propre environnement pour construire / build / debug sont très pratique, de sorte que l'ensemble du processus de développement presque n'a rencontré aucune fosse.

De plus dans le développement de la couche d'application, le style est très proche de réagir face à l'utilisation du développement Web, plus de Flutter caractéristiques Hot Recharger, par rapport à l'expérience dans le développement et l'efficacité du développement indigène a vraiment un gros avantage.

Compte tenu de l'amélioration progressive de multiplateformes (projet-enrobage flutter-desktop côté bureau avec le projet colibri du navigateur) et peut venir nouveau système d'exploitation de Google, Fuchsia, tant pour l'accès d'offre aux développeurs Web de développement natif , ou la recherche de développeurs natifs l'efficacité du développement supérieur et une meilleure expérience de développement, Flutter est un angle de coupe très approprié, il vaut la peine de la nouvelle année, en ajoutant leur propre pile technologique.

[Attaché] architecture et des informations connexes

collecte des données

Regarder + réponse privée lettre, libre accès « données Andrews »!

Android pour obtenir à recevoir l'architecture avancée de l'information, le code source, notes, vidéo. Interface utilisateur principale, optimisation des performances, des cours d'architecte, NDK, développement hybride (ReactNative + Weex) applet micro lettre, pratique avancée Flutter Android tous les aspects de la technologie

Stephen Chow la manière de raconter l'histoire de Wong Kar-wai, Tony Leung décennie pas drôle navire pirate sur le Zhang Jiajia
Précédent
Lecture module de commande: 78 plus beau? Deux dimensions infinies GTO78
Prochain
Le plus beau Rhapsody, film Avril voit la peine
Lin Chi-ling et la déchirure de l'année se sont avérés être pour les petits S Tsai Kang-yung nouveau ah film
mode de contrôle de lecture: prendre coeur à Dieu couleur HGUC
Laissez les contrôles Scroller si soyeux et VelocityTracker l'API pour expliquer et combat
Transformation, lutte, pense plus tard, le modèle de C2B ou d'occasion deviendront fournisseur d'électricité finale
« Street Fighter » présentera le thème de sous-vêtements Chun-Li et Jia Mi
Dior a tant fait, pas sur le marché des jeunes
Module de commande de lecture: le second élément de jusqu'à 78 couleurs
Et deux femmes ont donné naissance à quatre enfants jamais marié Hugh Grant est pas exactement laitier laitier?
L'or et trois médailles d'argent quatre saisons saut travail, les Raiders ont enhardi à prendre!
l'introduction du film "invité invisible" (points de classement de cresson gagné recommandé 68,8.8)
mode de contrôle de lecture: Black Knight Duolujiesi F