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