当前位置: 首页 > article >正文

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

文章目录

    • 1、开发需求
    • 2、运行环境
    • 3、主要文件
    • 4、布局文件信息
    • 5、手机界面控制代码
    • 6、debug

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

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <SeekBar
        android:id="@+id/seekBar"
        android:layout_width="274dp"
        android:layout_height="32dp"
        android:layout_marginStart="27dp"
        android:layout_marginTop="38dp"
        android:layout_marginEnd="83dp"
        android:layout_marginBottom="24dp"
        android:maxHeight="5.0dp"
        android:minHeight="5.0dp"
        android:progressDrawable="@drawable/sb_bar"
        android:thumb="@drawable/sb_thumb"
        app:layout_constraintBottom_toTopOf="@+id/textview"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.037"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="1.0" />

    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="40dp"
        android:layout_marginTop="120dp"
        android:layout_marginEnd="30dp"
        android:layout_marginBottom="16dp"
        android:text="sylonbar"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.187" />


</androidx.constraintlayout.widget.ConstraintLayout>

5、手机界面控制代码

路径:app\src\main\java\com\example\sylon\MainActivity.java

package com.example.sylon;
import android.os.Bundle;
import android.app.Activity;
import android.view.WindowManager;
import android.view.Window;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import android.content.Context;
import android.content.ContentResolver;
import android.provider.Settings;
import android.util.Log;

/*
public class MouseSpeedChanger {
    private static final String TAG = "MouseSpeedChanger";

    // 修改鼠标速度的方法
    public static void setMouseSpeed(ContentResolver resolver, int speed) {
        if (speed >= 1 && speed <= 10) {
            // 将鼠标速度的值存储到系统设置中
            Settings.System.putInt(resolver, Settings.System.POINTER_SPEED, speed);
            // 通知系统设置已更改
            Uri uri = Settings.System.getUriFor(Settings.System.POINTER_SPEED);
            resolver.notifyChange(uri, null);
            Log.d(TAG, "Mouse speed set to: " + speed);
        } else {
            Log.e(TAG, "Invalid mouse speed value: " + speed);
        }
    }
}
*/
public class MainActivity extends AppCompatActivity {

    private SeekBar seekb_normal;
    private TextView txt_cur;
    private Context mContext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //mContext = MainActivity.this;
        bindViews();
    }
    // 获取当前屏幕亮度值
    private int getCurrentBrightness() {
        int brightness = 0;
        try {
            brightness = Settings.System.getInt(getContentResolver(), Settings.System.POINTER_SPEED);
        } catch (Settings.SettingNotFoundException e) {
            e.printStackTrace(); // 捕获异常
        }
        return brightness;
    }

    // 设置新的屏幕亮度
    private void setBrightness(int brightness) {
        ContentResolver cResolver = getContentResolver();
        // 将进度值转换为0-255范围
        int newBrightness = brightness * 255 / 100;
        if (Settings.System.canWrite(this)) {
            Settings.System.putInt(cResolver, Settings.System.POINTER_SPEED, newBrightness);
        }
        // 更新当前窗口的亮度
        WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
        layoutParams.screenBrightness = newBrightness / 255.0f; // 转换为0.0到1.0之间
        getWindow().setAttributes(layoutParams);

    }

    private void bindViews() {
        seekb_normal = (SeekBar) findViewById(R.id.seekBar);
        txt_cur = (TextView) findViewById(R.id.textview);
        int currentBrightness = getCurrentBrightness();
        seekb_normal.setProgress(currentBrightness*100/255);
        txt_cur.setText("当前亮度: " + currentBrightness*100/255);
        mContext = getApplicationContext();
        seekb_normal.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                setBrightness(progress);
                txt_cur.setText("当前亮度:" + progress + "  / 100 ");
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                Toast.makeText(mContext, "触碰SeekBar", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                Toast.makeText(mContext, "放开SeekBar", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

6、debug

工具如果找不到,直接全局搜索。
在这里插入图片描述
在这里插入图片描述


http://www.kler.cn/a/453876.html

相关文章:

  • SQL 实战:日期与时间函数 – 统计数据的时间跨度与趋势
  • Elasticsearch:normalizer
  • 【漏洞复现】灵当CRM datapdf.php 任意文件读取漏洞
  • 机器学习之KNN算法预测数据和数据可视化
  • Linux -- 互斥的底层实现
  • 简述Git中如何将一个新增文件添加到本地仓库?
  • react高阶组件及hooks
  • 透视网络世界:计算机网络习题的深度解析与总结【前3章】
  • 物联网乐鑫USB方案,设备互联和数据传输应用
  • Oracle 普通表至分区表的分区交换
  • chrome缓存机制以及验证缓存机制
  • springboot/ssm图书大厦图书管理系统Java代码编写web图书借阅项目
  • uniapp抖音小程序,如何一键获取用户手机号
  • ES学习module模块化(十二)
  • 新建一个springboot项目
  • 中关村科金智能客服机器人如何解决客户个性化需求与标准化服务之间的矛盾?
  • 深度学习实战103-基于KDD Cup 99数据集的搭建神经网络的检测系统(NIDS),通过对网络流量数据进行分析,提供完整代码
  • DALFox-一款XSS自动化扫描工具
  • GA-Kmeans-Transformer时序聚类+状态识别组合模型
  • vscode修改中文显示格式
  • transformer用作分类任务
  • Golang 的并发优势
  • 数据结构(哈希表(上)纯概念版)
  • 深入理解 MySQL 架构
  • (七)循环神经网络_LSTM长短期记忆网络
  • STM32单片机芯片与内部45 UART 不定长度接收 标志位结束 定时器超时 串口空闲中断