Android实现手机音量及屏幕亮度调节

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

播放视频时,调节声音和屏幕亮度是标配啦,简单记录下:

//不要忘记添加权限 :<uses-permission Android:name="android.permission.WRITE_SETTINGS"/>
public class TestActivity extends Activity {
    private SeekBar voice_seekbar;
    private SeekBar light_seekbar;
    private TextView voice_tv;
    private TextView light_tv;
    private AudioManager mAudioManager;
    // 最大音量
    private int maxVolume;
    // 当前音量
    private int currentVolume;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
        initViews();
        initVolume();
        initLight();
    }

    /**
     * 获取当前屏幕亮度
     * 
     * @description:
     * @author ldm
     * @date 2016-12-2 下午3:22:20
     */
    private void initLight() {
        float currentBright = 0.0f;
        try {
            // 系统亮度值范围:0~255,应用窗口亮度范围:0.0f~1.0f。
            currentBright = android.provider.Settings.System.getInt(
                    getContentResolver(),
                    android.provider.Settings.System.SCREEN_BRIGHTNESS) * 100;
        } catch (Exception e) {
            e.printStackTrace();
        }
        light_seekbar.setProgress((int) currentBright);
        // 转换成百分比
        light_tv.setText("当前亮度:" + (int) currentBright + "%");
    }

    private void initViews() {
        this.voice_seekbar = (SeekBar) findViewById(R.id.voice_seekbar);
        this.light_seekbar = (SeekBar) findViewById(R.id.light_seekbar);
        this.voice_tv = (TextView) findViewById(R.id.voice_tv);
        this.light_tv = (TextView) findViewById(R.id.light_tv);
        this.voice_seekbar
                .setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

                    @Override
                    public void onStopTrackingTouch(SeekBar seekBar) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onStartTrackingTouch(SeekBar seekBar) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onProgressChanged(SeekBar seekBar,
                            int progress, boolean fromUser) {
                        // 设置音量
                        mAudioManager.setStreamVolume(
                                AudioManager.STREAM_MUSIC, progress, 0);
                        voice_tv.setText("当前音量百分比:" + progress * 100
                                / maxVolume + " %");
                    }
                });
        // 调节亮度
        this.light_seekbar
                .setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

                    @Override
                    public void onStopTrackingTouch(SeekBar seekBar) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onStartTrackingTouch(SeekBar seekBar) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onProgressChanged(SeekBar seekBar,
                            int progress, boolean fromUser) {
                        WindowManager.LayoutParams lp = getWindow()
                                .getAttributes();
                        lp.screenBrightness = Float.valueOf(progress)
                                * (1f / 100f);
                        // 调节亮度
                        getWindow().setAttributes(lp);
                        light_tv.setText("当前亮度:" + progress + "%");
                    }
                });
    }

    /**
     * 初始化音量数据
     * 
     * @description:
     * @author ldm
     * @date 2016-12-2 下午3:20:05
     */
    private void initVolume() {
        // 获取系统最大音量
        maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
        // 设置voice_seekbar的最大值
        voice_seekbar.setMax(maxVolume);
        // 获取到当前 设备的音量
        currentVolume = mAudioManager
                .getStreamVolume(AudioManager.STREAM_MUSIC);
        // 显示音量
        voice_tv.setText("当前音量百分比:" + currentVolume * 100 / maxVolume + " %");
    }
}

测试用布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/transparent"
    android:orientation="vertical"
    android:padding="16dp" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="调节声音"
        android:textSize="16sp" />

    <SeekBar
        android:id="@+id/voice_seekbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="调节亮度"
        android:textSize="16sp" />

    <SeekBar
        android:id="@+id/light_seekbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="100" />

    <TextView
        android:id="@+id/voice_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/light_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:textSize="16sp" />

</LinearLayout>

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

代码下载地址: https://pan.quark.cn/s/a4b39357ea24 图书馆系统非常适合运用C++面向对象的特性进行建模。图书馆管理系统主要由四个关键模块构成:图书借阅、图书归还、图书维护以及读者服务。在系统设计中,可以定义一个读者类(Reader),用于存储每位读者的详细资料;读者数据库类(Rdatabase),用于管理所有读者的信息;图书类(Book),用于记录每本图书的基本属性;图书数据库类(Bdatabase),用于维护所有图书的记录。 【图书馆管理系统构建】 基于C++面向对象编程的图书馆管理系统,其核心功能划分为四个主要部分:图书借阅、图书归还、图书维护和读者服务。该系统通过设计多种类来模拟图书馆的实际运作,包括读者类(Reader)、读者数据库类(Rdatabase)、图书类(Book)以及图书数据库类(Bdatabase)。 1. **读者类(Reader)**: - 该类包含读者的基础资料,例如删除标记(tag)、读者编号(no)、姓名(name)以及所借图书列表(borbook)。 - 通过构造函数对读者信息进行初始化。 - 拷贝构造函数用于复制读者的姓名信息。 - 提供一系列成员函数,以支持信息的获取和设置操作。 2. **读者数据库类(Rdatabase)**: - 包含一个读者记录数组(read),并使用记录指针(top)来标识最新添加的读者信息。 - 构造函数从read.txt文件中加载所有读者数据,并在析构函数中将未删除的记录保存回文件。 - 提供管理读者信息的接口,例如添加、删除和查找功能。 3. **图书类(Book)**: - 该类存储图书的基本属性,包括删除标记、图书编号、书名(name)以及图书的在架状态...
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值