06-Android AudioDemo

本文介绍了一款基于Android平台的应用程序,该程序实现了音量增减功能,并通过按钮操作及SeekBar组件来调整音量大小。文章提供了完整的源代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近写了一个AudioDemo 可实现音量增减,音量拖动,滚动条随音量增减实时改变。
具体实现代码如下:

import android.app.Activity;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.media.AudioManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.Toast;

public class MainActivity extends Activity{
    Button up,down;
    SeekBar audio;
    AudioManager audioManager;
    VolumeReceiver receiver;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        up=findViewById(R.id.up);
        down=findViewById(R.id.down);
        audio=findViewById(R.id.audio);
        receiver = new VolumeReceiver();
        IntentFilter filter = new IntentFilter() ;
        filter.addAction("android.media.VOLUME_CHANGED_ACTION") ;
        registerReceiver(receiver, filter) ;
        audioManager=(AudioManager)getSystemService(Service.AUDIO_SERVICE);
        audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
        up.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                audioManager.adjustVolume(AudioManager.ADJUST_RAISE,0);
                int i=audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
                Log.e("cx","up:"+i);
//                Toast.makeText(MainActivity.this,"音量增加了,当前音量为:"+i,Toast.LENGTH_SHORT).show();
            }
        });
        down.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                audioManager.adjustVolume(AudioManager.ADJUST_LOWER,0);
                int i=audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
                Log.e("cx","down:"+i);
//                Toast.makeText(MainActivity.this,"音量减少了,当前音量为:"+i,Toast.LENGTH_SHORT).show();
            }
        });

        int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);  //获取系统最大音量
        audio.setMax(maxVolume);   //拖动条最高值与系统最大声匹配
        int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);  //获取当前值
        audio.setProgress(currentVolume);
        audio.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0);
                int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);  //获取当前值
                audio.setProgress(currentVolume);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(receiver);
    }
    private class VolumeReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            if(intent.getAction().equals("android.media.VOLUME_CHANGED_ACTION")){
                int currentVolume =audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
                audio.setProgress(currentVolume);
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值