android系统铃声选择画面源码,【android源码】使用AudioManager调节播放器音量的开发源码...

package com.zyg.demo.adjustvolume;

import java.io.IOException;

import Android.app.Activity;

import Android.content.Context;

import Android.content.res.AssetFileDescriptor;

import Android.content.res.AssetManager;

import Android.media.AudioManager;

import Android.media.MediaPlayer;

import Android.os.Bundle;

import Android.view.View;

import Android.view.View.OnClickListener;

import Android.widget.Button;

import Android.widget.ProgressBar;

import com.zyg.demo.progressbar.R;

public class AdjustVolumeActivity extends Activity implements OnClickListener {

private Button play = null;

private Button down = null;

private Button up = null;

private ProgressBar pb = null;

private int maxVolume = 50; // 最大音量值

private int curVolume = 20; // 当前音量值

private int stepVolume = 0; // 每次调整的音量幅度

private MediaPlayer mediaPlayer = null;// 播放器

private AudioManager audioMgr = null; // Audio管理器,用了控制音量

private AssetManager assetMgr = null; // 资源管理器

private final String musicName = "hehe.MP3";

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

// 初始化播放器、音量数据等相关工作

initPlayWork();

// 初始化视图

initUI();

}

/**

* 初始化UI

*/

private void initUI() {

play = (Button) findViewById(R.id.play);

down = (Button) findViewById(R.id.down);

up = (Button) findViewById(R.id.up);

play.setOnClickListener(this);

down.setOnClickListener(this);

up.setOnClickListener(this);

// 设置进度条

pb = (ProgressBar) findViewById(R.id.progress);

pb.setMax(maxVolume);

pb.setProgress(curVolume);

}

/**

* 初始化播放器、音量数据等相关工作

*/

private void initPlayWork() {

audioMgr = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

// 获取最大音乐音量

maxVolume = audioMgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);

// 初始化音量大概为最大音量的1/2

curVolume = maxVolume / 2;

// 每次调整的音量大概为最大音量的1/6

stepVolume = maxVolume / 6;

mediaPlayer = new MediaPlayer();

assetMgr = this.getAssets();

}

/**

* 准备播放音乐

*

* @param music

*/

private void prepareAndPlay() {

try {

// 打开指定音乐文件

AssetFileDescriptor afd = assetMgr.openFd(musicName);

mediaPlayer.reset();

// 使用MediaPlayer加载指定的声音文件。

mediaPlayer.setDataSource(afd.getFileDescriptor(),

afd.getStartOffset(), afd.getLength());

// 准备声音

mediaPlayer.prepare();

// 播放

mediaPlayer.start();

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 调整音量

*/

private void adjustVolume() {

audioMgr.setStreamVolume(AudioManager.STREAM_MUSIC, curVolume,

AudioManager.FLAG_PLAY_SOUND);

}

@Override

public void onClick(View v) {

int id = v.getId();

switch (id) {

case R.id.play://按下播放按钮

prepareAndPlay();

break;

case R.id.up://按下增大音量按钮

curVolume += stepVolume;

if (curVolume >= maxVolume) {

curVolume = maxVolume;

}

pb.setProgress(curVolume);

break;

case R.id.down://按下减小音量按钮

curVolume -= stepVolume;

if (curVolume <= 0) {

curVolume = 0;

}

pb.setProgress(curVolume);

break;

default:

break;

}

// 调整音量

adjustVolume();

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值