免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在听筒模式下am.setSpeakerphoneOn(false); setVolumeControlStream(AudioManager.STREAM_VOICE_CALL); am.setMode(AudioManager.MODE_IN_CALL); 我用Mediaplayer AudioTrack调节音量总是失败at.setStereoVolume(vol, vol); player.setVolume(vol,vol); 后来 决定用AudioManager来调节音量AudioManager可以修改系统Android系统的音量下面介绍几个AudioManager的几个音量调整方面的方法.首先是得到AudioManager实例:AudioManager am=(AudioManager)getSystemService(Context.AUDIO_SERVICE); 调整音量方法有两种,一种是渐进式,即像手动按音量键一样,一步一步增加或减少,另一种是直接设置音量值.1、渐进式public void adjustStreamVolume (int streamType, int direction, int flags) am.adjustStreamVolume (AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI); 解释一下三个参数第一个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 调整时显示音量条,就是按音量键出现的那个 2、直接设置音量值的方法:public void setStreamVolume (int streamType, int index, int flags) am.setStreamVolume(AudioManager.STREAM_MUSIC, am.getStreamMaxVolume(AudioManager.STREAM_MUSIC), AudioManager.FLAG_PLAY_SOUND); am.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL);/得到听筒模式的最大值 am.getStreamVolume(AudioManager.STREAM_VOICE_CALL);/得到听筒模式的当前值 第一个和第三个参数与上面的相同第二个参数是一个音量的int值,getStreamMaxVolume(int streamType)得到的是该类型音量的最大值,可以根据这个值计算你需要的音量,我这里直接调到最大.最后我的代码:package com.lp; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import Android.app.Activity; import Android.content.Context; import Android.media.AudioFormat; import Android.media.AudioManager; import Android.media.AudioTrack; import Android.os.Bundle; import Android.view.View; import Android.view.View.OnClickListener; import Android.widget.Button; import Android.widget.SeekBar; public class MainActivity5 extends Activity private Button play; private Button stop; private SeekBar soundValue; private AudioTrack at; private AudioManager am; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main_sk); am = (AudioManager)getSystemService(Context.AUDIO_SERVICE); play = (Button)findViewById(R.id.main_sk_play); stop = (Button)findViewById(R.id.main_sk_stop); soundValue = (SeekBar)findViewById(R.id.skbVolume); setVolumeControlStream(AudioManager.STREAM_VOICE_CALL); play.setOnClickListener(new OnClickListener() Override public void onClick(View v) if(am.isSpeakerphoneOn() am.setSpeakerphoneOn(false); /setVolumeControlStream(AudioManager.STREAM_VOICE_CALL); am.setMode(AudioManager.MODE_IN_CALL); System.out.println(am.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL); System.out.println(&); System.out.println(am.getStreamVolume(AudioManager.STREAM_VOICE_CALL); /am.setStreamVolume(streamType, index, flags) int bufferSizeInBytes = AudioTrack.getMinBufferSize(44100, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT); if(at=null) at = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 44100, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSizeInBytes, AudioTrack.MODE_STREAM); System.out.println(22222); /at.setStereoVolume(100f, 100f); at.setStereoVolume(0.7f, 0.7f);/设置当前音量大小 new AudioTrackThread().start(); else if(at.getPlayState()=AudioTrack.PLAYSTATE_PLAYING) System.out.println(111111111); else System.out.println(33333); at = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 44100, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSizeInBytes, AudioTrack.MODE_STREAM); new AudioTrackThread().start(); ); stop.setOnClickListener(new OnClickListener() Override public void onClick(View v) if(at.getPlayState()=AudioTrack.PLAYSTATE_PLAYING) try at.stop(); catch (IllegalStateException e) e.printStackTrace(); at.release(); am.setMode(AudioManager.MODE_NORMAL); ); / soundValue.setMax(100);/音量调节的极限 / soundValue.setProgress(70);/设置seekbar的位置值 soundValue.setMax(am.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL); soundValue.setProgress(am.getStreamVolume(AudioManager.STREAM_VOICE_CALL); soundValue.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() Override public void onStopTrackingTouch(SeekBar seekBar) / float vol=(float)(seekBar.getProgress()/(float)(seekBar.getMax(); / System.out.println(vol); / at.setStereoVolume(vol, vol);/设置音量 am.setStreamVolume(AudioManager.STREAM_VOICE_CALL, seekBar.getProgress(), AudioManager.FLAG_PLAY_SOUND); Override public void onStartTrackingTouch(SeekBar seekBar) / TODO Auto-generated method stub Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) / TODO Auto-generated method stub ); class AudioTrackThread extends Thread Override public void run() byte out_bytes = new byte44100; InputStream is = getResources().openRawResource(R.raw.start); int length ; try at.play(); catch (IllegalStateException e) e.printStackTrace(); try while(length = is.read(out_bytes)!=-1) /System.out.pri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 员工工位调整安排
- 电影产业园租赁合同
- 珠宝行业合同归档方案
- 危险品事故应急法规
- 校园道路铺设工程合同
- 水产加工鱼塘施工合同模板
- 建筑绿化工程劳务分包合同
- 商业综合体合同
- 旅游发展专项资金管理办法
- 建筑智能化交货期承诺书范本
- 江苏省徐州市铜山区2023-2024学年九年级上学期期中英语试卷(含答案解析)
- 大数据处理服务合同
- 河北省唐山市滦南县2024-2025学年七年级上学期10月期中数学试题
- 三年级体育下册 前滚翻(水平二)说课稿
- 2023-2024学年浙江省温州市鹿城区八年级(上)质检科学试卷(12月份)
- GB/T 44653-2024六氟化硫(SF6)气体的现场循环再利用导则
- 410th循环流化床锅炉本体化学清洗方案(HCL)
- 道路交通安全法律法规
- 2024秋期国家开放大学《政治学原理》一平台在线形考(形考任务四)试题及答案
- 积极准备迎战月考 课件高一上学期备战月考主题班会
- 外研版(2019) 选择性必修第四册 Unit 5 Into the Unknown Understanding ideas教案
评论
0/150
提交评论