1.时间广播
2.电量广播
3.网络监听广播
动态监听,
静态监听
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
private IntentFilter intentFilter;
private IntentFilter intentFilter2;
private IntentFilter intentFilter3;
private TimeChangeReceive timeChangeReceive;
private NetworkChangeReceiver networkChangeReceiver;
private BatteryBroadcast batteryBroadcast;
private int m;
private int n;
private ImageView iv;
Dialog dialog;
LinearLayout linearLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//问一个可以吗
intentFilter=new IntentFilter();
intentFilter2=new IntentFilter();
//intentFilter3=new IntentFilter();
intentFilter.addAction(Intent.ACTION_TIME_TICK);//每分钟播报一次
intentFilter.addAction(Intent.ACTION_TIME_CHANGED);//改变播报一次
intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);//手机电量变化播报
//intentFilter3.addAction(Intent.ACTION_BATTERY_CHANGED);//手机电量变化播报
intentFilter2.addAction("android.net.conn.CONNECTIVITY_CHANGE");
timeChangeReceive=new TimeChangeReceive();
batteryBroadcast=new BatteryBroadcast();
networkChangeReceiver = new NetworkChangeReceiver();
registerReceiver(timeChangeReceive,intentFilter);
registerReceiver(batteryBroadcast,intentFilter);
registerReceiver(networkChangeReceiver,intentFilter2);
//registerReceiver(networkChangeReceiver,intentFilter3);
linearLayout=findViewById(R.id.liner_del);
iv=findViewById(R.id.iv_eye);
final Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
if(hour>20||hour<=7){m=1;}//只有在两个阶段跨越的时候,改变屏幕亮度即可,不需要次次修改
else m=0;
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(timeChangeReceive);
unregisterReceiver(networkChangeReceiver);
unregisterReceiver(batteryBroadcast);
}
//获取屏幕当前亮度
private int getScreenBrightness(Context context){
ContentResolver contentResolver=context.getContentResolver();
int defVal=125;
return Settings.System.getInt(contentResolver,Settings.System.SCREEN_BRIGHTNESS,defVal);
}
//设置屏幕当前亮度
private void setAppScreenBrightness(int brightessValue){
Window window=getWindow();
WindowManager.LayoutParams lp=window.getAttributes();
lp.screenBrightness=brightessValue/255.0f;
window.setAttributes(lp);
}
class NetworkChangeReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.d("网络监听广播", "onReceive: ");
if("android.net.conn.CONNECTIVITY_CHANGE".equals(intent.getAction())){
ConnectivityManager connectivityManager= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo=connectivityManager.getActiveNetworkInfo();
if(networkInfo!=null&&networkInfo.isAvailable()){
Toast.makeText(MainActivity.this,"network is available",Toast.LENGTH_LONG).show();
}
else
Toast.makeText(MainActivity.this,"network is unavailable",Toast.LENGTH_LONG).show();
}
}
}
class TimeChangeReceive extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.d("时间广播", "onReceive: ");
//广播区分
if (intent.ACTION_TIME_CHANGED.equals(intent.getAction()) || intent.ACTION_TIME_TICK.equals(intent.getAction())) {
final Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
if((hour>20||hour<=7)&&m==1){
int i=getScreenBrightness(context);
setAppScreenBrightness(i/4);//设置背景亮度
m=0;
Toast.makeText(context,"晚间时刻,进入护眼模式",Toast.LENGTH_LONG).show();
}
if((hour<=20&&hour>7)&&m==0){
int i=getScreenBrightness(context);
setAppScreenBrightness(4*i);
Log.d(String.valueOf(i), "onReceive: ");
m=1;
Toast.makeText(context,"白天时刻,关闭护眼模式 come on!",Toast.LENGTH_LONG).show();
}
}
}
}
class BatteryBroadcast extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.d("电量改变广播" ,"onReceive: ");
//判断是否是电量变化的广播
if(Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())){
float level=intent.getIntExtra("level",0);//获取当前电量
float scale=intent.getIntExtra("scale",0);
float perscentage=(level/scale)*100;
if(perscentage<=20){
linearLayout=findViewById(R.id.linearLayout);
linearLayout.setVisibility(View.VISIBLE);
Toast.makeText(MainActivity.this,"电量低于20%!!!", Toast.LENGTH_LONG).show();
}else {
linearLayout=findViewById(R.id.linearLayout);
linearLayout.setVisibility(View.GONE);
Toast.makeText(MainActivity.this,"电量低于20%!!!", Toast.LENGTH_LONG).show();
}
//if(perscentage>20)
}
}
}
public void btn_cancle(View v){
linearLayout.setVisibility(View.GONE);
}
public void btn_off(View v){
final AlertDialog alertDialog=new AlertDialog.Builder(MainActivity.this).create();
alertDialog.show();
alertDialog.setContentView(R.layout.confirm_del);
Window window =alertDialog.getWindow();
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT,WindowManager.LayoutParams.WRAP_CONTENT);
window.setGravity(Gravity.BOTTOM);
window.findViewById(R.id.text_cancle).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
linearLayout.setVisibility(View.GONE);
alertDialog.dismiss();
}
});
window.findViewById(R.id.text_delete).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"数据流量已关闭,请及时充电", Toast.LENGTH_LONG).show();
linearLayout.setVisibility(View.GONE);
alertDialog.dismiss();
}
});
}
}