From 5a052e4b222f2da86be38b1b820e9249d3ce64ab Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sat, 22 Mar 2025 15:54:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=94=B5=E6=B1=A0=E6=8A=A5?= =?UTF-8?q?=E5=91=8A=E7=AA=97=E5=8F=A3=E9=9B=8F=E5=BD=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- powerbell/build.properties | 4 +- powerbell/src/main/AndroidManifest.xml | 4 +- .../studio/powerbell/MainActivity.java | 10 ++- .../activities/BatteryReporterActivity.java | 51 ++++++++++++++++ .../powerbell/adapters/BatteryAdapter.java | 61 +++++++++++++++++++ .../studio/powerbell/beans/BatteryData.java | 26 ++++++++ .../ControlCenterServiceReceiver.java | 10 +++ .../src/main/res/drawable/divider_line.xml | 7 +++ .../res/layout/activity_battery_reporter.xml | 24 ++++++++ .../main/res/layout/item_battery_report.xml | 34 +++++++++++ powerbell/src/main/res/menu/toolbar_main.xml | 3 + powerbell/src/main/res/values/strings.xml | 1 + 12 files changed, 229 insertions(+), 6 deletions(-) create mode 100644 powerbell/src/main/java/cc/winboll/studio/powerbell/activities/BatteryReporterActivity.java create mode 100644 powerbell/src/main/java/cc/winboll/studio/powerbell/adapters/BatteryAdapter.java create mode 100644 powerbell/src/main/java/cc/winboll/studio/powerbell/beans/BatteryData.java create mode 100644 powerbell/src/main/res/drawable/divider_line.xml create mode 100644 powerbell/src/main/res/layout/activity_battery_reporter.xml create mode 100644 powerbell/src/main/res/layout/item_battery_report.xml diff --git a/powerbell/build.properties b/powerbell/build.properties index cb30cf7..40f11e7 100644 --- a/powerbell/build.properties +++ b/powerbell/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Fri Mar 21 21:51:15 GMT 2025 +#Sat Mar 22 07:52:04 GMT 2025 stageCount=6 libraryProject= baseVersion=4.0 publishVersion=4.0.5 -buildCount=13 +buildCount=14 baseBetaVersion=4.0.6 diff --git a/powerbell/src/main/AndroidManifest.xml b/powerbell/src/main/AndroidManifest.xml index 6c9175e..4391ee7 100644 --- a/powerbell/src/main/AndroidManifest.xml +++ b/powerbell/src/main/AndroidManifest.xml @@ -129,6 +129,8 @@ + + - + \ No newline at end of file diff --git a/powerbell/src/main/java/cc/winboll/studio/powerbell/MainActivity.java b/powerbell/src/main/java/cc/winboll/studio/powerbell/MainActivity.java index e8c75fd..874e4fc 100644 --- a/powerbell/src/main/java/cc/winboll/studio/powerbell/MainActivity.java +++ b/powerbell/src/main/java/cc/winboll/studio/powerbell/MainActivity.java @@ -15,9 +15,9 @@ import cc.winboll.studio.libaes.views.AToolbar; import cc.winboll.studio.powerbell.MainActivity; import cc.winboll.studio.powerbell.activities.AboutActivity; import cc.winboll.studio.powerbell.activities.BackgroundPictureActivity; +import cc.winboll.studio.powerbell.activities.BatteryReporterActivity; import cc.winboll.studio.powerbell.activities.ClearRecordActivity; import cc.winboll.studio.powerbell.fragments.MainViewFragment; -import cc.winboll.studio.powerbell.utils.NotificationHelper; import cc.winboll.studio.shared.log.LogUtils; import cc.winboll.studio.shared.log.LogView; @@ -66,8 +66,8 @@ public class MainActivity extends Activity { // NotificationHelper notificationUtils = new NotificationHelper(this); // notificationUtils.createNotificationChannels(); - - + + } void showFragment(Fragment fragment) { @@ -145,6 +145,10 @@ public class MainActivity extends Activity { Intent intent = new Intent(); intent.setClass(this, AboutActivity.class); startActivity(intent); + } else if (menuItemId == R.id.action_battery_reporter) { + Intent intent = new Intent(); + intent.setClass(this, BatteryReporterActivity.class); + startActivity(intent); } else if (menuItemId == R.id.action_clearrecord) { Intent intent = new Intent(); intent.setClass(this, ClearRecordActivity.class); diff --git a/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/BatteryReporterActivity.java b/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/BatteryReporterActivity.java new file mode 100644 index 0000000..288a296 --- /dev/null +++ b/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/BatteryReporterActivity.java @@ -0,0 +1,51 @@ +package cc.winboll.studio.powerbell.activities; + +/** + * @Author ZhanGSKen@AliYun.Com + * @Date 2025/03/22 14:20:15 + */ +import android.app.Activity; +import android.os.Bundle; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import cc.winboll.studio.powerbell.R; +import cc.winboll.studio.powerbell.adapters.BatteryAdapter; +import cc.winboll.studio.powerbell.beans.BatteryData; +import java.util.Arrays; +import java.util.List; + +public class BatteryReporterActivity extends Activity { + public static final String TAG = "BatteryReporterActivity"; + + private RecyclerView rvBatteryReport; + private BatteryAdapter adapter; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_battery_reporter); + + rvBatteryReport = findViewById(R.id.rvBatteryReport); + setupRecyclerView(); + loadSampleData(); + } + + private void setupRecyclerView() { + adapter = new BatteryAdapter(); + rvBatteryReport.setLayoutManager(new LinearLayoutManager(this)); + rvBatteryReport.setAdapter(adapter); + rvBatteryReport.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + } + + private void loadSampleData() { + List dataList = Arrays.asList( + new BatteryData(95, "01:23:45", "00:05:12"), + new BatteryData(80, "02:15:30", "00:10:00"), + new BatteryData(65, "03:45:15", "00:15:30"), + new BatteryData(50, "05:00:00", "00:20:45") + ); + adapter.updateData(dataList); + } +} + diff --git a/powerbell/src/main/java/cc/winboll/studio/powerbell/adapters/BatteryAdapter.java b/powerbell/src/main/java/cc/winboll/studio/powerbell/adapters/BatteryAdapter.java new file mode 100644 index 0000000..93e69bb --- /dev/null +++ b/powerbell/src/main/java/cc/winboll/studio/powerbell/adapters/BatteryAdapter.java @@ -0,0 +1,61 @@ +package cc.winboll.studio.powerbell.adapters; + +/** + * @Author ZhanGSKen@AliYun.Com + * @Date 2025/03/22 14:38:55 + * @Describe 电池报告数据适配器 + */ +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; +import androidx.recyclerview.widget.RecyclerView; +import cc.winboll.studio.powerbell.R; +import cc.winboll.studio.powerbell.adapters.BatteryAdapter; +import cc.winboll.studio.powerbell.beans.BatteryData; +import java.util.ArrayList; +import java.util.List; + +public class BatteryAdapter extends RecyclerView.Adapter { + public static final String TAG = "BatteryAdapter"; + private List dataList = new ArrayList<>(); + + public void updateData(List newData) { + dataList = newData; + notifyDataSetChanged(); + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.item_battery_report, parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + BatteryData item = dataList.get(position); + holder.tvLevel.setText(String.format("%d%%", item.getCurrentLevel())); + holder.tvDischargeTime.setText("使用时间: " + item.getDischargeTime()); + holder.tvChargeTime.setText("充电时间: " + item.getChargeTime()); + } + + @Override + public int getItemCount() { + return dataList.size(); + } + + static class ViewHolder extends RecyclerView.ViewHolder { + TextView tvLevel; + TextView tvDischargeTime; + TextView tvChargeTime; + + ViewHolder(View itemView) { + super(itemView); + tvLevel = itemView.findViewById(R.id.tvLevel); + tvDischargeTime = itemView.findViewById(R.id.tvDischargeTime); + tvChargeTime = itemView.findViewById(R.id.tvChargeTime); + } + } +} + diff --git a/powerbell/src/main/java/cc/winboll/studio/powerbell/beans/BatteryData.java b/powerbell/src/main/java/cc/winboll/studio/powerbell/beans/BatteryData.java new file mode 100644 index 0000000..3d89470 --- /dev/null +++ b/powerbell/src/main/java/cc/winboll/studio/powerbell/beans/BatteryData.java @@ -0,0 +1,26 @@ +package cc.winboll.studio.powerbell.beans; + +/** + * @Author ZhanGSKen@AliYun.Com + * @Date 2025/03/22 14:30:51 + * @Describe 电池报告数据模型 + */ +public class BatteryData { + + public static final String TAG = "BatteryData"; + + private int currentLevel; + private String dischargeTime; + private String chargeTime; + + public BatteryData(int currentLevel, String dischargeTime, String chargeTime) { + this.currentLevel = currentLevel; + this.dischargeTime = dischargeTime; + this.chargeTime = chargeTime; + } + + public int getCurrentLevel() { return currentLevel; } + public String getDischargeTime() { return dischargeTime; } + public String getChargeTime() { return chargeTime; } +} + diff --git a/powerbell/src/main/java/cc/winboll/studio/powerbell/receivers/ControlCenterServiceReceiver.java b/powerbell/src/main/java/cc/winboll/studio/powerbell/receivers/ControlCenterServiceReceiver.java index 007fd9e..e18f5e4 100644 --- a/powerbell/src/main/java/cc/winboll/studio/powerbell/receivers/ControlCenterServiceReceiver.java +++ b/powerbell/src/main/java/cc/winboll/studio/powerbell/receivers/ControlCenterServiceReceiver.java @@ -5,11 +5,14 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import cc.winboll.studio.powerbell.beans.AppConfigBean; +import cc.winboll.studio.powerbell.beans.BatteryData; import cc.winboll.studio.powerbell.services.ControlCenterService; import cc.winboll.studio.powerbell.utils.AppConfigUtils; import cc.winboll.studio.powerbell.utils.BatteryUtils; import cc.winboll.studio.shared.log.LogUtils; import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; public class ControlCenterServiceReceiver extends BroadcastReceiver { public static final String TAG = ControlCenterServiceReceiver.class.getSimpleName(); @@ -52,6 +55,13 @@ public class ControlCenterServiceReceiver extends BroadcastReceiver { appConfigBean.setCurrentValue(nTheQuantityOfElectricity); appConfigBean.setIsCharging(isCharging); mwrService.get().startRemindThread(appConfigBean); + + // 保存电池报告 + // 示例数据更新逻辑 +// List newData = new ArrayList<>(adapter.getDataList()); +// newData.add(0, new BatteryData(percentage, "00:00:00", "00:00:00")); +// adapter.updateData(newData); + // 保存好新的电池状态标志 _mIsCharging = isCharging; _mnTheQuantityOfElectricityOld = nTheQuantityOfElectricity; diff --git a/powerbell/src/main/res/drawable/divider_line.xml b/powerbell/src/main/res/drawable/divider_line.xml new file mode 100644 index 0000000..f9365df --- /dev/null +++ b/powerbell/src/main/res/drawable/divider_line.xml @@ -0,0 +1,7 @@ + + + + diff --git a/powerbell/src/main/res/layout/activity_battery_reporter.xml b/powerbell/src/main/res/layout/activity_battery_reporter.xml new file mode 100644 index 0000000..0ad37ee --- /dev/null +++ b/powerbell/src/main/res/layout/activity_battery_reporter.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/powerbell/src/main/res/layout/item_battery_report.xml b/powerbell/src/main/res/layout/item_battery_report.xml new file mode 100644 index 0000000..048d3a8 --- /dev/null +++ b/powerbell/src/main/res/layout/item_battery_report.xml @@ -0,0 +1,34 @@ + + + + + + + + + + diff --git a/powerbell/src/main/res/menu/toolbar_main.xml b/powerbell/src/main/res/menu/toolbar_main.xml index 3518127..dce9de9 100644 --- a/powerbell/src/main/res/menu/toolbar_main.xml +++ b/powerbell/src/main/res/menu/toolbar_main.xml @@ -1,5 +1,8 @@ + diff --git a/powerbell/src/main/res/values/strings.xml b/powerbell/src/main/res/values/strings.xml index b3be1aa..c0505a8 100644 --- a/powerbell/src/main/res/values/strings.xml +++ b/powerbell/src/main/res/values/strings.xml @@ -6,6 +6,7 @@ This application has crashed, the author level is limited, please understand! Main View About + Battery Reporter Clear Record Change Picture Developer View