- 浏览: 127440 次
文章分类
- 全部博客 (121)
- confluence (1)
- android (77)
- PHP (6)
- java (21)
- mysql (3)
- dos (1)
- 传感器 (2)
- 获取电话薄信息 (3)
- 正则表达式 (1)
- 网络 (1)
- 蓝牙 (1)
- 图片 (4)
- intent (3)
- 注意 (1)
- eclipce (1)
- plugins (1)
- dialog (4)
- zip (1)
- sd卡 (1)
- ui (1)
- Camera (1)
- draw (1)
- activity (2)
- launchMode (1)
- 安全 (1)
- Button (1)
- ImageTextButton (1)
- paint (1)
- network (1)
- popupwindow (1)
- jquery (1)
- ant (1)
- notifaction (1)
- Rating (1)
- ListView (3)
- editText (1)
- doc (1)
- jdk (1)
- animation (1)
- sign (1)
- 签名 (1)
- 广播 (1)
- textview (4)
- 删除线 (1)
- 城市列表 (1)
- IDE (1)
- Eclipse (1)
- pixels (2)
- px (1)
- 静默安装 (1)
- Android截屏 (1)
- eclipcetheme (1)
- scroll (1)
- ActivityGroup (1)
- sqlite (1)
- webview (3)
- PullToRefreshListView (1)
- cache (1)
- java引用 (1)
- 命名空间 (1)
- httpClient (1)
- 开源控件 (0)
- sms (1)
- 文字水平滚动 (1)
- 正则 (1)
- 理论知识 (1)
- 属性 (0)
- openfire (1)
- 面试 (1)
- 继承的优缺点 (1)
- PowerDesigner (1)
- 数字格式化 (1)
- andriod (1)
- webservice (1)
- 记录 (0)
- share (0)
- 开源 (1)
最新评论
本篇基于 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 布局代码:
Java代码:
程序类分别为:
1、viewHolder
界面上的所有控件和元素都在这里静态声明
package eoe.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 的方法,用来处理各自按钮点击所执行的不同事件和对图片的状态进行调整设置。以下把代码提供给大家:
Java代码:
package eoe.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;
@Override
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() {
@Override
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));
}
}
}
识别音频流
使用硬件音量按键来控制应用程序的音量
setVolumeControlStream(AudioManager.STREAM_MUSIC);
使用硬件播放控制按键来控制应用程序的音频播放
<receiver android:name=".RemoteControlReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
public class RemoteControlReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (KeyEvent.KEYCODE_MEDIA_PLAY == event.getKeyCode()) {
// Handle key press.
// 处理播放按键的消息
}
}
}
}
AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE);
...
// Start listening for button presses 开始 监 听
am.registerMediaButtonEventReceiver(RemoteControlReceiver);
...
// Stop listening for button presses 取消 监 听
am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);
< ?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>
发表评论
-
使用Android进行分享
2014-04-21 14:22 01.简单的分享文本 Intent sendIntent = ... -
android:descendantFocusability用法简析
2013-11-25 10:11 0开发中很常见的一个问题,项目中的listview不 ... -
Android 的应用程序的优先级和进程状态
2013-11-04 12:29 2237回收资源的时候,进 ... -
去掉listview顶部和底部阴影(高光部分)
2013-11-13 11:04 700/** * 去掉listview顶部和底部阴影(高光 ... -
Android的5个进程等级 .
2013-10-22 17:00 691来自:http://blog.csdn.net/ ... -
使用TextView 使用文字水平滚动
2013-09-26 15:12 647/** * * <b>功能名:< ... -
SMS研究(转)记录地址
2013-09-22 15:20 721拦截短信 作者:bingzhi更新于 07月26日访问(70 ... -
ListView 隐藏滚动条及基本属性
2013-09-09 22:25 1278由于这两天在做listView的东西,所以整理出来一些我个 ... -
android 编辑框过滤文本
2013-09-05 13:48 554public class EditOnKeyListener ... -
HttpClient The target server failed to respond
2013-09-04 17:50 14869关于HttpClient 出现 The target ser ... -
android webview的三种加载方式
2013-08-28 17:20 567//打开本包内asset目录下的index.html文件 ... -
TextView的一些高级显示
2013-08-20 10:41 4341. 自定义字体可 ... -
命名空间
2013-08-19 18:18 7601.需要在AndroidManifest.xml添加自己的 ... -
java 4种引用
2013-08-16 09:20 7121.强引用本章前文介绍的引用实际上都是强引用,这是使用最普遍 ... -
清除 webView 存在的缓存!
2013-08-15 17:27 794CookieSyncManager.createInstan ... -
使用 PullToRefreshListView 分页问题.
2013-08-15 12:05 2284使用PullToRefreshListView分页刷新问题, ... -
清除webview产生的缓存
2013-08-15 10:03 1548/** * 删除应用缓存(/data/data/包名/ ... -
读取assets或者raw目录下的sqlite数据库
2013-08-14 17:46 993public class DbManager { pr ... -
使用 ActivityGroup 加载多个Activity
2013-08-14 15:13 6941.mTabClassArray 数组中存放的是Activi ... -
监听 ScrollView 滑动到底部
2013-08-13 15:52 9481.给ScrollView添加 OnTouchListene ...
相关推荐
在Android平台上,调整系统...总结,Android系统音量和媒体音量的控制涉及到`AudioManager`类的使用,理解其API和音量类别是实现此功能的关键。通过源码分析和实际运行,开发者可以更直观地学习和掌握这一功能的实现。
unity开发apk,获取和设置Android系统底层音量值,C#方法可直接调用,不需要jar包。
2. **AudioManager**:Android系统提供的AudioManager类是处理音频输出的关键,它可以获取和设置各种音量级别。我们需要通过AudioManager获取当前的媒体音量和通话音量,并且可以设置新的音量值。 3. ** SeekBar**...
Android有多个音量流(Stream),如媒体音量、闹钟音量、铃声音量等,每个流有自己的独立调节和限制。开发者通常需要使用AudioManager类来操作这些音量流。 1. **AudioManager的使用**: - `getStreamMaxVolume...
例如,你可以用以下代码改变媒体音量: ```java AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_...
最近项目里有个功能点,需要使用定制seekbar调节媒体音量,不能使用【按物理音量上下键】弹出的系统dialog做音量调节。我需要继承AlertDialog,设置自己的内容view,重写onKeyDown方法,设置dialog的位置等...... 写...
本文将详细介绍如何通过编程方式获取Android系统中的不同类型的音量。 #### 二、基本概念介绍 在深入探讨之前,我们先了解一些基本概念: - **AudioManager**:这是Android提供的用于管理音频流的类,开发者可以...
在Android设备上,音量控制主要分为五个不同的类别:系统音量、通话音量、铃声音量、媒体音量以及提示声音。下面将详细解释这些音量类型以及如何进行调控。 1. **系统音量**:系统音量主要控制通知、键盘点击声、...
在Android中,音量控制涉及到多个级别,如媒体音量、闹钟音量、铃声音量和系统音量等。这些音量级别可以通过系统的音量对话框进行调整,也可以通过硬件音量键实现快速调整。而仿iOS音量调节的效果主要关注的是视觉...
在IT开发领域,尤其是涉及到多媒体应用或者用户交互的软件中,获取和设置系统音量是一项基本但至关重要的功能。这个开发实例"实例402——获取和设置系统音量"显然是一个示例代码,旨在帮助开发者了解如何在不同平台...
首先,我们理解音量控制器在Android系统中的核心功能是调节设备的音频输出级别,包括媒体音量、铃声音量、闹钟音量等。接下来,我们将详细讲解实现这个自定义音量控制器的关键步骤。 1. **创建自定义View** 首先,...
在这个“unity通话媒体音量demo”中,我们聚焦于如何在Unity环境中集成Youme Talk SDK,以便在进行语音通话时,能够通过音量按键控制媒体和通话的音量。这对于提供优质的用户体验至关重要,特别是对于那些需要在游戏...
最近项目里有个功能点,需要使用定制seekbar调节媒体音量,不能使用【按物理音量上下键】弹出的系统dialog做音量调节。我需要继承AlertDialog,设置自己的内容view,重写onKeyDown方法,设置dialog的位置等...... 写...
Android系统提供了多种音量级别,如媒体音量、通话音量、闹钟音量、通知音量等。这些音量控制可以通过系统的AudioManager服务进行操作。开发者可以调用AudioManager的setStreamVolume方法来设置特定流类型的音量,...
Android系统提供了多种音量级别,包括媒体音量、通话音量、闹钟音量和通知音量等。开发者可以通过AudioManager类来访问和修改这些音量级别。例如,使用`AudioManager.adjustVolume()`方法可以动态调整音量,`...
Android系统并没有直接提供获取实时录音音量的方法,但可以通过监听音频流的音频数据来间接获取。一种常见的方法是利用AudioRecord类,它是直接访问音频硬件的接口。首先创建AudioRecord实例,设置音频源、采样率、...
在Android系统中,音量控制涉及到`AudioManager`类,它是处理音频输出和输入的主要接口。`AudioManager`提供了多种方法来调整不同类型的音量,如媒体音量、铃声音量、闹钟音量和系统音量等。这些音量级别分别对应于`...
在Android系统中,音量控制是一项重要的功能,它允许用户调整设备的各种音频输出,如媒体音量、铃声音量、闹钟音量等。小米UI是小米公司为Android设备定制的用户界面,它在原生Android系统的基础上进行了一系列优化...
在Android系统中,音量控制是一项重要的功能,它涉及到用户对设备各种音频输出的管理,如媒体音量、铃声音量、闹钟音量以及通话音量等。本项目聚焦于模拟点击系统音量按键,这在某些场景下非常有用,比如在自动化...
6. **ExoPlayer**: 虽然不是Android系统自带的组件,但ExoPlayer是由Google开发的一个强大且灵活的媒体播放器库,它比MediaPlayer更适合复杂的应用场景,如自定义渲染、多轨音频、DASH和HLS流媒体支持等。...