网站开发人员篡改客户数据,h5教程入门,开个公司大概需要多少钱,产品网络营销方案聆听广播#xff0c;跟着节拍吧。 计时器 新建一个名为PhoneStateMonitor的工程#xff1b;
实现一个应用运行时长的计时器#xff0c;并在界面上刷新计数器#xff0c;要求包括#xff1a;
#xff08;1#xff09;在Layout中包含两个TextView控件#xff0c;横向分…聆听广播跟着节拍吧。 计时器 新建一个名为PhoneStateMonitor的工程
实现一个应用运行时长的计时器并在界面上刷新计数器要求包括
1在Layout中包含两个TextView控件横向分布左边的TextView固定显示文本“运行时长”右边的TextView显示计时时长单位分钟
2通过静态方式注册系统广播android.intent.action.TIME_TICK执行计时器的刷新。 注本次可以不用重名原来自带的xml跟main活动然后记得每题分模块写即可。
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationhorizontalandroid:padding16dpandroid:gravitycenter_vertical!-- 左侧 TextView 显示 运行时长 --TextViewandroid:idid/textViewLabelandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text运行时长android:textSize20spandroid:layout_marginEnd16dp/!-- 右侧 TextView 显示计时时长 --TextViewandroid:idid/textViewTimerandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text0android:textSize20spandroid:gravityend//LinearLayout
这里的Receiver内部类写在主活动里当然你也可以另外写多一个Receiver文件。
package com.example.phonestatemonitorimport android.app.Activity
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.Bundle
import android.widget.TextViewclass MainActivity : Activity() {// 定义广播接收器接收系统时间更新广播private lateinit var timeTickReceiver: TimeTickReceiveroverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)// 获取布局中的 TextView 控件val textViewTimer: TextView findViewById(R.id.textViewTimer)// 创建 TimeTickReceiver 实例并传递 textViewTimertimeTickReceiver TimeTickReceiver(textViewTimer)// 注册系统广播val intentFilter IntentFilter()
// intentFilter.addAction(android.intent.action.TIME_TICK)intentFilter.addAction(Intent.ACTION_TIME_TICK)// 使用系统时间更新广播的正确 actionregisterReceiver(timeTickReceiver, intentFilter)}override fun onDestroy() {super.onDestroy()// 注销广播接收器避免内存泄漏unregisterReceiver(timeTickReceiver)}// 广播接收器类class TimeTickReceiver(private val textViewTimer: TextView) : BroadcastReceiver() {private var totalMinutes: Int 0override fun onReceive(context: Context, intent: Intent) {// 更新计时器updateTimer()}private fun updateTimer() {totalMinutes 1val timeString String.format(%02d分钟, totalMinutes)// 更新 TextView 显示的计时textViewTimer.text timeString}}
}
?xml version1.0 encodingutf-8?
manifest xmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.example.phonestatemonitorapplicationandroid:allowBackuptrueandroid:iconmipmap/ic_launcherandroid:labelstring/app_nameandroid:roundIconmipmap/ic_launcher_roundandroid:supportsRtltrueandroid:themestyle/Theme.T7activityandroid:name.MainActivityandroid:exportedtrueintent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter/activity/application/manifest 手机WIFI状态显示 实现手机WI-FI状态显示
1WI-FI只有“打开”和“关闭”两种状态
2Layout中根据自己的想法设计合理的WI-FI状态显示方式
3注意要在AndroiManifest.xml添加wifi状态的权限
4设计一个广播接收器来监听广播android.net.wifi.WIFI_STATE_CHANGED
5创建一个私有方法wifiStateUpdate()里面包括
创建一个wifiManager
val wifiManager applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
获取WI-FI的状态
val wifiState wifiManager.wifiState
如果wifiState为WifiManager.WIFI_STATE_ENABLED则显示“打开”如果为wifiState为WifiManager.WIFI_STATE_DISABLED则显示“关闭”。
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalandroidx.appcompat.widget.Toolbarandroid:idid/toolbarandroid:layout_widthmatch_parentandroid:layout_height?attr/actionBarSizeandroid:background?attr/colorPrimaryandroid:elevation4dpandroid:themestyle/ThemeOverlay.AppCompat.ActionBar /TextViewandroid:idid/statusWifiandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textstring/status_wifi_openandroid:layout_gravitycenterandroid:layout_marginTop50dpandroid:textSize30spandroid:textColor#EF9DB9 /
/LinearLayout
在res的values文件下找到strings.xml
resourcesstring nameapp_nameT7/stringstring namestatus_wifi_openWifi已打开/stringstring namestatus_wifi_closeWifi已关闭/string
/resources
在另一个模块或项目的模块直接用默认的活动写即可。
import android.app.Activity
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.net.wifi.WifiManager
import android.os.Bundle
import android.util.Log
import android.widget.TextView
import androidx.appcompat.widget.Toolbar
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {// 定义广播接收器接收 Wi-Fi 状态更新广播private lateinit var wifiReceiver: WifiReceiver// 用于显示 Wi-Fi 状态的 TextView 控件private lateinit var wifiStatus: TextViewprivate lateinit var wifiManager: WifiManageroverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)
// val toolbar: Toolbar findViewById(R.id.toolbar)
// setSupportActionBar(toolbar)// 获取布局中的 TextView 控件wifiStatus findViewById(R.id.statusWifi)wifiManager applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager// 创建 wifiReceiver 实例wifiReceiver WifiReceiver(wifiStatus)// 注册 Wi-Fi 状态广播接收器val intentFilter IntentFilter()intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION) // Wi-Fi 状态变化的广播registerReceiver(wifiReceiver, intentFilter)}override fun onDestroy() {super.onDestroy()// 注销广播接收器避免内存泄漏unregisterReceiver(wifiReceiver)}// 广播接收器类用于监听 Wi-Fi 状态变化class WifiReceiver(private val statusWifi: TextView) : BroadcastReceiver() {private lateinit var wifiManager: WifiManageroverride fun onReceive(context: Context?, intent: Intent?) {// 获取 WifiManager 实例wifiManager context?.applicationContext?.getSystemService(Context.WIFI_SERVICE) as WifiManager// 更新 Wifi 状态wifiStateUpdate()}private fun wifiStateUpdate() {// 获取当前的 Wifi 状态val wifiState wifiManager.wifiStateval context statusWifi.context// 根据 Wifi 状态更新 UIif (wifiState WifiManager.WIFI_STATE_ENABLED) {// Wifi 已开启statusWifi.text context.getString(R.string.status_wifi_open)} else if (wifiState WifiManager.WIFI_STATE_DISABLED) {// Wifi 已关闭statusWifi.text context.getString(R.string.status_wifi_close)}statusWifi.invalidate()}}
}AndroidManifest.xml注意这里要改一下跟你的项目模块名对上别直接复制还倒打一耙怪到这来。
?xml version1.0 encodingutf-8?
manifest xmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.example.t7 !-- Wi-Fi 状态权限 --uses-permission android:nameandroid.permission.ACCESS_WIFI_STATE /applicationandroid:allowBackuptrueandroid:iconmipmap/ic_launcherandroid:labelstring/app_nameandroid:roundIconmipmap/ic_launcher_roundandroid:supportsRtltrueandroid:themestyle/Theme.T7 activityandroid:name.MainActivityandroid:exportedtrue intent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter/activity/application/manifest
打开虚拟手机的设置找到wifi项把它打开关闭也可以从上面拉下来开启类似平时用手机打开wifi的然后观察界面显示。 手机电池电量提醒 实现手机电池电量提醒
1要求能够按百分比显示电量
2监听电量变化的广播
android.intent.action.BATTERY_LOW、android.intent.action.BATTERY_OKAY、android.intent.action.BATTERY_CHANGED三条信息
3正常电量下显示“正常电量”同时计算并显示具体电量。
4当电量电量低于20%时用红色字体显示电量并且显示文本“请及时充电”
5计算电量batteryPct。
?xml version1.0 encodingutf-8?
RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:padding16dp!-- 第一个 TextView: 显示文本1 --TextViewandroid:idid/textViewText1android:layout_widthwrap_contentandroid:layout_height50spandroid:textstring/text1android:textSize30spandroid:gravitystart/!-- 第二个 TextView: 显示电池百分比 --TextViewandroid:idid/textViewBatteryandroid:layout_widthwrap_contentandroid:layout_height47spandroid:textstring/battery_percentageandroid:textSize30spandroid:layout_toEndOfid/textViewText1android:layout_marginStart4dpandroid:layout_marginTop3spandroid:gravityend /!-- 一个黑色横向 View --Viewandroid:layout_widthmatch_parentandroid:layout_height2dpandroid:layout_belowid/textViewText1android:layout_alignParentStarttrueandroid:backgroundcolor/black /!-- 第三个 TextView: 显示电池提示信息 --TextViewandroid:idid/textViewTipsandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textstring/battery_normal_tipsandroid:textSize40spandroid:gravitycenterandroid:layout_belowid/textViewText1android:layout_marginTop20dp //RelativeLayoutresourcesstring nameapp_namePct/stringstring nametext1手机电量/stringstring namebattery_percentage100%/stringstring namebattery_normal_tips正常电量/stringstring namebattery_charge_tips请及时充电/string
/resourcesimport android.app.Activity
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.Bundle
import android.os.BatteryManager
import android.widget.TextView
import android.widget.Toastclass MainActivity : Activity() {private lateinit var batteryLevel: TextViewprivate lateinit var batteryTips: TextViewprivate lateinit var batteryReceiver: BroadcastReceiveroverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)// 获取布局中的 TextView 控件batteryLevel findViewById(R.id.textViewBattery)batteryTips findViewById(R.id.textViewTips)// 创建并注册广播接收器batteryReceiver BatteryReceiver()val intentFilter IntentFilter()intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED) // 电池变化intentFilter.addAction(Intent.ACTION_BATTERY_LOW) // 电池低电量intentFilter.addAction(Intent.ACTION_BATTERY_OKAY) // 电池恢复正常registerReceiver(batteryReceiver, intentFilter)}override fun onDestroy() {super.onDestroy()// 注销广播接收器unregisterReceiver(batteryReceiver)}// 广播接收器类处理电池变化的逻辑inner class BatteryReceiver : BroadcastReceiver() {override fun onReceive(context: Context?, intent: Intent?) {intent?.let {when (it.action) {Intent.ACTION_BATTERY_CHANGED - {val batteryPct:Float? getBatteryPercentage(it)// 更新电池百分比显示batteryPct?.let { pct -updateBatteryStatus(pct)}}Intent.ACTION_BATTERY_LOW - {// 电池电量过低时显示提示信息batteryTips.text context?.getString(R.string.battery_charge_tips)batteryTips.setTextColor(context?.resources?.getColor(android.R.color.holo_red_dark) ?: 0)}Intent.ACTION_BATTERY_OKAY - {// 电池恢复正常时显示提示信息batteryTips.text context?.getString(R.string.battery_normal_tips)batteryTips.setTextColor(context?.resources?.getColor(android.R.color.black) ?: 0)}else - {}}}}// 获取电池百分比private fun getBatteryPercentage(intent: Intent): Float {val level intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)val scale intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1)return level * 100 / scale.toFloat()}// 更新电池状态private fun updateBatteryStatus(batteryPct: Float) {batteryLevel.text ${batteryPct.toInt()}% // 显示电池百分比if (batteryPct 20) {batteryTips.text 请及时充电batteryTips.setTextColor(getColor(android.R.color.holo_red_dark))} else {// 电量正常时显示“正常电量”batteryTips.text 正常电量batteryTips.setTextColor(getColor(android.R.color.black))}}}
}
?xml version1.0 encodingutf-8?
manifest xmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.example.pctapplicationandroid:allowBackuptrueandroid:iconmipmap/ic_launcherandroid:labelstring/app_nameandroid:roundIconmipmap/ic_launcher_roundandroid:supportsRtltrueandroid:themestyle/Theme.T7activityandroid:name.MainActivityandroid:exportedtrueintent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter/activity/application/manifest
怎么调节虚拟机的电量观察提示变化点击这里。 然后滑动滑条即可观察到提示变化。 实验心得 写到困了却等不到的赞。