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

在线教育网站有什么程序做打开百度

在线教育网站有什么程序做,打开百度,大淘客做自己网站,wordpress文章点击次数插件1. 状态栏信号图标 1.1 WIFI信号显示 WIFI信号在状态栏的显示如下图所示 当WiFi状态为关闭时,状态栏不会有任何显示。当WiFi状态打开时,会如上图所示,左侧表示有可用WiFi,右侧表示当前WiFi打开但未连接。 当WiFi状态连接时&#x…

1. 状态栏信号图标


1.1 WIFI信号显示


WIFI信号在状态栏的显示如下图所示

当WiFi状态为关闭时,状态栏不会有任何显示。当WiFi状态打开时,会如上图所示,左侧表示有可用WiFi,右侧表示当前WiFi打开但未连接。

当WiFi状态连接时,会如上图所示,显示信号连接强度和数据连接状态。

1.2 图标更新流程框架


如图所示,WiFi图标的显示流程主要是通过监听系统的WiFi状态,然后通知UI去实时的刷新图标资源。NetworkControllerImpl.java 继承 BroadcastReceiver 监听系统WiFi状态的变化。

2. WIFI图标更新流介绍

2.1 重要类

frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\connectivity\NetworkControllerImpl.java
定义相关函数,继承BroadcastReceiver监听系统广播,动态注册广播接收器。是状态栏WiFi图标更新的核心类。
frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\connectivity\WifiIcons.java
定义了 Wifi 信号更新所需的图标资源。
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java

frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\connectivity\WifiSignalController.java

2.2 WIFI图标更新流程


(1)WifiNetworkController实例化,在NetworkControllerImpl.java进行实例化

frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\connectivity\NetworkControllerImpl.java

    @VisibleForTestingNetworkControllerImpl(Context context, ConnectivityManager connectivityManager,TelephonyManager telephonyManager,TelephonyListenerManager telephonyListenerManager,WifiManager wifiManager,SubscriptionManager subManager,Config config,Looper bgLooper,Executor bgExecutor,CallbackHandler callbackHandler,AccessPointControllerImpl accessPointController,StatusBarPipelineFlags statusBarPipelineFlags,DataUsageController dataUsageController,SubscriptionDefaults defaultsHandler,DeviceProvisionedController deviceProvisionedController,BroadcastDispatcher broadcastDispatcher,UserTracker userTracker,DemoModeController demoModeController,CarrierConfigTracker carrierConfigTracker,WifiStatusTrackerFactory trackerFactory,MobileSignalControllerFactory mobileFactory,@Main Handler handler,DumpManager dumpManager,LogBuffer logBuffer) {mContext = context;mTelephonyListenerManager = telephonyListenerManager;mConfig = config;mMainHandler = handler;mReceiverHandler = new Handler(bgLooper);mBgLooper = bgLooper;mBgExecutor = bgExecutor;mCallbackHandler = callbackHandler;mStatusBarPipelineFlags = statusBarPipelineFlags;mDataSaverController = new DataSaverControllerImpl(context);mBroadcastDispatcher = broadcastDispatcher;mMobileFactory = mobileFactory;mSubscriptionManager = subManager;mSubDefaults = defaultsHandler;mConnectivityManager = connectivityManager;mHasMobileDataFeature = telephonyManager.isDataCapable();mDemoModeController = demoModeController;mCarrierConfigTracker = carrierConfigTracker;mDumpManager = dumpManager;mLogBuffer = logBuffer;// telephonymPhone = telephonyManager;// wifimWifiManager = wifiManager;mLocale = mContext.getResources().getConfiguration().locale;mAccessPoints = accessPointController;mDataUsageController = dataUsageController;mDataUsageController.setNetworkController(this);// TODO: Find a way to move this into DataUsageController.mDataUsageController.setCallback(new DataUsageController.Callback() {@Overridepublic void onMobileDataEnabled(boolean enabled) {mCallbackHandler.setMobileDataEnabled(enabled);notifyControllersMobileDataChanged();}});mWifiSignalController = new WifiSignalController(mContext, mHasMobileDataFeature,mCallbackHandler, this, mWifiManager, trackerFactory,mReceiverHandler);

注册广播

@VisibleForTestingvoid registerListeners() {for (int i = 0; i < mMobileSignalControllers.size(); i++) {MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i);mobileSignalController.registerListener();}if (mSubscriptionListener == null) {mSubscriptionListener = new SubListener(mBgLooper);}mSubscriptionManager.addOnSubscriptionsChangedListener(mSubscriptionListener);mTelephonyListenerManager.addActiveDataSubscriptionIdListener(mPhoneStateListener);// broadcastsIntentFilter filter = new IntentFilter();filter.addAction(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);filter.addAction(Intent.ACTION_SERVICE_STATE);filter.addAction(Intent.ACTION_SIM_STATE_CHANGED);filter.addAction(Settings.Panel.ACTION_INTERNET_CONNECTIVITY);filter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);filter.addAction(TelephonyManager.ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED);filter.addAction(TelephonyManager.ACTION_SERVICE_PROVIDERS_UPDATED);filter.addAction(TelephonyManager.ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED);filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);mBroadcastDispatcher.registerReceiverWithHandler(this, filter, mReceiverHandler);mListening = true;// Initial setup of connectivity. Handled as if we had received a sticky broadcast of// ConnectivityManager.CONNECTIVITY_ACTION.mReceiverHandler.post(this::updateConnectivity);// Initial setup of WifiSignalController. Handled as if we had received a sticky broadcast// of WifiManager.WIFI_STATE_CHANGED_ACTION or WifiManager.NETWORK_STATE_CHANGED_ACTIONmReceiverHandler.post(mWifiSignalController::fetchInitialState);// Initial setup of mLastServiceState. Only run if there is no service state yet.// Each MobileSignalController will also get their correspondingmReceiverHandler.post(() -> {if (mLastServiceState == null) {mLastServiceState = mPhone.getServiceState();if (mMobileSignalControllers.size() == 0) {recalculateEmergency();}}});updateMobileControllers();// Initial setup of emergency information. Handled as if we had received a sticky broadcast// of TelephonyManager.ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED.mReceiverHandler.post(this::recalculateEmergency);}

当收到广播时,更新图标

@Overridepublic void onReceive(Context context, Intent intent) {if (true) {Log.d(TAG, "onReceive: intent=" + intent);}final String action = intent.getAction();mLogBuffer.log(TAG,LogLevel.INFO,logMessage -> {logMessage.setStr1(action);return Unit.INSTANCE;},logMessage -> String.format(Locale.US,"Received broadcast with action \"%s\"",logMessage.getStr1()));switch (action) {case ConnectivityManager.CONNECTIVITY_ACTION:updateConnectivity();break;case Intent.ACTION_AIRPLANE_MODE_CHANGED:refreshLocale();updateAirplaneMode(false);break;case TelephonyManager.ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED:// We are using different subs now, we might be able to make calls.recalculateEmergency();break;case TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED:// Notify every MobileSignalController so they can know whether they are the// data sim or not.for (int i = 0; i < mMobileSignalControllers.size(); i++) {MobileSignalController controller = mMobileSignalControllers.valueAt(i);controller.handleBroadcast(intent);}mConfig = Config.readConfig(mContext);mReceiverHandler.post(this::handleConfigurationChanged);break;case TelephonyManager.ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED: {// Notify the relevant MobileSignalController of the changeint subId = intent.getIntExtra(TelephonyManager.EXTRA_SUBSCRIPTION_ID,INVALID_SUBSCRIPTION_ID);if (SubscriptionManager.isValidSubscriptionId(subId)) {if (mMobileSignalControllers.indexOfKey(subId) >= 0) {mMobileSignalControllers.get(subId).handleBroadcast(intent);}}}break;case Intent.ACTION_SIM_STATE_CHANGED:// Avoid rebroadcast because SysUI is direct boot aware.if (intent.getBooleanExtra(Intent.EXTRA_REBROADCAST_ON_UNLOCK, false)) {break;}// Might have different subscriptions now.updateMobileControllers();break;case Intent.ACTION_SERVICE_STATE:mLastServiceState = ServiceState.newFromBundle(intent.getExtras());if (mMobileSignalControllers.size() == 0) {// If none of the subscriptions are active, we might need to recalculate// emergency state.recalculateEmergency();}break;case CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED:mConfig = Config.readConfig(mContext);mReceiverHandler.post(this::handleConfigurationChanged);break;case Settings.Panel.ACTION_INTERNET_CONNECTIVITY:mMainHandler.post(() -> mInternetDialogFactory.create(true,mAccessPoints.canConfigMobileData(), mAccessPoints.canConfigWifi(),null /* view */));break;default:int subId = intent.getIntExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX,INVALID_SUBSCRIPTION_ID);if (SubscriptionManager.isValidSubscriptionId(subId)) {if (mMobileSignalControllers.indexOfKey(subId) >= 0) {mMobileSignalControllers.get(subId).handleBroadcast(intent);} else {// Can't find this subscription...  We must be out of date.updateMobileControllers();}} else {// No sub id, must be for the wifi.mWifiSignalController.handleBroadcast(intent);}break;}}

http://www.dinnco.com/news/81645.html

相关文章:

  • 成都建材网站建设西安seo网站推广优化
  • 澧县网站建设百度小说风云榜2022
  • 网站原型图设计seo推荐
  • 无锡网站制作怎么样大白兔网络营销策划书
  • 东莞企业网站制作关键词seo排名怎么样
  • 自己做的网站怎么在百度上搜到郑州网站网页设计
  • 学做淘宝网站是骗子吗网上怎么找人去推广广告
  • 做淘宝联盟网站要多少钱福建省人民政府
  • 江西网站开发多少钱网站域名在哪买
  • 做外贸生意用哪个网站最好资源网站优化排名软件公司
  • java网站开发框架搭建百度打广告多少钱一个月
  • 北京专业网站开发福州seo优化
  • 网站建设哈尔滨网站设计3新手怎么推广自己的店铺
  • 做婚纱网站的步骤市场营销七大策略
  • 国都建设集团网站微博营销策略
  • 做服装搭配图的网站广东东莞大益队
  • 如何让百度收录中文域名网站百度关键词搜索指数
  • iis7.5发布网站上海seo顾问推推蛙
  • 关于网站建设新闻电商sem是什么意思
  • 东乡网站建设网站推广的方法和途径
  • 滨州做网站建设的公司汕头seo网站推广
  • 毕业设计代做淘宝好还是网站好网络营销心得体会800字
  • 在小网站上做点击广告哔哩哔哩b站在线看免费
  • 给网站栏目页做反链好吗windows优化大师收费
  • 天津网站制作套餐免费推广引流平台有哪些
  • 深圳 网站建设培训班怎么做推广和宣传
  • 公司内部网站建设关键词提取工具app
  • 公司网站制作软文推广文案
  • 广州网站建设推荐免费推广工具
  • 佛山行业网站建设下载百度软件