import com.enqualcomm.support.utils.TimeUtil;
import com.enqualcomm.support.utils.Util;
import com.enqualcomm.support.utils.VibrateUtil;
+import com.ic.view.battery.ChargeTipsView;
import java.util.ArrayList;
import java.util.Calendar;
private void handleSilent() {
this.mInSilent = this.isSilentTime();
+ ChargeTipsView.getInstance().updateCallBtnState();
}
public boolean isIdle(Context context) {
import com.enqualcomm.support.service.Deliver;
import com.ic.protocols.protocolAPIHelper;
import com.ic.protocols.protocol_s123;
+import com.ic.view.battery.ChargeTipsView;
import static android.os.BatteryManager.BATTERY_STATUS_CHARGING;
import static android.os.BatteryManager.BATTERY_STATUS_DISCHARGING;
mRuntime.setHaveBatteryChange(false);
mRuntime.setBatteryLow(false);
} else if (batLevel < 25 && batLevel > 15) {
+ ChargeTipsView.getInstance().dismiss();
mRuntime.setBattery(String.format("%03d", batLevel));
mRuntime.setBattery(batLevel);
mRuntime.setHaveBatteryChange(true);
mRuntime.setBatteryLow(false);
} else if (batLevel <= 15 && batLevel > 10) {
+ ChargeTipsView.getInstance().showMsgDialog();
+ ICLogger.d("on lower power please get charge...");
if (Config.LOG_TOFILE) ICLogger.logToFile("Battery", "BatteryLow less than 15%!");
checkAndSendBatteryEvent(param1Context, mRuntime);
mRuntime.setBattery(String.format("%03d", batLevel));
mRuntime.setHaveBatteryChange(true);
mRuntime.setBatteryLow(true);
} else {
+ ChargeTipsView.getInstance().dismiss();
+ //这里则会显示可能会关机
+ ICLogger.d("on lower then 5 percent..." + batLevel);
if (Config.LOG_TOFILE) ICLogger.logToFile("Battery", "BatteryLow less than 5% !");
checkAndSendBatteryEvent(param1Context, mRuntime);
mRuntime.setBattery(String.format("%03d", batLevel));
package com.ic.view.battery;
import android.content.Context;
+import android.content.Intent;
+import android.graphics.PixelFormat;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
import com.enqualcomm.support.ICApplication;
import com.enqualcomm.support.R;
+import com.enqualcomm.support.service.SilentManager;
import com.enqualcomm.support.utils.ICLogger;
/**
* 低点请充电提示窗口
+ * 弹窗的时机:电量低于15%
+ * 消失的时机为:电量高于15%,或者低于百分之5
*/
public class ChargeTipsView {
private WindowManager windowManager;
private View view;
+ private View btnView;
private ChargeTipsView() {
//获取到数据库里的数据,显示快捷回复列表
//设置属性
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
- //这个是针对S123的屏幕,如果要适配其他,可以动态获取屏幕宽度,高度,再以百分比的形式计算即可。
layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT;
layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
+ layoutParams.format = PixelFormat.TRANSPARENT;
layoutParams.packageName = context.getPackageName();
layoutParams.gravity = Gravity.CENTER;
//加载布局
- view = View.inflate(context, R.layout.msg_dialog_layout, null);
+ view = View.inflate(context, R.layout.battery_charge_tips_dialog_layout, null);
//设置适配器
initView(view);
windowManager.addView(view, layoutParams);
public void dismiss() {
- windowManager.removeView(view);
+ this.isShow = false;
+ if (windowManager != null) {
+ windowManager.removeView(view);
+ }
sInstance = null;
windowManager = null;
}
+ public void updateCallBtnState() {
+ if (btnView == null) {
+ return;
+ }
+ //还要判断是否显示此内容
+ boolean idle = SilentManager.getInstance().isIdle(view.getContext());
+ if (!idle) {
+ btnView.setEnabled(false);
+ } else {
+ btnView.setEnabled(true);
+ }
+ }
private void initView(final View view) {
-
+ btnView = view.findViewById(R.id.show_dial);
+ btnView.setOnClickListener(v -> {
+ //打开拨号界面
+ Context context = v.getContext();
+ Intent targetIntent = context.getPackageManager().getLaunchIntentForPackage("com.ic.dial");
+ if (targetIntent != null) {
+ targetIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ context.startActivity(targetIntent);
+ }
+ });
+ updateCallBtnState();
}
}
}
public void dismiss() {
+ this.isShow = false;
contentResolver.unregisterContentObserver(observer);
windowManager.removeView(view);
executorService.shutdown();
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_urgent_call_bg_press" android:state_pressed="true" />
+ <item android:drawable="@drawable/shape_urgent_call_bg_disable" android:state_enabled="false" />
<item android:drawable="@drawable/shape_urgent_call_bg_normal" />
</selector>
\ No newline at end of file
android:shape="rectangle">
<solid android:color="#242424" />
- <corners
- android:bottomLeftRadius="10dp"
- android:bottomRightRadius="10dp" />
+ <corners android:radius="10dp" />
</shape>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle">
+
+ <corners android:radius="4dp" />
+ <solid android:color="#727476" />
+
+</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@drawable/shape_black_dialog_bg"
- android:baselineAligned="false"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- android:padding="20dp">
+ android:background="#dd000000">
-
- <TextView
+ <LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="@string/tips_charge_text"
- android:textColor="@color/white"
- android:textSize="20sp" />
+ android:layout_gravity="center"
+ android:background="@drawable/shape_black_dialog_bg"
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ android:padding="20dp">
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/tips_charge_text"
+ android:textColor="@color/white"
+ android:textSize="28sp" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="20dp"
+ android:background="@drawable/selector_urgent_call_bg"
+ android:paddingLeft="14dp"
+ android:id="@+id/show_dial"
+ android:paddingTop="4dp"
+ android:paddingRight="14dp"
+ android:paddingBottom="4dp"
+ android:text="@string/urgent_call_text"
+ android:textColor="@color/white"
+ android:textSize="24sp" />
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="10dp"
- android:background="@drawable/selector_urgent_call_bg"
- android:paddingLeft="14dp"
- android:paddingTop="4dp"
- android:paddingRight="14dp"
- android:paddingBottom="4dp"
- android:text="@string/urgent_call_text"
- android:textColor="@color/white"
- android:textSize="16sp" />
+ </LinearLayout>
-</LinearLayout>
\ No newline at end of file
+</FrameLayout>
\ No newline at end of file