Articles of android audiomanager

增加录制Android AudioRecord的音量

我正在使用AudioRecord和跛脚logging麦克风input到一个MP3样品12秒。 audio是预期的录音机,但我意识到音量太低。 有没有办法增加录音的音量?

不断检查Android服务中的音量变化

我写了这段代码,显然是有缺陷的。 我如何去创build一个服务,将不断检查音量的变化? 关键听众不能在服务中使用,请不要使用音量键监听器发表答案。 我的代码是错误的,因为我给了while循环的虚拟条件。 什么是我的服务检查音量变化,而不是崩溃的条件? 它不能是isScreenOn()因为在听音乐和屏幕closures时音量可以改变。 码 AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE); int currentVolume = audio.getStreamVolume(AudioManager.STREAM_RING); int newVolume=0; while(1==1) { newVolume = audio.getStreamVolume(AudioManager.STREAM_RING); if(currentVolume!=newVolume) { Toast.makeText(this, "Volume change detected!", Toast.LENGTH_LONG).show(); } }

使用现有的MediaPlayer更改audio播放的数据源?

我试图使用相同的媒体播放器,但更改数据源。 这是我想要做的: private MediaPlayer mMediaPlayer; public void pickFile1() { initMediaPlayer("myfile1.mp3"); } public void pickFile2() { initMediaPlayer("myfile2.mp3"); } private void initMediaPlayer(String mediafile) { // Setup media player, but don't start until user clicks button! try { if (mMediaPlayer == null) { mMediaPlayer = new MediaPlayer(); } else { mMediaPlayer.reset(); // so can change data source etc. […]

如何获得Android的当前铃声?

我发现了很多例子如何得到默认的铃声。 类似的东西: Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); Ringtone ringtone = RingtoneManager.getRingtone(getApplicationContext(), alert); ringtone.setStreamType(AudioManager.STREAM_RING); ringtone.play(); 但是我想获得用户设置的实际当前铃声。

使用AudioTrack与AudioManager setSpeakerphoneOn

我正在使用AudioTrack播放通过UDP套接字收到的声音。 我听到很多声音,所以我决定使用AudioManager。 但是,AudioManager改变了超出应用程序界限的声音路由。 以下是我正在使用的代码。 m_amAudioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); m_amAudioManager.setMode(AudioManager.MODE_IN_CALL); m_amAudioManager.setSpeakerphoneOn(false); 这个代码的问题是,当我closures应用程序并启动音乐播放器时,声音来自前置扬声器而不是后置扬声器,我无法改变它。 要解决此问题,我决定在closures我的应用程序时添加以下行。 m_amAudioManager.setSpeakerphoneOn(true); 但是,这条线的问题是,当我接到一个电话(普通电话),默认情况下扬声器打开。 我真的需要帮助。

扬声器音量(报警)在耳机插入时减less

我试图通过扬声器通过最大音量的报警声道播放报警声。 为此,我正在使用AudioManager和MediaPlayer。 如果我插入耳机,警报仍然通过扬声器播放,但通过扬声器播放的警报音量急剧下降,无法达到我的目的。 有没有办法来防止这种减less量? 我使用的代码是这样的: public void startAlarmSound() { audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); audioManager.setSpeakerphoneOn(false); audioManager.setStreamVolume(AudioManager.STREAM_ALARM, audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM), 0); if (!alreadyPlaying) playAlarmSound(); alreadyPlaying = true; } private void playAlarmSound() { mediaPlayer = new MediaPlayer(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mediaPlayer.start(); } }); try { mediaPlayer.setDataSource(this, Uri.parse("android.resource://com.mystuff.mine/" + R.raw.alarm_sound)); mediaPlayer.prepare(); } catch (IOException […]

弃用AudioManger.setStreamMute的替代方法?

AudioManger.setStreamMute现在已经被api 23弃用了,最好使用AudioManager.adjustStreamVolume和AudioManager.ADJUST_MUTE. 我的问题是,这种标志只支持api 23,而我的应用程序是最低api 16。 有没有其他的方法来静音整个系统? 如果没有,为什么谷歌弃用此方法?

Android:从片段调用活动

我在一个活动中使用片段。 我正在使用MediaRecorder进行录音。 我有两个部分的活动。 第一本身将列出logging文件的活动。 在右侧,当selectlogging新文件时,将调用AudioRecording Activity。 当select任何列出的文件时,我正在使用AudioPlayer播放录制的文件。 我在这里能够将活动转换为片段,但是当我按下停止它正在终止应用程序。 请任何人都可以回答。 我的audiorecorder工作正常,当我用它作为简单的活动。 任何解决scheme,如果我可以在该片段或类似的东西中调用该活动。 如果有人知道,请帮助我。

什么是Android API获取连接的audio设备列表?

我使用下面添加的代码来获取Android设备的连接audio设备。 使用AudioManager API方法getDevices()并获得与耳机,扬声器,耳机等连接设备的结果。 但是这个getDevices()方法从android api level 23(Marshmallow)开始是可用的。 但是我的应用程序应该支持api level 21(Lollipop)。 请任何人都可以让我知道替代API获取Android设备可用的audio设备。 代码与API级别23一起使用。 AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { AudioDeviceInfo[] adi = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS); } 请帮助我提供一种方法来获取运行Android操作系统版本低于棉花糖(API级别23)连接的audio设备。

Android:振铃模式改变为静音不会阻止手机震动

我试图通过使用下面的代码行来调用传入呼叫时,将电话的振铃模式更改为RINGER_MODE_SILENT。 AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE); am.setRingerMode(AudioManager.RINGER_MODE_SILENT); 虽然手机停止振铃,但它继续振动,虽然RINGER_MODE_SILENT的文件说,它也应该停止振动。 我正在使用SDK 1.6 更新: 由于我还没有find解决scheme,我试图手动停用振动设置。 am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF ); 但是这也不能阻止电话呼入时的电话forms振动。 有任何想法吗? 更新2: 今天,我试图通过振动对象取消振动来解决这个问题。 Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); vib.cancel(); 再次,没有成功。 现在我已经没有想法,问自己是否有可能停止振动。 更新3: 当我重读Vibrator类的文档时,我发现了另一个有趣的事实。 该文件说: “如果你的程序退出了,你开始的任何震动都将停止。” 这听起来像是振动与启动它的过程相关联,并且不能从另一个过程访问。