安卓四大组件之二——广播接收器

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();
            }
        });
    }

}

发布了46 篇原创文章 · 获赞 12 · 访问量 1591

猜你喜欢

转载自blog.csdn.net/weixin_43605701/article/details/103093814
今日推荐