Articles of audio

如何知道MediaRecorder是否处于运行状态?

我写了一个代码来logging使用MediaRecorder的通话对话audio。 如何知道MediaRecorder是否处于运行状态,停止录制。 喜欢 boolean running; MediaRecorder mr; //what should i assign to running? if(running){ mr.stop() } 上面的代码只是一个例子..如果你不明白我的问题,请告诉我..我会用实际的代码清楚地解释.. 我想知道的是“MediaRecorder在哪个状态?” – >录制/发布/准备/初始/等。

Android中的audio编辑

我正在寻找一些audio编辑库,可以帮助将两个audio文件混合成一个audio文件。 我不是说连接文件一个接一个。 我想在第一个文件的随机查找时间的中间混合第二个audio文件如下。 轨道T1:1111111111轨道T2:2222 预计产出:11112222111111 我想为Android应用程序实现这一点。

解码audio文件并重新编码为所需的PCM格式:44,100 kHz,2个通道,16位

我想将audio文件解码为原始PCM数据,将其stream式传输到本地networking中的播放设备。 我使用了API级别为16的新MediaExtractor和MediaCodec类。 该设备要求PCM数据在44100kHz,具有2个通道和16位样本大小 。 只要input文件大致符合这些要求,这工作正常。 但是,无论何时我正在解码一个MP3文件,例如,使用32,000 kHz的采样率,也许只有一个通道,那么我不会从MediaCodec类获得所需的输出。 看来我不能指定MediaCodec类的输出格式 。 所以我决定实例化另一个MediaCodec对象,将原始数据重新编码成我想要的格式。 根据Android 4.1 支持的媒体格式列表,Android支持编码PCM / Wave。 但是, 我无法创build一个MediaCodec对象,编码PCM / Wave 。 我试着将各种MIMEtypes传递给MediaCodec.createEncoderByType(type); 但是我总是以IOExceptionexception失败: java.io.IOException: Failed to allocate component instance at android.media.MediaCodec.native_setup(Native Method) at android.media.MediaCodec.<init>(MediaCodec.java:210) at android.media.MediaCodec.createEncoderByType(MediaCodec.java:194) [..] 有没有人能够成功地创build一个MediaCodec实例,编码为PCM / Wave,并可以提供一个工作的例子?

如何使用MediaPlayer和MediaController为Android实现audio播放器?

我想创build一个Android应用程序,这是一个互联网广播电台的客户端。 我希望它看起来本机Android? 但即时通讯与Android API的逻辑和文件混淆。 我得到的是我需要MediaPlayer和MediaController类。 我是对的,有没有Android的audio播放器的好例子? 特别是,我非常感兴趣如何一起使用MediaPlayer和MediaController类。 UPD: 最后我得到了代码,这正是我想要的: Intent i = new Intent(Intent.ACTION_VIEW); Uri u = Uri.parse(%file_uri%)); i.setData(u); startActivity(i);

我想在android中检查语音的响度

我正在开发一个应用程序,我必须检测声音的响度。 意味着一些手机上的大喊,它会显示在屏幕上的响度水平。 让我知道任何合适的API。 我可以在android中使用哪个API。 提前致谢。 普拉

不断检查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(); } }

使用-noaudio选项运行Android模拟器会返回“qemu-system-i386.exe:-audio:invalid option”

我正在运行Windows 10,64位Android Studio 2.2.2。 当从Android SDK的AVDpipe理器创buildAVD时,我看不到一个完全禁用audio(input和输出)的选项。 我正在使用安卓工具25.2.2版本的Android SDK)。 在旧的AVDpipe理器中,我记得在AVD上完全禁用audio的选项存在。 当我想要创build一个批处理脚本时,要使用-noaudio选项运行,正如谷歌官方从命令行页面控制模拟器中所提到的那样,我以emulator.exe -avd Nexus_4 -noaudio运行命令,但是它会抛出错误 qemu-system-i386.exe: -audio: invalid option Android模拟器对话框打开,进度条不确定,AVD根本不启动。 永远保持加载。 任何帮助表示赞赏。

AudioRecord和AudioTrack延迟

我试图开发一个应用程序,如android的iRig,所以第一步是捕捉麦克风input,并在同一时间播放它。 我有它,但问题是,我得到一些延迟,使这种无法使用,如果我开始处理缓冲区,我怕它会得到完全无法使用。 我使用这样的audiorecord和audiotrack: new Thread(new Runnable() { public void run() { while(mRunning){ mRecorder.read(mBuffer, 0, mBufferSize); //Todo: Apply filters here into the buffer and then play it modified mPlayer.write(mBuffer, 0, mBufferSize); //Log.v("MY AMP","ARA"); } 而通过这种方式: // ==================== INITIALIZE ========================= // public void initialize(){ mBufferSize = AudioRecord.getMinBufferSize(mHz, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT); mBufferSize2 = AudioTrack.getMinBufferSize(mHz, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT); mBuffer = new […]

Android通知只能播放声音

我在我的活动中有一个倒数计时器,当它达到零时,我发送一个通知状态栏,它也播放自定义的wav文件来提醒用户。 我只想要状态栏通知出现,如果用户不在当时使用的应用程序,但我仍然想播放wav文件,无论是否可见的定时器应用程序。 是否有可能使Android通知只播放audio警报? 我已经尝试使用MediaPlayer播放wav文件,而是使用自己的音量设置,而不是常规的通知音量,所以如果您的媒体音量低,通知声音播放也是我不想要的低音量。 我希望声音与其他通知的音量相同。 我使用这个: http : //developer.android.com/guide/topics/ui/notifiers/notifications.html 并提供这样的声音: notification.sound = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notifysnd);

如何使用低延迟的Androidaudio

问题: 正如您可能听说过的,Android不提供低延迟audioAPI。 我的意思是低延迟的audio,你应该能够从麦克风获得audio信号,并播放声音,没有太多的时间间隔(例如,5-7毫秒) 我已经尝试了老的Java(与AudioRecord和AudioTrack)和“新的”OpenSL ES。 他们是可怕的,使应用程序无法使用。 这个问题在这里有很好的logging。 顺便说一句,iOS API可以产生大约5-7毫秒的延迟。 寻找解决方法: 但我正在尝试做低延迟audio。 像这样的答案描述。 “但是,我只能通过编写我自己的代码来完成这个工作,这个代码在内部进行了混音,并且只有在播放最终的混音输出时才访问低级audio播放API,在.Net中播放声音的高级方法小巧的框架在理论上是复音的能力,但实际上他们工作可怕(大量的小故障,口吃和扭曲)“。 这对Android有意义吗? 答案是令人沮丧的。 所以我的问题。 Android真的没有办法实现10毫秒的audio延迟? 说实话,我很快就不期待一个解决办法,只希望一个伟大的思想家能够回答这个问题。