Articles of audio

在Android浏览器中使用HTML5播放audio

我想在Android浏览器中播放audio,使用html5 <audio>标签。 它在iPhone浏览器中正常工作,但不在Android中。 我正在使用Android虚拟设备4.0.3 。 有谁知道为什么? Android来源: webView.loadUrl("file:///android_asset/www/test.html"); HTML文件: <audio controls="controls" format="mp3"> <source src="achievement.mp3" /> </audio> (我听不到有<embed>和<object>标签的audio)

Android:使用WebView播放资产声音

我尝试从用户点击应用程序的WebView上的标记时从资源文件夹播放声音。 我发现我可以使用一个扩展WebViewClient的新类来检测链接的扩展,如果它是一个mp3文件,它可以通过默认的audio播放器播放它。 但是我希望它能在活动中发挥作用,而不必开始新的活动。 我使用了以下链接作为参考: Webview中的声音和使用Uri或资产中的文件创buildMediaPlayer时出错 但它没有工作。 我试着用下面的代码来做到这一点: package com.rangga.test.webview.sound; import android.content.Intent; import android.content.res.AssetFileDescriptor; import android.media.MediaPlayer; import android.net.Uri; import android.webkit.WebView; import android.webkit.WebViewClient; public class MyWebViewClient extends WebViewClient{ public MediaPlayer mp; @Override public boolean shouldOverrideUrlLoading(WebView view, String url){ if(url.endsWith(".mp3")){ mp = new MediaPlayer(); AssetFileDescriptor afd = getAssets().openFd(url); mp.setDataSource(afd.getFileDescriptor()); mp.start(); return true; }else{ return true; } } } […]

使Android使用新的audioHAL需要什么

我正在编写一个新的AndroidaudioHAL,让我的应用程序将audio提供给其他应用程序,以允许我的手持式远程麦克风input到达Google应用程序。 本质上,一个虚拟audio电缆。 这是一项正在进行的工作。 我可能会重写AUDIO_DEVICE_IN_BACK_MIC,但这是开放的build议。 我怀疑如何确保Android使用这个HALinput。 我是否需要replaceaudio.primary.default.so或者我应该将其保留为audio.vcable.default.so? 更具体地说:如果我不是取代主要的,Android将如何知道使用我的HAL而不是主要? 更新: 我真的可以在这项工作中使用任何帮助。 任何指针都是有帮助的。 我写了一个audioHAL模块。 我已经将以下(粗体项目)添加到audio_policy.conf中: 全球: global_configuration { attached_output_devices AUDIO_DEVICE_OUT_SPEAKER|**AUDIO_DEVICE_OUT_LINE** default_output_device AUDIO_DEVICE_OUT_SPEAKER attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_BACK_MIC|AUDIO_DEVICE_IN_REMOTE_SUBMIX|**AUDIO_DEVICE_IN_LINE** } 并在audio_hw_modules下 vloop { inputs { vloop { sampling_rates 16000 channel_masks AUDIO_CHANNEL_IN_MONO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_IN_LINE } } outputs { vloop { sampling_rates 16000 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_LINE flags AUDIO_OUTPUT_FLAG_DIRECT } } […]

Android模拟器声音 – Ubuntu的

使用Ubuntu 10.04 64位进行Android开发,除了声音以外,一切进展顺利。 我已经使用-audio选项和-audio-out alsa作为后端参数,但没有运气。 任何想法?

Androidaudio – stream正弦音发生器奇怪的行为

第一次海报在这里。 我通常喜欢自己find答案(通过研究或试验错误),但是我在这里难住。 我在做什么:我正在构build一个简单的androidaudio合成器。 现在,我只是在实时播放正弦音调,用户界面中有一个滑块,可以在用户调整音调的同时改变音调的频率。 我如何构build它:基本上,我有两个线程 – 一个工作线程和一个输出线程。 每当调用tick()方法时,工作线程都会用正弦波数据填充缓冲区。 一旦缓冲区被填满,它就会通知输出线程数据已经准备好写入音轨。 我使用两个线程的原因是因为audiotrack.write()块,我希望工作线程能够尽快开始处理其数据(而不是等待音轨完成写入)。 UI上的滑块只是简单的改变工作线程中的一个variables,这样工作线程的tick()方法就可以读取频率(通过滑块)的任何变化。 什么起作用:几乎所有东西; 线程通信良好,播放中似乎没有任何间隙或点击。 尽pipe缓冲区的大小(谢谢安卓),响应是好的。 频率variables确实会改变,tick()方法中的缓冲区计算过程中使用的中间值(通过Log.i()validation)也是如此。 什么不起作用:出于某种原因,我似乎无法获得可听频率的连续变化。 当我调整滑块时,频率会逐步改变,通常是四分之一或五分之一。 理论上,我应该听到1Hz的变化,但我不是。 奇怪的是,似乎滑块的变化导致正弦波通过谐波级数的间隔播放; 但是,我可以validation频率variables不是捕捉到默认频率的整数倍。 我的audio轨道设置如下: _buffSize = AudioTrack.getMinBufferSize(sampleRate, AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT); _audioTrackOut = new AudioTrack(AudioManager.STREAM_MUSIC, _sampleRate, AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT, _buffSize, AudioTrack.MODE_STREAM); 工作线程的缓冲区正在填充(通过tick()): public short[] tick() { short[] outBuff = new short[_outBuffSize/2]; // (buffer size in Bytes) / 2 for (int i […]

Android主动降噪

我正在开展一个有点雄心勃勃的项目,通过耳机或耳机在Android上实现主动降噪。 我的目标是用android手机麦克风录制环境噪音,反转相位(从audiologging中拉出的简单值为简单* -1),然后通过耳机播放该反转的波形。 如果等待时间和幅度接近正确,则应该消除环境中的大量机械结构噪声。 这是迄今为止我所得到的: @Override public void run() { Log.i("Audio", "Running Audio Thread"); AudioRecord recorder = null; AudioTrack track = null; short[][] buffers = new short[256][160]; int ix = 0; /* * Initialize buffer to hold continuously recorded audio data, start recording, and start * playback. */ try { int N = AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_IN_MONO,AudioFormat.ENCODING_PCM_16BIT); recorder […]

Androidaudio效果的WAV文件并保存

需求 Android在SD卡上打开一个.wav文件,播放它,添加一些效果(如回声,音高等),保存文件的效果。 简单:( 我知道的 我可以打开并使用Soundpool或MediaPlayer播放文件。 在使用两者的同时我可以给予一些效果。 即为媒体播放器我可以设置环境混响效果。 使用SoundPool我可以设置播放速度,这就像音高转换。 我现在成功地实施了这些。 但是这两个类都没有任何方法来保存播放的文件。 所以我只能玩,我不能保存音乐的效果。 我想知道的 除了MediaPlayer或SoundPool之外,是否还有其他任何兴趣类别? 不要介意保存,你只是提到课程,我会做与他们保存文件的研究。 任何第三方库,我可以添加效果和保存? 如果它是开放源代码和免 但即使它是专有的,也要提及它们。 任何其他地方,我可以看看。 OpenAL是否支持语音过滤和语音定位? 它会与Android的工作? 准备做肮脏的工作。 你请借给我path.. 编辑: 做了一些更多的search,并遇到AudioTrack 。 但它也不支持保存到文件。 所以没有运气也.. 编辑 好的,如果我自己做了呢? 从wav文件中获取原始字节,然后处理。 我用AudioRecord录制了一个wav文件,得到了一个wav文件。 有什么资源描述低级别的audio处理(我的意思是在字节级别)。 编辑 恩惠的时间到了,我得到了唯一的回报。 7天后,我明白了 我们无法保存我们使用MediaPlayer,AudioTrack等播放的内容 没有可用的audio处理库。 你可以得到原始的WAV文件,并自己做audio处理。 答案给了一个很好的包装类读/写wav文件。 一个很好的java代码来读取和改变wav文件的音调在这里 。

难以将原始的PCM输出代码从Java移植到Android AudioTrack API

我试图将从Java SE播放chiptunes(NSF,SPC等)音乐文件的应用程序移植到Android。 Android API似乎缺less这个应用程序用于输出原始PCMaudio的javax多媒体类。 我在API中find的最接近的模拟是AudioTrack,所以我一直在摔跤。 但是,当我尝试通过正在运行的端口来运行我的一个示例音乐文件时,我所得到的只是静态的。 我的怀疑是这是我设置的AudioTrack,这是错误的。 我尝试了各种不同的构造函数,但最终都输出了静态的。 原始代码中的DataLine设置如下所示: AudioFormat audioFormat = new AudioFormat( AudioFormat.Encoding.PCM_SIGNED, 44100, 16, 2, 4, 44100, true ); DataLine.Info lineInfo = new DataLine.Info( SourceDataLine.class, audioFormat ); DataLine line = (SourceDataLine)AudioSystem.getLine( lineInfo ); 我现在使用的构造函数是: AudioTrack = new AudioTrack( AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_CONFIGURATION_STEREO, AudioFormat.ENCODING_PCM_16BIT, AudioTrack.getMinBufferSize( 44100, AudioFormat.CHANNEL_CONFIGURATION_STEREO, AudioFormat.ENCODING_PCM_16BIT ), AudioTrack.MODE_STREAM ); 我已经用常量和variablesreplace了常量和variables,所以它们尽可能简洁明了,但是我的基本问题是,当我从一种格式转到另一种格式时,是否存在明显的问题。

如何禁用AlertDialog上的系统音效?

我有一个AlertDialog 2button。 我希望他们点击时播放我的自定义声音。 所以我在每个button上都有这样的代码: SoundUtility.getInstance(Add_Edit_Note.this).playPositive(); SoundUtility是我写的一个类,用于播放自定义声音。 这里有个问题:它播放我的自定义声音,但同时它也播放系统声音效果,所以我有两个声音在同一时间播放。 我可以通过重写button在常规button上禁用它: public class AppButton extends Button { public AppButton(Context context, AttributeSet attrs) { super(context, attrs); // Disable sound effect this.setSoundEffectsEnabled(false); } } 然后在我的XML文件中: <com.my.app.AppButton … /> 但是我找不到在AlertDialogbutton上禁用这些系统音效的方法。 有什么build议么? 编辑 根据要求,这是SoundUtility代码: public class SoundUtility { private static SoundUtility soundInstance; private MediaPlayer mpPositive; private MediaPlayer mpNegative; public static SoundUtility getInstance(Context […]

如何触发声音input的振动?

我正在尝试创build一个Android应用程序,在此过滤一个特定频率的嘟嘟声,并使手机振动。 我正在从移动的MIC和使用MediaRecorder类的input,通过使用这个类,我可以logging,保存和播放input。 现在,只要有蜂鸣声或任何声音,我都需要手机振动。 input是通过电线给移动设备的耳机插孔,所以我知道只有一个频率input。 我有一个button,点击开始录制。 我有权限振动和logging在我的清单文件已经。 record.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { isRecording=true; myAudioRecorder.prepare(); myAudioRecorder.start(); … } 我也尝试search互联网,发现类似的问题在这里,但我无法find任何正确的答案。 不过,我可以让手机振动点击另一个button,这里是代码片段, Vibrator vibrate; vibrate = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); Btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { vibrate.vibrate(800); } } 我试着在recorder.start()中调用一个振动器。 function,但即使没有声音,手机也会振动。 我也尝试从这个问题获得帮助,所以每当有沉默,手机不应该振动,但我感到困惑,我不知何故应该有一个布尔值得到真正的时候有声音,使手机振动,但我我无法把这个逻辑代码。 请让我知道我能在这方面做些什么,我应该在哪个方向寻找? 更新我发现这 toturial用input声音的幅度显示进度条,它工作正常,我试图让手机振动,当有一些价值的缓冲区,现在它振动,即使当幅度为零,我想这是因为每一次振动都会导致手机震动的噪音。 由于java.lang.RuntimeException,我无法通过TOAST检查函数:无法在未调用Looper.prepare()的线程中创build处理程序 。 有什么build议吗?