diff --git a/powerbell/build.gradle b/powerbell/build.gradle
index f4810637..45053547 100644
--- a/powerbell/build.gradle
+++ b/powerbell/build.gradle
@@ -52,17 +52,41 @@ android {
includeInApk = false
includeInBundle = false
}
+
+ buildFeatures {
+ dataBinding true
+ }
+
+ lintOptions {
+ abortOnError false
+ }
+}
+
+repositories {
+ flatDir {
+ dirs 'libs'
+ }
}
dependencies {
- api fileTree(dir: 'libs', include: ['*.jar'])
- api 'cc.winboll.studio:libaes:15.9.3'
- api 'cc.winboll.studio:libapputils:15.8.5'
- api 'cc.winboll.studio:libappbase:15.9.5'
-
- // 吐司提示库
- api 'com.github.getActivity:ToastUtils:10.5'
- // 应用介绍页类库
+
+ //--------------aar依赖-----------
+ implementation(name: 'mimo-ad-sdk', ext: 'aar')
+ //--------------Maven依赖-----------
+ //implementation 'com.miui.zeus:mimo-ad-sdk:5.3.2'
+
+ //注意:以下5个库必须要引入
+ implementation "androidx.appcompat:appcompat:1.2.0"
+ implementation 'com.google.code.gson:gson:2.8.5'
+ implementation 'androidx.recyclerview:recyclerview:1.0.0'
+ implementation 'com.github.bumptech.glide:glide:4.9.0'
+ //annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
+
+ implementation "androidx.navigation:navigation-ui:2.3.5"
+ implementation 'androidx.multidex:multidex:2.0.1'
+ //debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1'
+
+ // 应用介绍页类库
api 'io.github.medyo:android-about-page:2.0.0'
// SSH
api 'com.jcraft:jsch:0.1.55'
@@ -82,23 +106,9 @@ dependencies {
//api 'androidx.vectordrawable:vectordrawable-animated:1.1.0'
//api 'androidx.fragment:fragment:1.1.0'
-
- /*api 'cc.winboll.studio:winboll-shared:1.8.0'
- api 'io.github.medyo:android-about-page:2.0.0'
- api 'com.jcraft:jsch:0.1.55'
- api 'org.jsoup:jsoup:1.13.1'
- api 'com.squareup.okhttp3:okhttp:4.4.1'
-
- api 'androidx.appcompat:appcompat:1.0.0'
- api 'androidx.fragment:fragment:1.0.0'
- api 'com.google.android.material:material:1.0.0'
-
- api 'com.baoyz.pullrefreshlayout:library:1.2.0'
- api 'com.github.getActivity:ToastUtils:10.5'
- api 'io.github.medyo:android-about-page:2.0.0'
- api 'org.jsoup:jsoup:1.13.1'
- api 'com.squareup.okhttp3:okhttp:4.4.1'
-
- api 'cc.winboll.studio:libaes:7.6.0'
- */
+ implementation 'cc.winboll.studio:libaes:15.11.0'
+ implementation 'cc.winboll.studio:libappbase:15.11.0'
+
+ //api fileTree(dir: 'libs', include: ['*.aar'])
+ api fileTree(dir: 'libs', include: ['*.jar'])
}
diff --git a/powerbell/build.properties b/powerbell/build.properties
index 0b19fcc5..b7a98f95 100644
--- a/powerbell/build.properties
+++ b/powerbell/build.properties
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
-#Wed Oct 22 20:17:00 HKT 2025
+#Fri Nov 14 03:40:03 GMT 2025
stageCount=18
libraryProject=
baseVersion=15.4
publishVersion=15.4.17
-buildCount=0
+buildCount=11
baseBetaVersion=15.4.18
diff --git a/powerbell/src/main/AndroidManifest.xml b/powerbell/src/main/AndroidManifest.xml
index e5940409..ab085daf 100644
--- a/powerbell/src/main/AndroidManifest.xml
+++ b/powerbell/src/main/AndroidManifest.xml
@@ -4,6 +4,19 @@
xmlns:tools="http://schemas.android.com/tools"
package="cc.winboll.studio.powerbell">
+
+
+
+
+
+
+
+
+
+
+
+
@@ -36,7 +49,7 @@
-
+
@@ -47,7 +60,7 @@
-
+
+ android:requestLegacyExternalStorage="true"
+ android:usesCleartextTraffic="true"
+ tools:ignore="GoogleAppIndexingWarning"
+ android:networkSecurityConfig="@xml/network_security_config">
mAllBanners = new ArrayList<>();
+
+ private ViewGroup mContainer;
+
+ private Button mFetchBtn;
+ private Button mShowBtn;
+
+ private boolean mIsBiddingWin = true;
+
public static final int BACKGROUND_PICTURE_REQUEST_CODE = 0;
public static MainActivity _mMainActivity;
@@ -54,6 +122,27 @@ public class MainActivity extends WinBoLLActivity {
//LogUtils.d(TAG, "onCreate(...)");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
+
+ // 米盟模块
+ showPrivacy();
+
+ mContainer = findViewById(R.id.container);
+ mFetchBtn = findViewById(R.id.fetchAd);
+ mShowBtn = findViewById(R.id.showAd);
+
+ mFetchBtn.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ fetchAd();
+ }
+ });
+
+ mShowBtn.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ showAd();
+ }
+ });
// 设置调试日志
// mLogView = findViewById(R.id.logview);
@@ -85,6 +174,20 @@ public class MainActivity extends WinBoLLActivity {
}
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ try {
+ for(BannerAd ad: mAllBanners){
+ ad.destroy();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+
+
void showFragment(Fragment fragment) {
FragmentTransaction tx = getFragmentManager().beginTransaction();
for (Fragment item : getFragmentManager().getFragments()) {
@@ -172,7 +275,7 @@ public class MainActivity extends WinBoLLActivity {
intent.setClass(this, BackgroundPictureActivity.class);
startActivity(intent);
} else if (menuItemId == R.id.action_log) {
- App.getWinBoLLActivityManager().startLogActivity(this);
+ LogActivity.startLogActivity(this);
}
return true;
@@ -217,4 +320,246 @@ public class MainActivity extends WinBoLLActivity {
RelativeLayout mainLayout = findViewById(R.id.activitymainRelativeLayout1);
mainLayout.setBackgroundColor(nPixelColor);
}
+
+ private void showAd() {
+ final FrameLayout container = new FrameLayout(this);
+ container.setPadding(0, 0, 0, MimoUtils.dpToPx(this, 10));
+ mContainer.addView(container, new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT));
+
+ if (mIsBiddingWin){
+ //如果竞价成功,传⼊本次实际结算价
+ mBannerAd.setPrice(getPrice());
+ }
+ mBannerAd.showAd(this, container, new BannerAd.BannerInteractionListener() {
+ @Override
+ public void onAdClick() {
+ Log.d(TAG, "onAdClick");
+ }
+
+ @Override
+ public void onAdShow() {
+ mShowBtn.setEnabled(false);
+ Log.d(TAG, "onAdShow");
+ }
+
+ @Override
+ public void onAdDismiss() {
+ Log.d(TAG, "onAdDismiss");
+ mContainer.removeView(container);
+ }
+
+ @Override
+ public void onRenderSuccess() {
+ Log.d(TAG, "onRenderSuccess");
+ }
+
+ @Override
+ public void onRenderFail(int code, String msg) {
+ Log.e(TAG, "onRenderFail errorCode " + code + " errorMsg " + msg);
+ }
+ });
+ }
+
+ private void fetchAd() {
+ mShowBtn.setEnabled(false);
+ mBannerAd = new BannerAd();
+ mAllBanners.add(mBannerAd);
+ mBannerAd.setDownLoadListener(new BannerAd.BannerDownloadListener() {
+ @Override
+ public void onDownloadStarted() {
+ Log.e(TAG, "onDownloadStarted");
+ }
+
+ @Override
+ public void onDownloadPaused() {
+ Log.e(TAG, "onDownloadPaused");
+ }
+
+ @Override
+ public void onDownloadFailed(int errorCode) {
+ Log.e(TAG, "onDownloadFailed, errorCode = "+ errorCode);
+ }
+
+ @Override
+ public void onDownloadFinished() {
+ Log.e(TAG, "onDownloadFinished");
+ }
+
+ @Override
+ public void onDownloadProgressUpdated(int progress) {
+ Log.e(TAG, "onDownloadProgressUpdated "+ progress + "%");
+ }
+
+ @Override
+ public void onInstallFailed(int errorCode) {
+ Log.e(TAG, "onInstallFailed, errorCode = "+ errorCode);
+ }
+
+ @Override
+ public void onInstallStart() {
+ Log.e(TAG, "onInstallStart");
+ }
+
+ @Override
+ public void onInstallSuccess() {
+ Log.e(TAG, "onInstallSuccess");
+ }
+
+ @Override
+ public void onDownloadCancel() {
+ Log.e(TAG, "onDownloadCancel");
+ }
+ });
+ ADParams params = new ADParams.Builder().setUpId(BANNER_POS_ID).build();
+ mBannerAd.loadAd(params, new BannerAd.BannerLoadListener() {
+ @Override
+ public void onBannerAdLoadSuccess() {
+ mShowBtn.setEnabled(true);
+
+ long bannerPrice = getPrice();
+ if (mIsBiddingWin){
+ //竞价成功时候上报win
+ Map auctionBidInfo = new HashMap<>();
+ auctionBidInfo.put(BaseAd.IBidding.EXPECT_COST_PRICE, bannerPrice);
+ auctionBidInfo.put(BaseAd.IBidding.HIGHEST_LOSS_PRICE, BID_WIN_HIGHEST_LOSS_PRICE);
+ mBannerAd.win(auctionBidInfo);
+ } else {
+ //竞价失败的时候上报loss
+ Map lossReasonInfo = new HashMap<>();
+ lossReasonInfo.put(BaseAd.IBidding.WIN_PRICE, BID_LOSS_WIN_PRICE);
+ lossReasonInfo.put(BaseAd.IBidding.LOSS_REASON, BaseAd.LossReason.TYPE_LOWER_OTHER_BIDDER_PRICE);
+ lossReasonInfo.put(BaseAd.IBidding.ADN_ID, 1);
+ mBannerAd.loss(lossReasonInfo);
+ }
+ }
+
+ @Override
+ public void onAdLoadFailed(int errorCode, String errorMsg) {
+ Log.e(TAG, "errorCode = " + errorCode + ", errorMsg = " + errorMsg);
+ }
+ });
+ }
+
+ private long getPrice(){
+ if (mBannerAd == null){
+ return 0;
+ }
+ Map map = mBannerAd.getMediaExtraInfo();
+ if (map == null || map.isEmpty()){
+ return 0;
+ }
+ return (long) map.get("price");
+ }
+
+
+ private void showPrivacy(){
+ String privacyAgreeValue = getSharedPreferences().getString(PRIVACY_VALUE, null);
+ if (TextUtils.equals(privacyAgreeValue, String.valueOf(0))){
+ Log.i(TAG, "已拒绝隐私协议,广告已处于不可以状态...");
+ Toast.makeText(this, "已拒绝隐私协议,广告已处于不可以状态", Toast.LENGTH_SHORT).show();
+ return;
+ }
+ if (TextUtils.equals(privacyAgreeValue, String.valueOf(1))){
+ Log.i(TAG, "已同意隐私协议,开始初始化...");
+ initMimoSdk();
+ return;
+ }
+ Log.i(TAG, "开始弹出隐私协议...");
+ AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
+ builder.setTitle("用户须知");
+ builder.setMessage("小米广告SDK隐私政策: https://dev.mi.com/distribute/doc/details?pId=1688, 请复制到浏览器查看");
+ builder.setIcon(R.drawable.ic_launcher);
+ builder.setCancelable(false); //点击对话框以外的区域是否让对话框消失
+ builder.setPositiveButton("同意", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ SharedPreferences.Editor editor = getSharedPreferences().edit();
+ editor.putString(PRIVACY_VALUE, String.valueOf(1));
+ editor.apply();
+ initMimoSdk();
+ dialog.dismiss();
+ }
+ });
+ builder.setNegativeButton("拒绝", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ SharedPreferences.Editor editor = getSharedPreferences().edit();
+ editor.putString(PRIVACY_VALUE, String.valueOf(0));
+ editor.apply();
+ dialog.dismiss();
+ }
+ });
+ AlertDialog dialog = builder.create();
+
+ Window window = dialog.getWindow();
+ window.setGravity(Gravity.BOTTOM);
+
+ WindowManager m = getWindowManager();
+ Display d = m.getDefaultDisplay();
+ WindowManager.LayoutParams p = dialog.getWindow().getAttributes();
+ p.width = d.getWidth();
+ dialog.getWindow().setAttributes(p);
+ dialog.show();
+ }
+
+ private void initMimoSdk() {
+ MimoSdk.init(this, new MimoCustomController() {
+
+ @Override
+ public boolean isCanUseLocation() {
+ return true;
+ }
+
+ @Override
+ public MimoLocation getMimoLocation() {
+ return null;
+ }
+
+ @Override
+ public boolean isCanUseWifiState() {
+ return true;
+ }
+
+ @Override
+ public boolean alist() {
+ return true;
+ }
+ } , new MimoSdk.InitCallback() {
+ @Override
+ public void success() {
+ Log.d(TAG, "MimoSdk init success");
+ }
+
+ @Override
+ public void fail(int code, String msg) {
+ Log.e(TAG, "MimoSdk init fail, code=" + code + ",msg=" + msg);
+ }
+ });
+ MimoSdk.setDebugOn(true);
+ }
+
+ @Override
+ public boolean dispatchKeyEvent(KeyEvent event) {
+ return super.dispatchKeyEvent(event);
+ }
+
+// @Override
+// public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
+// return false;
+// }
+
+ @Override
+ public void setupToolbar() {
+ super.setupToolbar();
+ if (getSupportActionBar() != null) {
+ getSupportActionBar().setDisplayHomeAsUpEnabled(false);
+ }
+ }
+
+ public SharedPreferences getSharedPreferences() {
+ if (mSharedPreferences == null){
+ mSharedPreferences = getSharedPreferences(PRIVACY_FILE, Context.MODE_PRIVATE);
+ }
+ return mSharedPreferences;
+ }
}
diff --git a/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/AboutActivity.java b/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/AboutActivity.java
index 9f54ad02..63ea7804 100644
--- a/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/AboutActivity.java
+++ b/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/AboutActivity.java
@@ -10,9 +10,9 @@ import android.content.Context;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.LinearLayout;
+import cc.winboll.studio.libaes.models.APPInfo;
import cc.winboll.studio.libaes.views.AToolbar;
-import cc.winboll.studio.libaes.winboll.APPInfo;
-import cc.winboll.studio.libaes.winboll.AboutView;
+import cc.winboll.studio.libaes.views.AboutView;
import cc.winboll.studio.powerbell.R;
public class AboutActivity extends Activity {
diff --git a/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/BackgroundPictureActivity.java b/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/BackgroundPictureActivity.java
index f29a768b..9bf3d440 100644
--- a/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/BackgroundPictureActivity.java
+++ b/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/BackgroundPictureActivity.java
@@ -19,7 +19,7 @@ import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import cc.winboll.studio.libaes.views.AToolbar;
import cc.winboll.studio.libappbase.LogUtils;
-import cc.winboll.studio.libappbase.utils.ToastUtils;
+import cc.winboll.studio.libappbase.ToastUtils;
import cc.winboll.studio.powerbell.App;
import cc.winboll.studio.powerbell.R;
import cc.winboll.studio.powerbell.beans.BackgroundPictureBean;
diff --git a/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/ClearRecordActivity.java b/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/ClearRecordActivity.java
index d53e7671..99e4d7f0 100644
--- a/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/ClearRecordActivity.java
+++ b/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/ClearRecordActivity.java
@@ -4,11 +4,12 @@ import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
+import android.widget.Switch;
import android.widget.TextView;
import cc.winboll.studio.libaes.views.AOHPCTCSeekBar;
import cc.winboll.studio.libaes.views.AToolbar;
import cc.winboll.studio.libappbase.LogUtils;
-import cc.winboll.studio.libappbase.utils.ToastUtils;
+import cc.winboll.studio.libappbase.ToastUtils;
import cc.winboll.studio.powerbell.App;
import cc.winboll.studio.powerbell.R;
import cc.winboll.studio.powerbell.beans.BatteryInfoBean;
@@ -16,7 +17,6 @@ import cc.winboll.studio.powerbell.receivers.ControlCenterServiceReceiver;
import cc.winboll.studio.powerbell.utils.AppCacheUtils;
import cc.winboll.studio.powerbell.utils.StringUtils;
import java.util.ArrayList;
-import android.widget.Switch;
public class ClearRecordActivity extends Activity {
diff --git a/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/PixelPickerActivity.java b/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/PixelPickerActivity.java
index a781a888..85fd970c 100644
--- a/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/PixelPickerActivity.java
+++ b/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/PixelPickerActivity.java
@@ -6,6 +6,7 @@ package cc.winboll.studio.powerbell.activities;
*/
import android.app.Activity;
import android.app.Dialog;
+import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
@@ -19,11 +20,11 @@ import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
+import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity;
import cc.winboll.studio.libaes.views.AToolbar;
import cc.winboll.studio.libappbase.GlobalApplication;
-import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
-import cc.winboll.studio.powerbell.MainActivity;
import cc.winboll.studio.powerbell.R;
+import cc.winboll.studio.powerbell.activities.BackgroundPictureActivity;
import cc.winboll.studio.powerbell.activities.PixelPickerActivity;
import cc.winboll.studio.powerbell.beans.BackgroundPictureBean;
import cc.winboll.studio.powerbell.utils.BackgroundPictureUtils;
@@ -233,7 +234,10 @@ public class PixelPickerActivity extends WinBoLLActivity implements IWinBoLLActi
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
- GlobalApplication.getWinBoLLActivityManager().startWinBoLLActivity(getApplicationContext(), BackgroundPictureActivity.class);
+ Intent intent = new Intent();
+ intent.setClass(this, BackgroundPictureActivity.class);
+ startActivity(intent);
+ //GlobalApplication.getWinBoLLActivityManager().startWinBoLLActivity(getApplicationContext(), );
return true;
}
// 在switch语句中处理每个ID,并在处理完后返回true,未处理的情况返回false。
@@ -243,7 +247,10 @@ public class PixelPickerActivity extends WinBoLLActivity implements IWinBoLLActi
@Override
public void onBackPressed() {
super.onBackPressed();
- GlobalApplication.getWinBoLLActivityManager().startWinBoLLActivity(getApplicationContext(), BackgroundPictureActivity.class);
+ Intent intent = new Intent();
+ intent.setClass(this, BackgroundPictureActivity.class);
+ startActivity(intent);
+ //GlobalApplication.getWinBoLLActivityManager().startWinBoLLActivity(getApplicationContext(), BackgroundPictureActivity.class);
}
}
diff --git a/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/WinBoLLActivity.java b/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/WinBoLLActivity.java
index e44b8257..035374b3 100644
--- a/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/WinBoLLActivity.java
+++ b/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/WinBoLLActivity.java
@@ -5,40 +5,99 @@ package cc.winboll.studio.powerbell.activities;
* @Date 2025/06/19 20:35
* @Describe 应用窗口基类
*/
-import android.app.Activity;
import android.os.Bundle;
import android.view.MenuItem;
-import cc.winboll.studio.libappbase.GlobalApplication;
-import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
-import cc.winboll.studio.powerbell.App;
-import cc.winboll.studio.powerbell.MainActivity;
+import androidx.appcompat.app.AppCompatActivity;
+import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity;
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.util.TypedValue;
+import android.view.Gravity;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.FrameLayout;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+
+import com.miui.zeus.mimo.sdk.BuildConfig;
import cc.winboll.studio.powerbell.R;
-public abstract class WinBoLLActivity extends Activity implements IWinBoLLActivity {
+@SuppressLint("SetTextI18n")
+public abstract class WinBoLLActivity extends AppCompatActivity implements IWinBoLLActivity {
public static final String TAG = "WinBoLLActivity";
-
+
+ protected TextView mTagView;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ changeFullScreen(this);
+ }
+
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ addVersionNameToContentView();
+ }
+
+ protected void addVersionNameToContentView() {
+ if (!isTagViewVisible()) {
+ return;
+ }
+ if (mTagView == null) {
+ mTagView = new TextView(this);
+ mTagView.setTextColor(Color.GRAY);
+ mTagView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10);
+ mTagView.setText("MIMO SDK V" + BuildConfig.VERSION_NAME);
+ FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
+ ViewGroup.LayoutParams.WRAP_CONTENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT);
+ params.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;
+ FrameLayout frameLayout = findViewById(android.R.id.content);
+ frameLayout.addView(mTagView, params);
+ }
+ }
+
+ protected boolean isTagViewVisible() {
+ return true;
+ }
+
+ public void setupToolbar() {
+// mToolbar = findViewById(R.id.toolbar);
+// if (mToolbar != null) {
+// setSupportActionBar(mToolbar);
+// if (getSupportActionBar() != null) {
+// getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+// }
+// }
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
- GlobalApplication.getWinBoLLActivityManager().add(this);
+ //GlobalApplication.getWinBoLLActivityManager().add(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
- GlobalApplication.getWinBoLLActivityManager().registeRemove(this);
+ //GlobalApplication.getWinBoLLActivityManager().registeRemove(this);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
- GlobalApplication.getWinBoLLActivityManager().startWinBoLLActivity(getApplicationContext(), MainActivity.class);
+ //GlobalApplication.getWinBoLLActivityManager().startWinBoLLActivity(getApplicationContext(), MainActivity.class);
return true;
}
// 在switch语句中处理每个ID,并在处理完后返回true,未处理的情况返回false。
@@ -48,6 +107,25 @@ public abstract class WinBoLLActivity extends Activity implements IWinBoLLActivi
@Override
public void onBackPressed() {
super.onBackPressed();
- GlobalApplication.getWinBoLLActivityManager().startWinBoLLActivity(getApplicationContext(), MainActivity.class);
+ //GlobalApplication.getWinBoLLActivityManager().startWinBoLLActivity(getApplicationContext(), MainActivity.class);
}
+
+ public void changeFullScreen(Activity activity) {
+ Window window = activity.getWindow();
+ if (window == null){
+ return;
+ }
+ View decorView = window.getDecorView();
+ if (decorView == null){
+ return;
+ }
+ int flag = decorView.getSystemUiVisibility();
+ flag |= View.SYSTEM_UI_FLAG_FULLSCREEN;
+ flag |= View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
+ flag |= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
+ flag |= View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
+ flag |= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
+ decorView.setSystemUiVisibility(flag);
+ window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ }
}
diff --git a/powerbell/src/main/java/cc/winboll/studio/powerbell/services/ControlCenterService.java b/powerbell/src/main/java/cc/winboll/studio/powerbell/services/ControlCenterService.java
index d0730712..955d650b 100644
--- a/powerbell/src/main/java/cc/winboll/studio/powerbell/services/ControlCenterService.java
+++ b/powerbell/src/main/java/cc/winboll/studio/powerbell/services/ControlCenterService.java
@@ -14,10 +14,12 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
+import android.os.Handler;
import android.os.IBinder;
+import android.os.Looper;
import android.widget.RemoteViews;
import cc.winboll.studio.libappbase.LogUtils;
-import cc.winboll.studio.libappbase.utils.ToastUtils;
+import cc.winboll.studio.libappbase.ToastUtils;
import cc.winboll.studio.powerbell.App;
import cc.winboll.studio.powerbell.MainActivity;
import cc.winboll.studio.powerbell.R;
@@ -32,8 +34,6 @@ import cc.winboll.studio.powerbell.utils.AppConfigUtils;
import cc.winboll.studio.powerbell.utils.NotificationHelper;
import cc.winboll.studio.powerbell.utils.ServiceUtils;
import cc.winboll.studio.powerbell.utils.StringUtils;
-import android.os.Handler;
-import android.os.Looper;
public class ControlCenterService extends Service {
@@ -73,8 +73,8 @@ public class ControlCenterService extends Service {
mAppConfigUtils = App.getAppConfigUtils(this);
mAppCacheUtils = App.getAppCacheUtils(this);
mNotificationHelper = new NotificationHelper(ControlCenterService.this);
-
-
+
+
if (mMyServiceConnection == null) {
mMyServiceConnection = new MyServiceConnection();
}
@@ -105,7 +105,7 @@ public class ControlCenterService extends Service {
Intent intent = new Intent(this, MainActivity.class);
notification = helper.showForegroundNotification(intent, getString(R.string.app_name), "Service Running, Click to open app");
startForeground(NotificationHelper.FOREGROUND_NOTIFICATION_ID, notification);
-
+
// NotificationMessage notificationMessage=createNotificationMessage();
// //Toast.makeText(getApplication(), "", Toast.LENGTH_SHORT).show();
// mNotificationUtils.createForegroundNotification(this, notificationMessage);
@@ -116,7 +116,7 @@ public class ControlCenterService extends Service {
mControlCenterServiceReceiver = new ControlCenterServiceReceiver(this);
mControlCenterServiceReceiver.registerAction(this);
}
-
+
new Handler(Looper.getMainLooper()).postDelayed(new Runnable(){
@Override
@@ -126,7 +126,7 @@ public class ControlCenterService extends Service {
LogUtils.i(TAG, "Service Is Start.");
}
}, 2000);
-
+
}
}
@@ -263,15 +263,15 @@ public class ControlCenterService extends Service {
NotificationHelper helper = new NotificationHelper(ControlCenterService.this);
Intent intent = new Intent(ControlCenterService.this, MainActivity.class);
helper.showTemporaryNotification(intent, getString(R.string.app_name), msg);
-
-
-
+
+
+
// NotificationMessage notificationMessage = createNotificationMessage();
// notificationMessage.setRemindMSG(szRemindMSG);
// //LogUtils.d(TAG, "notificationMessage : " + notificationMessage.getRemindMSG());
// updateRemindNotification(notificationMessage);
}
-
+
// 设置颜色背景
public static RemoteViews setLinearLayoutColor(RemoteViews remoteViews, int viewId, int color) {
remoteViews.setInt(viewId, "setBackgroundColor", color);
diff --git a/powerbell/src/main/java/cc/winboll/studio/powerbell/utils/MimoUtils.java b/powerbell/src/main/java/cc/winboll/studio/powerbell/utils/MimoUtils.java
new file mode 100644
index 00000000..28038ca4
--- /dev/null
+++ b/powerbell/src/main/java/cc/winboll/studio/powerbell/utils/MimoUtils.java
@@ -0,0 +1,33 @@
+package cc.winboll.studio.powerbell.utils;
+
+import android.content.Context;
+import android.util.DisplayMetrics;
+
+/**
+ * @Author ZhanGSKen&豆包大模型
+ * @Date 2025/11/14 11:14
+ * @Describe 米盟 MimoUtils
+ */
+public final class MimoUtils {
+ public static final String TAG = "Utils";
+
+ public static int dpToPx(Context context, float dp) {
+ DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
+ return (int) (dp * displayMetrics.density + 0.5f);
+ }
+
+ public static int pxToDp(Context context, float px) {
+ DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
+ return (int) (px / displayMetrics.density + 0.5f);
+ }
+
+ public static int pxToSp(Context context, float pxValue) {
+ DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
+ return (int) (pxValue / displayMetrics.scaledDensity + 0.5f);
+ }
+
+ public static int spToPx(Context context, float spValue) {
+ DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
+ return (int) (spValue * displayMetrics.scaledDensity + 0.5f);
+ }
+}
diff --git a/powerbell/src/main/res/layout/activity_main.xml b/powerbell/src/main/res/layout/activity_main.xml
index 54bf7525..c9c0457b 100644
--- a/powerbell/src/main/res/layout/activity_main.xml
+++ b/powerbell/src/main/res/layout/activity_main.xml
@@ -31,5 +31,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/powerbell/src/main/res/xml/network_security_config.xml b/powerbell/src/main/res/xml/network_security_config.xml
new file mode 100644
index 00000000..482df541
--- /dev/null
+++ b/powerbell/src/main/res/xml/network_security_config.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+