位置: 编程技术 - 正文

Android 4.1.2为通知栏添加wifi开关(安卓hid通信)

编辑:rootadmin
摘自: 4.1.2系统中,默认的通知栏上有个WIFI的选项,点击该选项系统会弹出settings应用的wifi设置页面,而后我们进行wifi的连接,并且可以正常上网。理论上在之后的使用中我们可以一直打开着wifi,而不用再次进入wifi设置页面,但偶尔还是需要关闭wifi,比如为了省电。此时当我们要关闭的时候,还是需要进入wifi设置页面。所以为了方便期间,可以通过修改SystemUI的通知栏,zaiwifi一栏添加一个wifi的开关,这样就可以很方便的打开和关闭wifi了。为实现此功能,我们需要修改两个地方,首先需要在frameworks/base/packages/SystemUI/res/layout/system_bar_settings_view.xml中添加wifi栏上的开关按钮:<!-- Network --> <LinearLayout android:id="@&#;id/network" style="@style/StatusBarPanelSettingsRow" > <ImageView android:id="@&#;id/network_icon" style="@style/StatusBarPanelSettingsIcon" android:src="@drawable/ic_sysbar_wifi_on" /> <TextView android:id="@&#;id/network_label" style="@style/StatusBarPanelSettingsContents" android:text="@string/status_bar_settings_wifi_butt /> <switch< span="" style="word-wrap: break-word;"> android:id="@&#;id/network_checkbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginRight="5dp通过添加名为network_checkbox的开关按钮,就可以在wifi设置栏上显示一个开关了。接下来需要添加对此开关的操作代码,我们需要修改frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/tablet/SettingsView.javaimport android.content.BroadcastReceiver;import android.net.wifi.WifiManager;import android.content.IntentFilter;public class SettingsView extends LinearLayout implements View.OnClickListener { static final String TAG = "SettingsView"; AirplaneModeController mAirplane; AutoRotateController mRotate; BrightnessController mBrightness; DoNotDisturbController mDoNotDisturb; View mRotationLockContainer; View mRotationLockSeparator; private CompoundButton mNetworkCheckbox; private BroadcastReceiver WifiStateReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) { WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); int wifiState = wifiManager.getWifiState(); if (wifiState == wifiManager.WIFI_STATE_ENABLED) mNetworkCheckbox.setChecked(true); else if (wifiState == wifiManager.WIFI_STATE_DISABLED) { mNetworkCheckbox.setChecked(false); } } } }; private CompoundButton.OnCheckedChangeListener NetworkCheckboxHandler = new CompoundButton.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton view, boolean checked) { WifiManager wifiManager = (WifiManager)getContext().getSystemService(Context.WIFI_SERVICE); int wifiState = wifiManager.getWifiState(); if (checked) { if (wifiState == wifiManager.WIFI_STATE_DISABLED) { Slog.d(TAG, "WIFI enablen"); wifiManager.setWifiEnabled(true); } } else { if (wifiState == wifiManager.WIFI_STATE_ENABLED) { Slog.d(TAG, "WIFI disablen"); wifiManager.setWifiEnabled(false); } } } }; public SettingsView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public SettingsView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onFinishInflate() { super.onFinishInflate(); final Context context = getContext(); mAirplane = new AirplaneModeController(context, (CompoundButton)findViewById(R.id.airplane_checkbox)); findViewById(R.id.network).setOnClickListener(this); mNetworkCheckbox = (CompoundButton)findViewById(R.id.network_checkbox); mNetworkCheckbox.setOnCheckedChangeListener(NetworkCheckboxHandler); WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); IntentFilter wifiIntentFilter = new IntentFilter(); wifiIntentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); context.registerReceiver(WifiStateReceiver, wifiIntentFilter); mRotationLockContainer = findViewById(R.id.rotate); mRotationLockSeparator = findViewById(R.id.rotate_separator); mRotate = new AutoRotateController(context, (CompoundButton)findViewById(R.id.rotate_checkbox), new AutoRotateController.RotationLockCallbacks() { @Override public void setRotationLockControlVisibility(boolean show) { mRotationLockContainer.setVisibility(show ? View.VISIBLE : View.GONE); mRotationLockSeparator.setVisibility(show ? View.VISIBLE : View.GONE); } }); mBrightness = new BrightnessController(context, (ToggleSlider)findViewById(R.id.brightness)); mDoNotDisturb = new DoNotDisturbController(context, (CompoundButton)findViewById(R.id.do_not_disturb_checkbox)); findViewById(R.id.settings).setOnClickListener(this); }这里说明一下,主要改动是在onFinishInflate函数中获取到开关控件network_checkbox,而后为其添加setOnCheckedChangeListener以处理用户的点击事件,在点击回调里,通过wifiManager.setWifiEnabled函数打开和关闭wifi。而注册一个WifiStateReceiver主要是用来同步wifi的开关状态的,因为如果用户在Settings里面打开了wifi,那相应的状态栏中的wifi开关状态也应该跟着同步变化。修改后效果如下:

推荐整理分享Android 4.1.2为通知栏添加wifi开关(安卓hid通信),希望有所帮助,仅作参考,欢迎阅读内容。

Android 4.1.2为通知栏添加wifi开关(安卓hid通信)

文章相关热门搜索词:安卓通用,安卓通道,android 通信,android系统提供了什么通信,android 通信,android 通信,android 通信,android通信协议,内容如对您有帮助,希望把文章链接给更多的朋友!

Android 4.4 eng版本 红框问题 在android4.4.2中编译的eng版本经常出现红框的问题。通过排查因为在frameworks/base/core/java/android/os/StrictMode.java文件中打开了设置选项具体修改如下:---a/frame

Activity与Fragment数据传递之Fragment从Activity获取数据 整理Fragment与Activity之间的数据交换,大体上包括三种:1、Fragment从Activity获取数据2、Activity从Fragment获取数据3、Fragment之间获取数据通常,如果Activity向

使用android.graphics.Path类自绘制PopupWindow背景 PopupWindow简介PopupWindow是悬浮在当前activity上的一个容器,用它可以展示任意的内容。PopupWindow跟位置有关的API有下面几个:showAsDropDown(Viewanchor,intxoff,intyo

标签: 安卓hid通信

本文链接地址:https://www.jiuchutong.com/biancheng/379577.html 转载请保留说明!

上一篇:Android ListViewitem滑动出现删除按钮

下一篇:Android 4.4 eng版本 红框问题(android4.4iso)

  • 金税四期什么时候全国运行
  • 现代服务税目包含哪些
  • 一般纳税人科技公司发票是几个点
  • 少做收入第二年怎么算
  • 企业所得税包含哪些税种
  • 进项税额加计抵扣账务处理
  • 新办商贸企业一般纳税人合同金额
  • 核定和查账区别
  • 企业存款利息计入什么科目
  • 代扣代缴个人所得税
  • 出口抵减内销产品
  • 应付账款扣款怎么做账
  • 企业利润怎么拿出来
  • 专票上的账号和收款账号要一致吗
  • 每月交的社保什么时候到账
  • 无形资产租赁税率多少
  • 水土保持补偿费收费标准
  • 企业三废处理方案
  • 直接转让土地使用权 土地增值税申报表
  • 购买固定资产如何记账
  • 研发成功的产品卖出去怎么做账
  • 建筑测量水准仪怎么读数
  • 公司给员工发放的福利都要扣个税吗
  • SymSPort.exe - SymSPort是什么进程 有何作用
  • 公允价值变动损益怎么算出来的
  • 总资产算不算负债
  • 小规模减免的增值税怎么记账
  • 母公司给子公司拨款要交税吗
  • 收益相关的政府补助分录
  • 购买电子承兑差额怎么算
  • 对公账户转私人账户手续费多少
  • 公积金补缴需要去柜台吗
  • 零售企业进销存怎么结转成本
  • php关键字的意思
  • 结算成本处理怎么取消
  • web前端综合案例开发离线作业1
  • vue使用jquery
  • 企业收取租金的未开具发票的怎么计算税款
  • 有形动产租赁个税是经营所得吗
  • 没有开发票的收入
  • 税控盘减免税款结转会计分录
  • 招待费超出部分的分录
  • 一般纳税人购销合同印花税减免政策
  • 施工企业增值税账务处理
  • 资产持有过程中缴纳的税收有哪些
  • 农产品进项税额抵扣范围
  • 承典人是什么意思
  • 银行电子承兑到期了怎么兑现操作
  • 先付款后签协议是否违法
  • 做账的好处
  • 让渡资产使用权收入属于收入吗
  • 消耗品清单
  • 销售返利如何做会计分录
  • 个人原因指什么
  • 营业外支出贷方余额
  • 如何解绑企业开票员身份
  • 中国电子口岸企业法人卡
  • 注册资本和实收资本相等吗
  • 筹建期间开办费跨年
  • 支付银行手续费等直接收费金融服务
  • 原材料会计科目
  • 资产损失扣除
  • sql server使用sql语句
  • mysql四个事务的四个特性
  • 出现错误,请联系客服
  • 微软宣布今年不会为全职员工加薪j
  • win10系统开机密码设置方法
  • windows10虚拟桌面
  • cocos2dx 3.1 cpp版本转lua版本 mac
  • 编辑器ui
  • Linux 下mysql通过存储过程实现批量生成记录
  • 自动删除文件脚本bat
  • node语句
  • python3获取本机ip
  • 京东发票税号是几位数
  • 股权转让怎么计算个人所得税
  • 浙江国税咨询电话12306
  • 申报参保时间怎么填
  • app平台怎么投诉商家
  • 江西税务客服电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设