初学Android,音频管理器之控制音频(六十六)

news/2024/7/7 15:25:41 标签: android, stream, button, 手机, 音乐, 电话

下面要写的是AudioManager这个音频管理器,它可以通过getSystemService得到

有一个重要方法adjustStreamVolumn(int streamType,int direction,int flags)

streamType 这个参数指定了声音的类型,如下

STREAM_ALARM:手机闹铃声音

STREAM_DTMF:DTMF音调的声音

STREAM_MUSIC:手机音乐的声音

STREAM_NOTFICATION:系统提示的声音

STREAM_RING:电话铃声的声音

STREAM_SYSTEM:手机系统的声音(不知道什么是系统声音,按键的声音?)

STREAM_VOICE_CALL:语音电话的声音

direction: 这个参数代表声音增大还是减少

flags:调整声音时的标志,例如指定FLAG_SHOW_UI,指定调整声音时显示音量进度条

setMicrophoneMute(boolean on):设置是否让麦克风静音

setMode(int mode):设置声音模式,可设置的值有NORMAL,RINGTONE和IN_CALL

setRingMode(int ringerMode):设置手机电话铃声的模式,有如下几种

        RINGER_MODE_NORMAL:正常手机铃声

        RINGER_MODE_SILENT:手机铃声静音

  RINGER_MODE_VIBRATE: 手机振动

setSpeakerphoneOn(boolean on):设置是否打开扩音器

setStreamMute(int streamType,boolean state):将手机的指定类型的声音调整为静音.其中streamType参数与adjustStreamVolume方法中第一个参数的意义相同

setStreamVolume(int StreamType,int index,int flags):直接设置手机的指定类型的音量值,其中streamType参数与adjustStreamVolume方法中第一个参数的意义相同


下面只是一个例子,并不能真的用来当播放器,有很多问题没有处理,所以这个例子只是教会怎么使用音频管理器这个工具


package WangLi.Service.AudioTest;

import android.app.Activity;
import android.app.Service;
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.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ToggleButton;

public class AudioTest extends Activity {
	Button play, up, down;
	ToggleButton mute;
	AudioManager aManager;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		// 获取系统的音频服务
		aManager = (AudioManager) getSystemService(Service.AUDIO_SERVICE);
		// 获取界面中的三个按钮和一个ToggleButton控件
		play = (Button) findViewById(R.id.play);
		up = (Button) findViewById(R.id.up);
		down = (Button) findViewById(R.id.down);
		mute = (ToggleButton) findViewById(R.id.mute);
		// 为play按钮的单击事件绑定监听器
		play.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				// 初始化MediaPlay对象,准备播放音乐
				MediaPlayer mPlayer = MediaPlayer.create(AudioTest.this,
						R.raw.one);
				// 设置循环播放
				mPlayer.setLooping(true);
				// 开始播放
				mPlayer.start();
			}
		});
		up.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// 指定调节音乐的音频,增大音量,而且显示音量图形示意
				aManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,
						AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
			}
		});
		down.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// 指定调节音乐的音频,降低音量,而且显示音量图形示意
				aManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,
						AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
			}
		});
		mute.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			@Override
			public void onCheckedChanged(CompoundButton source,
					boolean isChecked) {
				// 指定调节音乐的音频,根据isChecked确定是否需要静音
				aManager.setStreamMute(AudioManager.STREAM_MUSIC, isChecked);
			}
		});
	}
}


http://www.niftyadmin.cn/n/1411280.html

相关文章

分享一个基于Node的名片设计网站

我现在本职工作是UI设计,但是在工作中也喜欢了解和学习前端技术,这是小网站是我去年开始学习Node之后开发的个人项目。这个项目边学边做,断断续续也有半年时间吧,期间不断增加新功能,优化用户体验。现在因为想构想新项…

初学Android,手机振动器(六十七)

手机振动器,这个一般是不响铃声的时候才用,不过我一下想到了PlayStation平台上面的"生化危机",当操作的主角被僵尸啃食的时候,手柄就会强烈振动,手机游戏的振动器是"天然"具备的条件,制…

nodejs学习——关于事件机制

Nodejs是单进程单线程的应用程序,其执行环境是基于 V8 引擎实现。 事件机制都是使用设计模式中的观察者模式实现的。 触发一个事件,就是在注册的事件循环中,进行执行这个事件。 var events require(events); var eventEmitter new event…

Webloginc 内存溢出解决方法

Webloginc 内存溢出解决方法 :javax.servlet.ServletException: java.lang.OutOfMemoryError: PermGen space解决方法:1.在base_domain 域下找到startWebLogic.bat 文件,然后打开编辑,2.然后加入以下的代码JAVA_OPTS-Xms512m -Xm…

nodejs学习——Buffer对象

Buffer在nodejs中被称为缓存区。 JavaScript语言中,拥有存储字符串的数据类型,但是当我们想要存储的是二进制数据的时候,就不知道如何在内存中表达了。在Nodejs中,Buffer对象就是用来解决这个问题的。 字符编码 Buffer默认的字…

初学Android,手机闹钟服务(六十八)

AlarmManager的使用机制有的称呼为全局定时器,有的称呼为闹钟。通过对它的使用,它的作用和Timer有点相似。 都有两种相似的用法: (1)在指定时长后执行某项操作(2)周期性的执行某项操作在android…

初学Android,闹钟服务调用Service(六十九)

下面的例子是让AlarmManager定时调用某个Service,从而让系统实现定时更换壁纸的功能 界面非常简单先创建更换壁纸的服务类package WangLi.Service.AlarmWallpaper;import android.app.Service; import android.app.WallpaperManager; import android.content.Intent…

深入理解JS执行细节(写的很精辟)

来源于:http://www.cnblogs.com/onepixel/p/5090799.html javascript从定义到执行,JS引擎在实现层做了很多初始化工作,因此在学习JS引擎工作机制之前,我们需要引入几个相关的概念:执行环境栈、全局对象、执行环境、变量…