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 @@ + + +