Android--java实现手机亮度控制

[复制链接]
发表于 2025-11-19 16:26:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1、开发需求

需求:开发一个Android apk实现手机亮度控制
2、运行情况

Android studio最新版本
3、告急文件

app\src\main\AndroidManifest.xml
app\src\main\res\layout\activity_main.xml
app\src\main\java\com\example\sylon\MainActivity.java
代码路径:app\src\main\AndroidManifest.xml
须要修改权限

4、结构文件信息

路径:app\src\main\res\layout\activity_main.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     xmlns:tools="http://schemas.android.com/tools"
  5.     android:id="@+id/main"
  6.     android:layout_width="match_parent"
  7.     android:layout_height="match_parent"
  8.     tools:context=".MainActivity">
  9.     <SeekBar
  10.         android:id="@+id/seekBar"
  11.         android:layout_width="274dp"
  12.         android:layout_height="32dp"
  13.         android:layout_marginStart="27dp"
  14.         android:layout_marginTop="38dp"
  15.         android:layout_marginEnd="83dp"
  16.         android:layout_marginBottom="24dp"
  17.         android:maxHeight="5.0dp"
  18.         android:minHeight="5.0dp"
  19.         android:progressDrawable="@drawable/sb_bar"
  20.         android:thumb="@drawable/sb_thumb"
  21.         app:layout_constraintBottom_toTopOf="@+id/textview"
  22.         app:layout_constraintEnd_toEndOf="parent"
  23.         app:layout_constraintHorizontal_bias="0.037"
  24.         app:layout_constraintStart_toStartOf="parent"
  25.         app:layout_constraintTop_toTopOf="parent"
  26.         app:layout_constraintVertical_bias="1.0" />
  27.     <TextView
  28.         android:id="@+id/textview"
  29.         android:layout_width="wrap_content"
  30.         android:layout_height="wrap_content"
  31.         android:layout_marginStart="40dp"
  32.         android:layout_marginTop="120dp"
  33.         android:layout_marginEnd="30dp"
  34.         android:layout_marginBottom="16dp"
  35.         android:text="sylonbar"
  36.         app:layout_constraintBottom_toBottomOf="parent"
  37.         app:layout_constraintEnd_toEndOf="parent"
  38.         app:layout_constraintHorizontal_bias="0.0"
  39.         app:layout_constraintStart_toStartOf="parent"
  40.         app:layout_constraintTop_toTopOf="parent"
  41.         app:layout_constraintVertical_bias="0.187" />
  42. </androidx.constraintlayout.widget.ConstraintLayout>
复制代码
5、手机界面控制代码

路径:app\src\main\java\com\example\sylon\MainActivity.java
  1. package com.example.sylon;
  2. import android.os.Bundle;
  3. import android.app.Activity;
  4. import android.view.WindowManager;
  5. import android.view.Window;
  6. import androidx.activity.EdgeToEdge;
  7. import androidx.appcompat.app.AppCompatActivity;
  8. import android.widget.SeekBar;
  9. import android.widget.TextView;
  10. import android.widget.Toast;
  11. import android.content.Context;
  12. import android.content.ContentResolver;
  13. import android.provider.Settings;
  14. import android.util.Log;
  15. /*
  16. public class MouseSpeedChanger {
  17.     private static final String TAG = "MouseSpeedChanger";
  18.     // 修改鼠标速度的方法
  19.     public static void setMouseSpeed(ContentResolver resolver, int speed) {
  20.         if (speed >= 1 && speed <= 10) {
  21.             // 将鼠标速度的值存储到系统设置中
  22.             Settings.System.putInt(resolver, Settings.System.POINTER_SPEED, speed);
  23.             // 通知系统设置已更改
  24.             Uri uri = Settings.System.getUriFor(Settings.System.POINTER_SPEED);
  25.             resolver.notifyChange(uri, null);
  26.             Log.d(TAG, "Mouse speed set to: " + speed);
  27.         } else {
  28.             Log.e(TAG, "Invalid mouse speed value: " + speed);
  29.         }
  30.     }
  31. }
  32. */
  33. public class MainActivity extends AppCompatActivity {
  34.     private SeekBar seekb_normal;
  35.     private TextView txt_cur;
  36.     private Context mContext;
  37.     @Override
  38.     protected void onCreate(Bundle savedInstanceState) {
  39.         super.onCreate(savedInstanceState);
  40.         setContentView(R.layout.activity_main);
  41.         //mContext = MainActivity.this;
  42.         bindViews();
  43.     }
  44.     // 获取当前屏幕亮度值
  45.     private int getCurrentBrightness() {
  46.         int brightness = 0;
  47.         try {
  48.             brightness = Settings.System.getInt(getContentResolver(), Settings.System.POINTER_SPEED);
  49.         } catch (Settings.SettingNotFoundException e) {
  50.             e.printStackTrace(); // 捕获异常
  51.         }
  52.         return brightness;
  53.     }
  54.     // 设置新的屏幕亮度
  55.     private void setBrightness(int brightness) {
  56.         ContentResolver cResolver = getContentResolver();
  57.         // 将进度值转换为0-255范围
  58.         int newBrightness = brightness * 255 / 100;
  59.         if (Settings.System.canWrite(this)) {
  60.             Settings.System.putInt(cResolver, Settings.System.POINTER_SPEED, newBrightness);
  61.         }
  62.         // 更新当前窗口的亮度
  63.         WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
  64.         layoutParams.screenBrightness = newBrightness / 255.0f; // 转换为0.0到1.0之间
  65.         getWindow().setAttributes(layoutParams);
  66.     }
  67.     private void bindViews() {
  68.         seekb_normal = (SeekBar) findViewById(R.id.seekBar);
  69.         txt_cur = (TextView) findViewById(R.id.textview);
  70.         int currentBrightness = getCurrentBrightness();
  71.         seekb_normal.setProgress(currentBrightness*100/255);
  72.         txt_cur.setText("当前亮度: " + currentBrightness*100/255);
  73.         mContext = getApplicationContext();
  74.         seekb_normal.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
  75.             @Override
  76.             public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
  77.                 setBrightness(progress);
  78.                 txt_cur.setText("当前亮度:" + progress + "  / 100 ");
  79.             }
  80.             @Override
  81.             public void onStartTrackingTouch(SeekBar seekBar) {
  82.                 Toast.makeText(mContext, "触碰SeekBar", Toast.LENGTH_SHORT).show();
  83.             }
  84.             @Override
  85.             public void onStopTrackingTouch(SeekBar seekBar) {
  86.                 Toast.makeText(mContext, "放开SeekBar", Toast.LENGTH_SHORT).show();
  87.             }
  88.         });
  89.     }
  90. }
复制代码
6、debug

工具假如找不到,直接全局搜索。


回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表