android音量条——AudioManager和SeekBar应用
来源:互联网 发布:九阴绝学披风升级数据 编辑:程序博客网 时间:2024/04/29 18:32
android音量条——AudioManager和SeekBar应用
本文分为以下几部分:
java代码
XML布局
运行效果
AudioManager类
SeekBar
代码
XML代码
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.administrator.voice.MainActivity"> <TextView android:id="@+id/vioce" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> <SeekBar android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/vioce" android:layout_marginTop="68dp" android:id="@+id/seekBar" android:layout_alignParentStart="true" /></RelativeLayout>
MainActivity的代码:
public class MainActivity extends AppCompatActivity { private SeekBar SoundseekBar; private AudioManager audioManager; private TextView vioce; private MyVolumeReceiver mVolumeReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);//获取AudioManager服务 audioManager.setMode(AudioManager.RINGER_MODE_NORMAL);//设置声音模式 SoundseekBar = (SeekBar) findViewById(R.id.seekBar); vioce = (TextView) findViewById(R.id.vioce); int MaxSound = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);//获取系统音量最大值 int viocesize = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);//获取当前系统音量 SoundseekBar.setMax(MaxSound);//设置进度条的最大值 SoundseekBar.setProgress(viocesize);/设置进度条滑块的初始值 vioce.setText(String.valueOf(viocesize));//显示当前的音量值 //设置监听 SoundseekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (fromUser) { int SeekPosition = seekBar.getProgress(); audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, SeekPosition, 0); } vioce.setText(String.valueOf(progress)); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); myRegisterReceiver();//接收广播 } private void myRegisterReceiver() { mVolumeReceiver = new MyVolumeReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction("android.media.VOLUME_CHANGED_ACTION"); registerReceiver(mVolumeReceiver, filter); }//接收系统音量改变的广播 private class MyVolumeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //如果音量发生变化则更改seekbar的位置 if (intent.getAction().equals("android.media.VOLUME_CHANGED_ACTION")) { int currVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);// 当前的媒体音量 SoundseekBar.setProgress(currVolume); } } }}
运行效果图
运行出来的效果是这样。
AudioManager类
AudioManager 类位于 android.Media 包中,该类提供访问控制音量和钤声模式的操作
以下分别是AudioManager设置声音模式和调整声音大小的方法。
如何获取声音管理器:
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
里面主要的方法:
A、设置声音模式
//声音模式
AudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
//静音模式
AudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
//震动模式
AudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
B、调整声音大小
//减少声音音量
AudioManager.adjustVolume(AudioManager.ADJUST_LOWER, 0);
//调大声音音量
AudioManager.adjustVolume(AudioManager.ADJUST_RAISE, 0);
(当传入的第一个参数为 AudioManager.ADJUST_LOWER 时,可将音量调小一个单位,传入AudioManager.ADJUST_RAISE 时,则可以将音量调大一个单位。)
getMode()获取音频模式
getRingerMode()获取铃声震动模式
AudioManager
public void setStreamMute (int streamType, boolean state)
静音或不静音音频流。
静音命令被保护以免客户端进程死亡:若具有流上的活动静音请求的进程死亡,这个流会自动取消静音。
对于给定的流,静音请求是累计的:AudioManager会从一个或多个客户端接收数个静音请求,只有当接收到相同数目的取消静音请求时流才会取消静音。
为了更好的用户体验,应该程序必须在onPause()中取消已静音流,若合适在onResume()中再次静音
这个方法只能用于代替音频设置的平台范围管理应用程序或主要电话应用程序。
参数
streamType 欲静音/取消静音的流。
state 请求静音状态:若为true,静音;若为false,取消静音。
常见的方法和参数的含义
方法:adjustStreamVolume(int streamType, int direction, int flags)
streamType为铃声类型,例如:AudioManager.STREAM_VOICE_CALL、AudioManager.STREAM_SYSTEM等,direction当传入的第一个参数为 AudioManager.ADJUST_LOWER 时,可将音量调小一个单位,传入 AudioManager.ADJUST_RAISE 时,则可以将音量调大一个单位。flags为标志位。
方法:getMode()
解释:返回当前音频模式。例如:MODE_NORMAL, MODE_RINGTONE, MODE_IN_CALL or MODE_IN_COMMUNICATION
方法:getRingerMode()
解释:返回当前的铃声模式。例如 RINGER_MODE_NORMAL, RINGER_MODE_SILENT, or RINGER_MODE_VIBRATE.
方法:getStreamVolume(int streamType)
解释:取得当前手机的音量,最大值为7,最小值为0,当为0时,手机自动将模式调整为“震动模式”。
方法:setStreamVolume(int streamType, int index, int flags)
解释:改变铃声音量,解释同1,index为声音大小。
方法:setMode(int mode)
解释:改变音频模式。见get方法
方法:setRingerMode(int ringerMode)
解释:改变铃声模式。见get方法
streamType常用:
STREAM_ALARM 警报
STREAM_MUSIC 音乐回放即媒体音量
STREAM_NOTIFICATION 窗口顶部状态栏Notification,
STREAM_RING 铃声
STREAM_SYSTEM 系统
STREAM_VOICE_CALL 通话
STREAM_DTMF 双音多频,拨号键的声音
direction,是调整的方向,增加或减少,可以是:
ADJUST_LOWER 降低音量
ADJUST_RAISE 升高音量
ADJUST_SAME 保持不变,这个主要用于向用户展示当前的音量
flags,是附加参数:
FLAG_PLAY_SOUND 调整音量时播放声音
FLAG_SHOW_UI 调整时显示音量条,就是按音量键出现的界面
FLAG_REMOVE_SOUND_AND_VIBRATE 无振动无声音
FLAG_ALLOW_RINGER_MODES Whether to include ringer modes as possible options when changing volume.
FLAG_VIBRATE Whether to vibrate if going into the vibrate ringer mode
SeekBar
@Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // 触发操作,拖动 } @Override public void onStartTrackingTouch(SeekBar seekBar) { // 表示进度条刚开始拖动,开始拖动时候触发的操作 } @Override public void onStopTrackingTouch(SeekBar seekBar) { // 停止拖动时候 }
最后
=,=就这些了。。。
- android音量条——AudioManager和SeekBar应用
- android调节音量——AudioManager的应用
- android调节音量——AudioManager的应用
- android调节音量——AudioManager的应用
- Android 利用seekbar结合AudioManager调节系统音量
- 【Android应用实例之五】调节播放器音量——AudioManager的应用
- Android应用实例之调节播放器音量——AudioManager的应用
- android开发笔记之多媒体—AudioManager(控制音量)
- android audioManager获取音量
- Android--AudioManager控制音量
- android音量控制AudioManager
- android audioManager获取音量
- Android组件08—拖动条SeekBar和RatingBar
- Android——SeekBar(进度、音量大小的控件)
- Android通过按钮和进度条实现音量调节(AudioManager)
- android AudioManager 修改音量参考
- Android音量seekbar制作
- Android音量seekbar制作
- PHP 常用函数 技巧方法集合 实例 运用篇
- 用火狐浏览器的firbug调试
- 什么是重构
- WebView的使用
- 获取js文件后面的参数
- android音量条——AudioManager和SeekBar应用
- iOS UILabel显示html标签
- 大数加法(C语言)#include<stdio.h> #include<stdlib.h> #include<string.h> char A[10005]; char B[10005]; int
- struts1.2中表单标签的应用---(form及text使用)源码解析
- 文本分类(五):使用LDA进行文本的降维---提特征
- 基于zookeeper简单实现分布式锁
- Android SDK更新后报错 "Parsing Data for android-24 failed"
- Linux基础命令记录
- 给apk加系统签名