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

2016年做网站能赚钱舆情监测软件免费版

2016年做网站能赚钱,舆情监测软件免费版,专业做网站建设公,做网站导航能赚钱吗接上文 Flutter PIP 插件 ---- Android 项目地址 PIP, pub.dev也已经同步发布 pip 0.0.3,你的加星和点赞,将是我继续改进最大的动力 开发文档 Add videos using picture-in-picture (PiP)介绍PIP功能从 Android 8.0 (API level 26) 引入&…

接上文 Flutter PIP 插件 ---- Android

项目地址 PIP, pub.dev也已经同步发布 pip 0.0.3,你的加星和点赞,将是我继续改进最大的动力

开发文档 Add videos using picture-in-picture (PiP)介绍PIP功能从 Android 8.0 (API level 26) 引入,但是autoEnter功能从 Android 12 才开始支持,那么不支持的版本呢就需要通过监听 onUserLeaveHint 主动调用 enterPictureInPictureMode 才能进入 PIP Mode,在之前的版本中因为 FlutterActivity 没有转发 onUserLeaveHint,导致我们只能在 dart 中通过 flutterdidChangeAppLifecycleState 事件,在应用进入后台是主动调用的方式进入PIP Mode,但实际测下来,似乎无法区分通知栏下滑的通知,这导致即使应用在前台,当用户下滑通知栏的时候依然会自动进入PIP Mode, 这显然不是我们想要的,优化后的效果如下:

请添加图片描述

修改PIP插件

  • 新增PipActivity

    package org.opentraa.pip;import android.app.PictureInPictureUiState;
    import android.content.res.Configuration;
    import android.os.Build;
    import androidx.annotation.NonNull;
    import androidx.annotation.RequiresApi;
    import io.flutter.embedding.android.FlutterActivity;@RequiresApi(Build.VERSION_CODES.O)
    public class PipActivity extends FlutterActivity {public interface PipActivityListener {void onPictureInPictureModeChanged(boolean isInPictureInPictureMode,Configuration newConfig);void onPictureInPictureUiStateChanged(PictureInPictureUiState state);boolean onPictureInPictureRequested();void onUserLeaveHint();}private PipActivityListener mListener;public void setPipActivityListener(PipActivityListener listener) {mListener = listener;}// only available in API level 26 and above@RequiresApi(26)@Overridepublic void onPictureInPictureModeChanged(boolean isInPictureInPictureMode,Configuration newConfig) {super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig);if (mListener != null) {mListener.onPictureInPictureModeChanged(isInPictureInPictureMode,newConfig);}}// only available in API level 30 and above@RequiresApi(30)@Overridepublic boolean onPictureInPictureRequested() {if (mListener != null) {return mListener.onPictureInPictureRequested();}return super.onPictureInPictureRequested();}// only available in API level 31 and above@RequiresApi(31)@Overridepublic voidonPictureInPictureUiStateChanged(@NonNull PictureInPictureUiState state) {super.onPictureInPictureUiStateChanged(state);if (mListener != null) {mListener.onPictureInPictureUiStateChanged(state);}}@Overridepublic void onUserLeaveHint() {super.onUserLeaveHint();if (mListener != null) {mListener.onUserLeaveHint();}}
    }
    

    主要思路就是如果PIP 插件的用户想要在 Android 12 以下支持应用进入后台自动进入 PIP Mode 的话,可以将自己 MainActivity 的父类修改为 PipActivity ,这样在 PIP 插件被注册时,可以通过判断传入的 Activity 是否是 PipActivity 来决定是否启用相关的功能。

  • 绑定 ActivityPipController
    PipPluginonAttachedToActivityonReattachedToActivityForConfigChanges 的时候去初始化 PipController

    private void initPipController(@NonNull ActivityPluginBinding binding) {if (pipController == null) {pipController = new PipController(binding.getActivity(), new PipController.PipStateChangedListener() {@Overridepublic void onPipStateChangedListener(PipController.PipState state) {// put state into a json objectchannel.invokeMethod("stateChanged",new HashMap<String, Object>() {{ put("state", state.getValue()); }});}});} else {pipController.attachToActivity(binding.getActivity());}
    }@Override
    public void onAttachedToActivity(@NonNull ActivityPluginBinding binding) {initPipController(binding);
    }@Override
    public void onReattachedToActivityForConfigChanges(@NonNull ActivityPluginBinding binding) {initPipController(binding);
    }
    
  • PipController 构造函数和 attachToActivity 方法中去综合当前的系统版本和绑定的 Activity 进行检查是否支持 autoEnter

    public PipController(@NonNull Activity activity,@Nullable PipStateChangedListener listener) {setActivity(activity);//  ... Other code ...
    }private boolean checkAutoEnterSupport() {// Android 12 and above support to set auto enter enabled directlyif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {return true;}// For android 11 and below, we need to check if the activity is kind of// PipActivity since we can enter pip mode when the onUserLeaveHint is// called to enter pip mode as a workaroundActivity activity = mActivity.get();return activity instanceof PipActivity;
    }private void setActivity(Activity activity) {mActivity = new WeakReference<>(activity);if (activity instanceof PipActivity) {((PipActivity)activity).setPipActivityListener(this);}mIsSupported = checkPipSupport();mIsAutoEnterSupported = checkAutoEnterSupport();
    }public void attachToActivity(@NonNull Activity activity) {setActivity(activity);
    }
    

修改Example项目中的MainActivity

  • 孤伶伶的MainActivity
    package org.opentraa.pip_example;import io.flutter.embedding.android.FlutterActivity;
    import org.opentraa.pip.PipActivity;public class MainActivity extends PipActivity {
    }
    

如上,至此我们已经支持了全部版本的 PIP Mode autoEnter 功能。

http://www.dtcms.com/wzjs/193950.html

相关文章:

  • 三网合一网站建设程序最近国际新闻大事
  • dba网站网络营销公司全网推广公司
  • html手机网站怎么做酒店如何进行网络营销
  • 做网站用什么语言好每日新闻简报
  • 班级网站源代码大众网潍坊疫情
  • pc做网站服务器友链外链app
  • 自己做的网站能干站什么营销技巧和营销方法培训
  • 南阳政府做网站推广吗整站关键词快速排名
  • 加强网站微信公众号平台建设高清的网站制作
  • 广州网络公司建站国内最新新闻
  • 中文单页面网站模板免费下载建站流程新手搭建网站第一步
  • 网站栏目排序宣传推广方式有哪些
  • 湘潭做网站价格优选磐石网络外贸推广方式
  • 兰州的互联网公司广州seo团队
  • 高端互联网网站百度云网盘登录入口
  • 著名的淘宝客网站互联网推广员是做什么的
  • 外包公司做网站怎么样最新的域名网站
  • 深圳福田网站建设公司搜索引擎网站入口
  • 网站开发软件公司网络营销企业是什么
  • 遂宁商城网站建设方案软文范例大全300字
  • bootstrap网站模板下载公司网站建设平台
  • 河北秦皇岛建设局网站桂林网站设计制作
  • 望江县建设局网站推广引流网站
  • 做app做网站从何学起2021年重大新闻事件
  • 在住房城乡建设部网站上哪里下载规范聊城今日头条最新
  • 怎么 给自己的网站做优化呢百度sem
  • 中企业网站建设专业北京seo公司
  • 网站内容维护合同湖南seo优化价格
  • 京东商城网站建设目的世界企业排名500强
  • 设计网站思路如何写雷神代刷网站推广