本篇基于 Android API 中的 AudioManager 作讲述,使看过本篇的读者可以迅速的掌握这个类的实现过程。下面是本篇大纲: * 1、认识 AudioManager * 2、AudioManager 主要方法介绍 * 3、程序逻辑实现过程 1、认识 AudioManager AudioManager 类位于 android.Media 包中,该类提供访问控制音量和钤声模式的操作。 2、AudioManager 主要方法介绍 由于 AudioManager 该类方法过多,这里只讲述几个比较常用到的方法: * 方法:adjustVolume(int direction, int flags) 解释:这个方法用来控制手机音量大小,当传入的第一个参数为 AudioManager.ADJUST_LOWER 时,可将音量调小一个单位,传入 AudioManager.ADJUST_RAISE 时,则可以将音量调大一个单位。 * 方法:getMode() 解释:返回当前音频模式。 * 方法:getRingerMode() 解释:返回当前的铃声模式。 * 方法:getStreamVolume(int streamType) 解释:取得当前手机的音量,最大值为7,最小值为0,当为0时,手机自动将模式调整为“震动模式”。 * 方法:setRingerMode(int ringerMode) 解释:改变铃声模式 3、程序逻辑实现过程 界面上设置了一个图片,表示当前铃声状态,一个进度条表示当前音量大小,五个图片按钮,用来表示增加/减小音量、普通模式、静音模式和震动模式。下面是界面的 XML 布局代码: < ?xml version="1.0" encoding="utf-8"?> < AbsoluteLayout android:id="@+id/layout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/white" xmlns:android="http://schemas.android.com/apk/res/android" > < TextView android:id="@+id/myText1" android:layout_width="wrap_content" android:layout_height="wrap_content" ? android:text="@string/str_text1" android:textSize="16sp" android:textColor="@drawable/black" android:layout_x="20px" android:layout_y="42px" > < /TextView> < ImageView android:id="@+id/myImage" android:layout_width="48px" android:layout_height="48px" android:layout_x="110px" android:layout_y="32px" > < /ImageView> < TextView android:id="@+id/myText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/str_text2" android:textSize="16sp" android:textColor="@drawable/black" android:layout_x="20px" android:layout_y="102px" > < /TextView> < ProgressBar android:id="@+id/myProgress" style="?android:attr/progressBarStyleHorizontal" android:layout_width="160dip" android:layout_height="wrap_content" android:max="7" android:progress="5" android:layout_x="110px" android:layout_y="102px" > < /ProgressBar> < ImageButton android:id="@+id/downButton" android:layout_width="100px" android:layout_height="100px" android:layout_x="50px" android:layout_y="162px" android:src="@drawable/down" > < /ImageButton> < ImageButton android:id="@+id/upButton" android:layout_width="100px" android:layout_height="100px" android:layout_x="150px" android:layout_y="162px" android:src="@drawable/up" > < /ImageButton> < ImageButton android:id="@+id/normalButton" ? android:layout_width="60px" android:layout_height="60px" android:layout_x="50px" android:layout_y="272px" android:src="@drawable/normal" > < /ImageButton> < ImageButton android:id="@+id/muteButton" android:layout_width="60px" android:layout_height="60px" android:layout_x="120px" android:layout_y="272px" android:src="@drawable/mute" > < /ImageButton> < ImageButton android:id="@+id/vibrateButton" android:layout_width="60px" android:layout_height="60px" android:layout_x="190px" android:layout_y="272px" android:src="@drawable/vibrate" > < /ImageButton> < /AbsoluteLayout> 程序类分别为: 1、viewHolder 界面上的所有控件和元素都在这里静态声明 package com.terry; import android.media.AudioManager; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ProgressBar; public class viewHolder { public static ImageButton downButton; public static ImageButton upButton; public static ImageButton normalButton; public static ImageButton muteButton; public static ImageButton vibrateButton; public static ProgressBar myProgressBar; public static ImageView myImageView; public static AudioManager audiomanage; } 2、AudioManagerActivity 程序入口处,和主要逻辑代码的处理,程序开头以 (AudioManager)getSystemService(AUDIO_SERVICE); 取得 AudioManager 对象。然后再利用该对象来对铃声进行调整。声明了一个返回 ImageButton 的方法,用来处理各自按钮点击所执行的不同事件和对图片的状态进行调整设置。以下把代码提供给大家: package com.terry; ? import android.app.Activity; import android.media.AudioManager; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ProgressBar; public class AudioManagerActivity extends Activity { //音量变量 private int volume=0; //声音模式 private int mode; /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findview(); //通过getStreamVolume 获得当前音量大小 volume=viewHolder.audiomanage.getStreamVolume(AudioManager.STREAM_RING); //把当前音量的值 设置给进度条 viewHolder.myProgressBar.setProgress(volume); //得到当前的声音模式 mode=viewHolder.audiomanage.getRingerMode(); setImageState(); viewHolder.downButton=btnListener(viewHolder.downButton); viewHolder.upButton=btnListener(viewHolder.upButton); viewHolder.muteButton=btnListener(viewHolder.muteButton); viewHolder.normalButton=btnListener(viewHolder.normalButton); viewHolder.vibrateButton=btnListener(viewHolder.vibrateButton); } //找到控件 void findview(){ viewHolder.downButton=(ImageButton)findViewById(R.id.downButton); viewHolder.upButton=(ImageButton)findViewById(R.id.upButton); viewHolder.muteButton=(ImageButton)findViewById(R.id.muteButton); viewHolder.normalButton=(ImageButton)findViewById(R.id.normalButton); viewHolder.vibrateButton=(ImageButton)findViewById(R.id.vibrateButton); viewHolder.myImageView=(ImageView)findViewById(R.id.myImage); ? viewHolder.myProgressBar=(ProgressBar)findViewById(R.id.myProgress); viewHolder.audiomanage=(AudioManager)getSystemService(AUDIO_SERVICE); } //按钮 的单击事件 ImageButton btnListener(ImageButton b){ b.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.downButton: viewHolder.audiomanage.adjustVolume(AudioManager.ADJUST_LOWER, 0); volume=viewHolder.audiomanage.getStreamVolume(AudioManager.STREAM_RING); viewHolder.myProgressBar.setProgress(volume); mode=viewHolder.audiomanage.getRingerMode(); setImageState(); break; case R.id.upButton: viewHolder.audiomanage.adjustVolume(AudioManager.ADJUST_RAISE, 0); volume=viewHolder.audiomanage.getStreamVolume(AudioManager.STREAM_RING); viewHolder.myProgressBar.setProgress(volume); mode=viewHolder.audiomanage.getRingerMode(); setImageState(); break; case R.id.muteButton: viewHolder.audiomanage.setRingerMode(AudioManager.RINGER_MODE_SILENT); volume=viewHolder.audiomanage.getStreamVolume(AudioManager.STREAM_RING); viewHolder.myProgressBar.setProgress(volume); viewHolder.myImageView.setImageDrawable(getResources().getDrawable(R.drawable.mute)); break; case R.id.normalButton: viewHolder.audiomanage.setRingerMode(AudioManager.RINGER_MODE_NORMAL); volume=viewHolder.audiomanage.getStreamVolume(AudioManager.STREAM_RING); viewHolder.myProgressBar.setProgress(volume); viewHolder.myImageView.setImageDrawable(getResources().getDrawable(R.drawable.normal)); break; case R.id.vibrateButton: viewHolder.audiomanage.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); ? volume=viewHolder.audiomanage.getStreamVolume(AudioManager.STREAM_RING); viewHolder.myProgressBar.setProgress(volume); viewHolder.myImageView.setImageDrawable(getResources().getDrawable(R.drawable.vibrate)); break; } } }); return b; } //设置图片状态 void setImageState(){ if(mode==AudioManager.RINGER_MODE_NORMAL) { viewHolder.myImageView.setImageDrawable(getResources().getDrawable(R.drawable.normal)); } else if(mode==AudioManager.RINGER_MODE_SILENT) { viewHolder.myImageView.setImageDrawable(getResources().getDrawable(R.drawable.mute)); } else if(mode==AudioManager.RINGER_MODE_VIBRATE) { viewHolder.myImageView.setImageDrawable(getResources().getDrawable(R.drawable.vibrate)); } } }
详细解决方案
Android 施用 AudioManager 类控制音量
热度:38 发布时间:2016-05-01 18:33:19.0
相关解决方案
- android 读取byte[]中的元素解决方案
- android 标题栏兑现方式
- android 中Activity向BroadcastReceiver发送数据,该怎么解决
- Android 4.0 为什么模拟器老是提示小弟我谷歌拼音输入法已停止
- android:getSharedPreferences() 这是哪个类的方法解决思路
- android 怎么判断一个程序是否联网
- android 大量数据按周分组,该如何解决
- android RadioButton如何设置默认选中
- ksoap2-android-这个包,连接webService怎么设置超时
- android 怎么重新设置锚点
- android UI界面设计解决方案
- android 图片对象获取的有关问题
- android 怎么调用淘宝支付宝接口
- Android 沿袭InputMethodService自定义输入法
- android 关于服务连接的疑义
- android 两个activity如何通信
- android 怎么实现对view的放大和缩小
- android 教程解决方法
- android ID,该如何处理
- 准备复习2-3个月,看java+android,请问有经验者,怎么看效果最好》
- android UI线程与AsyncTask的有关问题
- android(java)中的java.net能不能和c#的system.net.sockets进行tcp通信,该如何解决
- android ListView 中的onItemClick Intent 没法跳转
- android(java) 中文乱码的有关问题
- c#c++,android,ios(iphone),php,java视屏课程 散分
- android Post文件到ASP.NET的有关问题,能收到参数收不到文件
- RIM 替 Android 开发者提供免费的 PlayBook!2月13日前
- android 动态设立控件高度
- Android test project 编译方法
- android -相机使用教程(1)解决方法