本实例通过MediaPlayer播放一首音乐并通过AudioManager控制手机音频。关于AudioManager的具体解释可參照:Android开发之AudioManager(音频管理器)具体解释

程序执行效果图:


实例代码:


package com.jph.audiomanagerdemo;

import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.app.Service;
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;
/**
* Describe:</br>
* 控制数据音频
* 本实例通过MediaPlayer播放一首音乐并
* 通过AudioManager控制手机音频
* */
public class AudioManagerDemo extends Activity {
Button btnPlay,btnUp,btnDown;
ToggleButton btnMute;
AudioManager aManager;
MediaPlayer mPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnDown=(Button)findViewById(R.id.btnDown);
btnPlay=(Button)findViewById(R.id.btnPlay);
btnUp=(Button)findViewById(R.id.btnUp);
btnMute=(ToggleButton)findViewById(R.id.btnMute);
//初始化AudioManager
aManager=(AudioManager) getSystemService(Service.AUDIO_SERVICE);
OnClickListener listener=new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btnPlay:
//初始化MediaPlayer为播放音乐做准备
mPlayer=MediaPlayer.create(
AudioManagerDemo.this, R.raw.music);
//设置音乐循环播放
mPlayer.setLooping(true);
//播放
mPlayer.start();
break;
case R.id.btnUp:
//指定调节音乐的音频为增大。并显示音量图形
aManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
break;
case R.id.btnDown:
//指定调节音乐的音频为减小,并显示音量图形
aManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
break;
default:
break;
}
}
};
//为按钮加入监听器
btnDown.setOnClickListener(listener);
btnPlay.setOnClickListener(listener);
btnUp.setOnClickListener(listener);
btnMute.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
//设置音乐静音
aManager.setStreamMute(AudioManager.STREAM_MUSIC, isChecked);
}
});
}
}

main.xml


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btnPlay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="播放"/>
<Button
android:id="@+id/btnUp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_below="@+id/btnPlay"
android:text="增大音量"/>
<Button
android:id="@+id/btnDown"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_below="@+id/btnUp"
android:text="减小音量"/>
<ToggleButton android:id="@+id/btnMute"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_below="@+id/btnDown"
android:textOn="关闭静音"
android:textOff="开启静音"/> </RelativeLayout>

Android开发之控制手机音频的更多相关文章

  1. Android开发之控制摄像头拍照

    如今的手机一般都会提供相机功能,有些相机的镜头甚至支持1300万以上像素,有些甚至支持独立对焦.光学变焦这些仅仅有单反才有的功能,甚至有些手机直接宣传能够拍到星星.能够说手机已经变成了专业数码相机.为 ...

  2. Android开发之获取手机SIM卡信息

    TelephonyManager是一个管理手机通话状态.电话网络信息的服务类.该类提供了大量的getXxx(),方法获取电话网络的相关信息. TelephonyManager类概述: 可用于訪问有关设 ...

  3. Android开发之控制Toast的开启与关闭

    开发这个程序之前先解释一下,为什么Toast信息提示框在显示一定时间后会自己主动消失?由于在Android系统中有一个Toast队列,系统会依次从这个队列中取出一个Toast,并显示它.在显示了指定时 ...

  4. AudioManager音频管理器控制手机音频实例

    import android.media.AudioManager;import android.media.MediaPlayer;import android.os.Bundle;import a ...

  5. Android开发_控制硬加速hardwareAccelerated

    控制硬加速 hardwareAccelerated也是一种优化的手段 从Android3.0 (API level11)开始,Android的2D显示管道被被设计得更加支持硬加速了.硬加速使用GPU承 ...

  6. Android开发——查询/卸载手机里的应用、应用图标创建

    1. 获取手机里的所有已安装的应用 以前写过一个SoftProviderUtil工具类,拿出来分享一个.通过PackageManager,不仅可以获取PackageName,判断此进程是否为系统应用, ...

  7. Android开发——查询/杀死手机里正在运行的进程

    0. 前言 以前有同学好像做过一个叫"自习君"的App,开启后自动检测用户这一天的自习时间,在学校里宣传广告还打了不少.其实实现原理非常简单,在SQlite数据库(也可以通过文件) ...

  8. 【原创】Android开发使用华为手机调试logcat没有应用输出信息

    输入 *#*#2846579#*#* 点击project Menu点击后台 1.设置logcat 2. Dump & Log",打开开关"打开Dump & Log& ...

  9. Android开发之华为手机无法看log日志解决方法(亲测可用华为荣耀6)

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985, 转载请说明出处. 在上家公司上班的时候,公司配了华为荣耀6的测试机,发现在eclipse下 无法查看 ...

随机推荐

  1. [Pulgin] 前端上传组件Plupload使用指南

    我之前写过一篇文章<文件上传利器SWFUpload使用指南>,里面介绍了上传组件SWFUpload的使用方法,但现在随着html5技术的逐渐推广和普及,再去使用以flash为上传手段的SW ...

  2. GObject调用父类函数

    最近在分析Gstreamer的代码时,发现GstPipeline中有如下代码: result = GST_ELEMENT_CLASS (parent_class)->change_state ( ...

  3. Java Break和continue实现goto功能

    continue实验 1 public class test { static int i =0; public static void main(String[] args) { lable1: w ...

  4. H3BPM子表的复制

    在做一个流程的时候,碰到了下面的表数据直接从上表中获取,并且为不可编辑状态,没有增加和删除行的按钮.一开始使用的是ComputationRule属性,但是有一项是日期空间,没有这个属性,不知道怎么处理 ...

  5. BZOJ 1951 Lucas定理+CRT

    思路: 枚举约数 套个裸的Lucas+CRT就完了... //By SiriusRen #include <cmath> #include <cstdio> using nam ...

  6. JDK和Cglib实现动态代理实例及优缺点分析

    Spring AOP使用的核心技术是动态代理,说到动态代理就不得不和设计模式中的代理模式联系起来,通过代理模式我们可以对目标类进行功能增强,在某个方法的执行前后增加一些操作,例如计算方法执行效率.打印 ...

  7. Sublime Text3 插件记录

    插件官网 其他插件安装之前,先安装 Package Control: 快捷键Ctrl+`或View > Show Console打开控制台. 输入以下 Python 代码,回车. import ...

  8. Python 之 基础知识(四)

    一.公共方法(列表.元组.字典以及字符串) 1.内置函数 cmp函数取消可以用比较运算符来代替,但是字典是无序的,故而不可以用比较运算符比较. 2.切片(列表.元组.字符串适用) 3.运算符 列表中直 ...

  9. 1350 Taxi Cab Scheme DAG最小路径覆盖

    对于什么是DAG最小路径覆盖以及解题方法在我的另外的博客已经有了.http://www.cnblogs.com/Potato-lover/p/3980470.html 此题的题意: 公交车(出租车)车 ...

  10. Dictionary 小知识

    Dictionary<string, string>是一个泛型 他本身有集合的功能有时候可以把它看成数组 他的结构是这样的:Dictionary<[key], [value]> ...