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

下面要写的是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);
			}
		});
	}
}

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

原文地址:https://www.cnblogs.com/swdhywhd/p/10311191.html

时间: 2024-10-10 16:42:31

初学Android 音频管理器之控制音频 六十六的相关文章

Android实战简易教程-第六十六枪(结合SharedPreferenced实现自动登录功能)

我们使用的一般应用都有记住密码.自动登录功能,这样不用用户每次都要点击登录按钮,提升用户体验,下面我们通过一个实例研究一下如何通过android的sharedpreferenced实现自动登录功能.本实例有三个界面-登录界面,跳转界面,登录成功界面. 1.登录界面: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.andr

Android笔记(六十六) android中的动画——XML文件定义属性动画

除了直接在java代码中定义动画之外,还可以使用xml文件定义动画,以便重用. 如果想要使用XML来编写动画,首先要在res目录下面新建一个animator文件夹,所有属性动画的XML文件都应该存放在这个文件夹当中.然后在XML文件中我们一共可以使用如下三种标签: <animator>  对应代码中的ValueAnimator <objectAnimator>  对应代码中的ObjectAnimator <set>  对应代码中的AnimatorSet 使用XML设置动

从零開始学android&amp;lt;ImageSwitcher图片切换组件.二十六.&amp;gt;

ImageSwitcher组件的主要功能是完毕图片的切换显示,比如用户在进行图片浏览的时候.能够通过button点击一张张的切换显示的图片,并且使用ImageSwitcher组件在每次切换的时候也能够为其添加一些动画的效果,此类定义例如以下: java.lang.Object ? android.view.View ? android.view.ViewGroup ? android.widget.FrameLayout ? android.widget.ViewAnimator ? andro

AsyncTask(异步任务)讲解-android的学习之旅(四十六)

AsyncTask简介 Android的UI线程主要处理用户的按键,触屏和View的绘制等,不能在里面处理耗时的操作,否则会出现ANR,因此耗时的操作要单独开一个线程处理,但是新线程不能直接处理UI线程的View. AsyncTask的使用方法 代码示例 本实例只有一个按钮和文本框,点击按钮从网络下载数据,然后又在文本框显示. package peng.liu.test; import android.app.Activity; import android.app.ProgressDialog

(六十六)Android打造形形色色的进度条 (转载自:http://blog.csdn.net/lmj623565791/article/details/43371299)

转载自:http://blog.csdn.net/lmj623565791/article/details/43371299 ,本文出自:[张鸿洋的博客] 1.概述 最近需要用进度条,秉着不重复造轮子的原则,上github上搜索了一番,看了几个觉得比较好看的ProgressBar,比如:daimajia的等.简单看了下代码,基本都是继承自View,彻彻底底的自定义了一个进度条.盯着那绚丽滚动条,忽然觉得,为什么要通过View去写一个滚动条,系统已经提供了ProgressBar以及属于它的特性,我

Android实战简易教程-第六十六枪(server端搭建和server端Json数据交互)

学习Android有一段时间了.对server端有非常深的好奇,决定对server端的实现进行一些研究,这里实现了一个简单的小样例,用于获取server端的json数据,样例非常easy,适合刚開始学习的人学习使用. server端 首先我们搭建server端,server端使用struct2架构,对该架构不熟悉的人能够花一点时间看看慕课网上的相关视频,这里用myeclipse实现server端. 新建一个webproject.这里要引入struct2相关,方法是:点击新建的webproject

六十六、添加自定义监控项目、配置邮件告警、测试告警、不发邮件的问题处理

一.添加自定义监控项目 需求:监控某台web的80端口连接数,并出图 思路:先写一个脚本,能获取到数据,因为成图需要数据,再给这个脚本执行的权限,然后再用zabbix_get命令使服务端可以获得这些数据,再到服务端创建监控项目,再创建图形,有需要报警的再设置触发器. 两步:1)zabbix监控中心创建监控项目:2)针对该监控项目以图形展现 对于第一步,需要到客户端定义脚本,脚本名字位置都可以自定义 # vim /usr/local/sbin/estab.sh //内容如下 #!/bin/bash

第六十六篇、OC_Sqlite数据库操作

#import <Foundation/Foundation.h> #import <sqlite3.h> #define kFilename @"data.sqlite" @interface SQLService:NSObject { NSMutableArray *FSQLExecutioResultsMutableArray; //SQL运行结果 NSString *FErrorString; //错误信息 NSString *FDatabaseAddr

一起talk C栗子吧(第六十六回:C语言实例--DIY字符串比较函数)

各位看官们,大家好,上一回中咱们说的是DIY字符串连接函数的例子,这一回咱们说的例子是:DIY字符串比较函数.闲话休提,言归正转.让我们一起talk C栗子吧! 我们在前面的章回中介绍过字符串比较函数,时间不长,但是有些看官已经忘记了,为了加深看官们对字符串比较函数的印象,我们准备DIY字符串比较函数.Just do it by yourself! 我们在前面的章回中一共介绍了两个字符串比较函数:strcmp,strncmp.接下来我们分别介绍如何DIY这两个字符串比较函数. DIY strcm