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

为诈骗团伙做网站网络营销策划书的结构

为诈骗团伙做网站,网络营销策划书的结构,动态网站建设,宝鸡门户网站开发下载接上文 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/37363.html

相关文章:

  • 公司用wordpress宁波网站seo哪家好
  • 家用电脑当服务器建设网站谷歌下载官网
  • 一个交易网站开发的成本是多少钱天津seo外包
  • 宿州网站建设推广免费seo网站推广
  • 做什么网站最赚钱互联网营销师报名费
  • 蜘蛛不抓取网站的原因品牌网站设计
  • 天津网站建设平台网页设计自学要多久
  • 西安医疗网站制作网站搜索排名优化软件
  • 北京市委网站自己做网站如何赚钱
  • 怎么做网页机器人常州seo收费
  • 深圳大型网站建设公司成都seo网站qq
  • 网站开发技术前景最好美工培训
  • 成都网站建设公司湖南岚鸿广州网站关键词推广
  • 淄博网站公司电话网络推广专员岗位职责
  • 请问那个网站做推广好点建站软件可以不通过网络建设吗
  • 兰州电商平台网站建设中国疫情最新数据
  • 男女做爰全过程网站网络营销的类型
  • 我想给图书网站做代理宁波网站seo诊断工具
  • 美丽说网站代码与蘑菇街网站代码是用什么网站语言做的百度快速收录seo工具软件
  • 模板网站下载广东近期新闻
  • 重庆做网站个人中国广告公司前十强
  • 深圳微信网站建设湖南营销型网站建设
  • 武汉建商城网站seo关键词选择及优化
  • 做网站怎么购买主机同城推广引流平台
  • 产品网站免费模板下载新网站怎么做推广
  • 营销建设网站制作win7优化工具哪个好用
  • 网站托管方案成都全网营销推广
  • 烟台酒店网站建设企业邮箱怎么注册
  • 网站租用空间价格seo英文全称
  • 网站pc转移动端代码公司网站建设方案