当前位置: 首页 > news >正文

襄樊网站推广凡客诚品特色

襄樊网站推广,凡客诚品特色,制作好网站怎么导入,汝州网站制作接上篇:Flutter3引用原生播放器-IOS(Swift)篇 安卓端原生播放器的接入思路与ios基本一致,所以本篇就不废话了,直接上代码: 创建插件VideoViewPlugin实现FlutterPlugin: package io.flutter.plugins.videoplayer;imp…

接上篇:Flutter3引用原生播放器-IOS(Swift)篇

安卓端原生播放器的接入思路与ios基本一致,所以本篇就不废话了,直接上代码:

创建插件VideoViewPlugin实现FlutterPlugin:

package io.flutter.plugins.videoplayer;import android.util.Log;import androidx.annotation.NonNull;import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.embedding.engine.plugins.activity.ActivityAware;
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;public class VideoViewPlugin implements FlutterPlugin, ActivityAware {private final static String TAG = "VideoViewPlugin";FlutterPluginBinding fpBinding;@Overridepublic void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {fpBinding = binding;Log.e(TAG, "onAttachedToEngine");}@Overridepublic void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {Log.e(TAG, "onDetachedFromEngine");}@Overridepublic void onAttachedToActivity(@NonNull ActivityPluginBinding apBinding) {fpBinding.getPlatformViewRegistry().registerViewFactory("plugins.my_video_player/view", new VideoViewFactory(fpBinding, apBinding));Log.e(TAG, "onAttachedToActivity");}@Overridepublic void onDetachedFromActivityForConfigChanges() {Log.e(TAG, "onDetachedFromActivityForConfigChanges");}@Overridepublic void onReattachedToActivityForConfigChanges(@NonNull ActivityPluginBinding binding) {Log.e(TAG, "onReattachedToActivityForConfigChanges");}@Overridepublic void onDetachedFromActivity() {Log.e(TAG, "onDetachedFromActivity");}
}

由于引用视频播放器时需要用到Activity的context,所以实现了ActivityAware接口,在onAttachedToActivity方法中注册PlatformViewFactory!

创建VideoViewFactory实现PlatformViewFactory:

package io.flutter.plugins.videoplayer;import android.content.Context;import io.flutter.Log;
import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;
import io.flutter.plugin.common.StandardMessageCodec;
import io.flutter.plugin.platform.PlatformView;
import io.flutter.plugin.platform.PlatformViewFactory;public class VideoViewFactory extends PlatformViewFactory {private final static String TAG = "VideoViewFactory";private final FlutterPlugin.FlutterPluginBinding fpBinding;private final ActivityPluginBinding apBinding;public VideoViewFactory(FlutterPlugin.FlutterPluginBinding fpBinding, ActivityPluginBinding apBinding) {super(StandardMessageCodec.INSTANCE);Log.e(TAG, "VideoViewFactory");this.fpBinding = fpBinding;this.apBinding = apBinding;}@Overridepublic PlatformView create(Context context, int viewId, Object args) {Log.e(TAG, "PlatformView-create:" + args.toString());return new VideoViewPlayer(args.toString(), fpBinding, apBinding);}}

创建VideoViewPlayer,实现PlatformView和MethodChannel.MethodCallHandler:

package io.flutter.plugins.videoplayer;import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;import com.th.kjjl_flutter.R;
import com.videoplayer.player.VideoView;import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.platform.PlatformView;public class VideoViewPlayer implements PlatformView, MethodChannel.MethodCallHandler {private final static String TAG = "VideoPlayerView";Activity context;private VideoView videoView;private MethodChannel methodChannel;VideoViewPlayer(String viewId, FlutterPlugin.FlutterPluginBinding fpBinding, ActivityPluginBinding apBinding) {this.context = apBinding.getActivity();videoView = (VideoView) LayoutInflater.from(context).inflate(R.layout.video_player, null);methodChannel = new MethodChannel(fpBinding.getBinaryMessenger(), "my_video_player_" + viewId);methodChannel.setMethodCallHandler(this);}@Overridepublic void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {Log.e(TAG, "call.method>>" + call.method);switch (call.method) {case "setUrl":String url = call.arguments.toString();videoView.initVideoController(context);videoView.setUrl(url);break;case "start":videoView.start();break;case "pause":videoView.pause();break;case "release":videoView.pause();videoView.release();break;case "stopFullScreen":videoView.stopFullScreen();break;default:result.notImplemented();}}@Nullable@Overridepublic View getView() {return videoView;}@Overridepublic void dispose() {Log.e(TAG, "dispose>>");videoView.pause();videoView.release();methodChannel.setMethodCallHandler(null);methodChannel = null;}}

其中的VideoView即引用的第三方播放器库,你可以根据自己情况,使用常见的安卓端开源播放器如GSY,饺子,DKPlayer等!

video_player.xml:

<?xml version="1.0" encoding="utf-8"?>
<com.videoplayer.player.VideoView xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/videoView"android:layout_width="match_parent"android:layout_height="match_parent" />

在MainActivity中注册插件:

class MainActivity : FlutterActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)flutterEngine!!.plugins.add(VideoViewPlugin())}
}

注意:不要在GeneratedPluginRegistrant中去注册插件包括IOS,这个类由系统自动生成其它第三方插件注册代码!安卓端在MainActivity中注册,IOS端在AppDelegate中注册!

flutter中的引用以及通信方法,上一篇已经写了,本篇就不再重复了!需要注意的是,插件名,插件id,methodChannel等,安卓,IOS和Flutter三端一定要一致!

http://www.yayakq.cn/news/495616/

相关文章:

  • 网站的动画效果代码东莞建设网站官网登录
  • 深圳网站建设注册淮安网站建设制作
  • 如何美化网站东莞网站制作 东莞企业网站制作
  • 为何要网站优化好的网站建设网站
  • 开发网站广州网站建设百灵鸟优化
  • 可以用手机做网站吗wordpress后台空白
  • 网站开发的技术意义vue is做的购物网站
  • 汉服网站怎么做塘沽网站开发
  • 廊坊网站搭建竹溪网站建设
  • 邹平做网站的公司有哪些南谯区城乡建设局网站
  • 济南网站建设优化公司长春快速建站模板
  • 丽水市建设监理协会网站在哪里福建莆田网站开发
  • 网站功能详细设计外贸网站建设智能建站
  • 东阳光门户平台提升seo排名
  • 临沂住房和城乡建设厅网站wordpress 分类文章置顶
  • 软文网站推广法国际机票搜索量大涨
  • 阜南做网站公司网络营销流程
  • 做软件营销网站怎么样定制设计网站公司
  • 男女生做羞羞网站查看公司信息的网站
  • 如何做凡客网站电影网站开发文档
  • 深圳找工作的网站 上软件下载app
  • 诸城网站建设茂名seo网站建设
  • 手机做任务网站天津 公司网站建设
  • 买房网站排名为什么要用h5建站
  • 青岛推广软件南阳网站排名优化
  • 网站建设如何提高浏览量网站项目需求表
  • 一屏网站模板下载 迅雷下载 迅雷下载地址百度怎么搜索到自己的网站
  • 广东省住房和城乡建设网站wordpress轮播图代码
  • 八年级学生做的简易网站网络安全培训机构排名
  • 昆明网站建设公司哪家好域名备案不是网站公司做的