Articles of 音频

Android支持v7 MediaRouter有时无法正常工作

我使用v7支持库MediaRouter来切换手机扬声器和蓝牙设备之间的路由。 有时它很奇怪,例如,当我关闭蓝牙时,相应的路线似乎被删除(播放切换到扬声器),但我的应用程序没有收到任何关于它的回调。 而且,当我通过MediaRouter.getRoutes()手动获取所有路由时,它返回蓝牙路由,但是当我尝试切换到它时,它似乎被选中,但实际播放仍然通过扬声器。 我尝试了所有标志CALLBACK_FLAG_FORCE_DISCOVERY,CALLBACK_FLAG_REQUEST_DISCOVERY等,没有结果。 只有手机重启有帮助。 有什么建议么? 我使用的是Android 4.2,4.4。 更新,代码示例:…. private MediaRouter mMediaRouter; private MediaRouter.Callback mMediaRouterCallback = new MediaRouter.Callback(){ @Override public void onRouteAdded(MediaRouter router, MediaRouter.RouteInfo route) { super.onRouteAdded(router, route); refreshRoutes(); Log.i(TAG, “Route added ==> ” + route.getName()); } @Override public void onRouteRemoved(MediaRouter router, MediaRouter.RouteInfo route) { super.onRouteRemoved(router, route); refreshRoutes(); Log.i(TAG, “Route removed ==> ” + route.getName()); […]

如何计算android中的声音频率?

我想开发应用来计算Android中的声音频率。 Android设备将从麦克风(即外侧声音)获取声音,我在应用程序中有一个彩色背景屏幕。 在声音频率变化时,我必须改变屏幕的背景颜色。 所以我的问题是“我怎样才能获得声音频率”? 有没有可用的Android API? 请帮我解决这个问题。

如何validationAndroid上是否连接了蓝牙耳机?

如何validation目前是否有任何蓝牙耳机连接到android? 喜欢: 如果有耳机连接,声音必须通过此耳机 但如果没有耳机,声音必须留在扬声器上 这必须在应用期间检查,因为如果耳机的电池熄灭,它必须向扬声器发回声音 解决方案如下 public class BluetoothReceiver extends BroadcastReceiver { private AudioManager localAudioManager; private static final int STATE_DISCONNECTED = 0x00000000; private static final String EXTRA_STATE = “android.bluetooth.headset.extra.STATE”; private static final String TAG = “BluetoothReceiver”; private static final String ACTION_BT_HEADSET_STATE_CHANGED = “android.bluetooth.headset.action.STATE_CHANGED”; private static final String ACTION_BT_HEADSET_FORCE_ON = “android.bluetooth.headset.action.FORCE_ON”; private static final String ACTION_BT_HEADSET_FORCE_OFF […]

会说话的应用程序就像会说话的汤姆,录音在所有设备上都不起作用

我正在开发一个像汤姆汤姆这样的应用程序,每个东西都工作得很好只是录音在某些设备上出现问题,音频在我的hdpi设备上工作正常,但每当我在三星标签7或标签10或任何其他电话上运行时,在某些设备上,它不断地收听音频,而在某些设备上根本不听,我使用以下代码进行录音。 private int RECORDER_CHANNELS = AudioFormat.CHANNEL_CONFIGURATION_MONO; private int RECORDER_AUDIO_ENCODING = AudioFormat.ENCODING_PCM_16BIT; private int RECORDER_SAMPLERATE = 44100; private byte RECORDER_BPP = (byte) 16; private AudioRecord audioRecorder; private int detectVoice= 350; public class analyzeAudio extends AsyncTask { @Override protected void onPreExecute() { Log.e(“Play”, “on Pre”); } @Override protected Void doInBackground(Void… voids) { try { // Get the […]

Android中方向更改时如何连续播放音频?

我是Android的新手,我必须创建MediaPlayer来播放音频音乐。 开始时我的活动歌曲开始播放。 但是当我在我的模拟器屏幕上更改方向时, MediaPlayer会重新初始化,另一个音频开始播放。 我怎么能避免呢? 这是我的代码: public class Audio_Activity extends Activity { MediaPlayer mp = null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(isLaunched) { setContentView(R.layout.audio); } SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); length = settings.getInt(“TheOffset”, 0); init(); prefs = PreferenceManager.getDefaultSharedPreferences(this); mp = MediaPlayer.create(getApplicationContext(), R.raw.subhanallah); playMusic(); mp.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer arg0) { // TODO […]

Android MediaPlayer流媒体在网络更改时停止

我在Android上使用MediaPlayer传输音频。 当设备从Wi-Fi移动到蜂窝网络或反之亦然时,MediaPlayer停止播放。 通常,缓冲区中有几秒钟的音频,因此播放不会立即停止。 理想情况下,我想选择不间断播放的流,但我看不出怎么做。 我正在处理服务器上托管的mp3文件和实时广播流。

重定向音频/在Android中创建备用声音路径

有没有人有经验(使用OpenSL ES,ALSA等)在Android中重定向音频或创建新的声音路径? 最终目标是创建一个虚拟麦克风来替换外部麦克风,在那里可以播放音频文件,就好像他们正在对着麦克风讲话一样。 使用AudioSource.MIC访问麦克风的应用程序应使用此备用流。 它没有必要使用语音呼叫,我相信实现这种function更难,因为它都是在无线电中完成的。 关于从哪里开始的任何想法? 我已经用OpenSL和ALSA做了一些研究,但看起来我需要打包新固件(ROM)才能定义自定义音频路径。 如果可以避免,我想创建一个应用程序级解决方案。 这些手机是“扎根”的(有su二进制文件)。 目标设备是三星Galaxy S4谷歌版(GT-i9505G)。 具体来说,我正在寻找音频驱动程序配置/源代码或i9505G的任何参考。 提前致谢! 编辑 – 我已经检查了CyanogenMod 10.2源代码树,以及jfltexx驱动程序和内核。 以下是kernel / samsung / jf / sound的内容: http : //pastebin.com/7vK8THcZ 。 这在任何地方记录?

显示音频波形

我正在android中制作一个音乐应用程序。这个音乐列表来自服务器端。 我不知道如何在android中显示音频波形? 比如在soundcloud网站上。 我在下面附上了图片。

方形波形上的android音频失真

我发现我的智能手机(android 4.2.2)无法生成方波(我需要它将音频输出用作数据传输的串行线)。 一开始我认为这是我的应用程序,但后来我做了很多重要的测试。 这些是最新的测试。 我希望你能find这种现象的解释。 我生成了一个wav文件,里面有500Hz的方波。 我在Android手机和苹果iphone上播放wav文件。 我用笔记本录制并分析了信号(连接到笔记本音频输入的音频线)。 然后我用连接在蓝牙收发器设备和笔记本音频输入之间的音频线重复测试。 智能手机通过蓝牙(一次一个)连接到蓝牙收发器设备。 注意:蓝牙收发器设备是通过蓝牙接收音频数据并使用标准音频插孔提供音频输出的设备。 这是直接连接在音频插孔上的iphone产生的信号: 这是蓝牙设备从iphone接收数据产生的信号: 这是Android设备直接与音频插孔连接产生的信号: 这是蓝牙设备从Android智能手机接收数据生成的信号: Analisys: – 蓝牙设备引入了信号带宽的削减(在我看来似乎可以接受)。 – iphone具有非常好的模拟部分(输出非常好的方波) – Android设备有非常糟糕的模拟部分(即使它非常适合音乐播放) – Android手机发送到蓝牙设备的数据不正确,实际上获取的信号与来自iphone的数据获取的信号不同。 我将智能手机恢复为出厂默认设置,但问题仍未解决。 我也尝试安装kitkat自定义ROM但问题仍然存在。 我也尝试过使用Nexus 5(android 5)和三星S4 mini(像我这样的android 4.2.2),它们就像iphone一样。 我怀疑这个问题与DTS录音室声音有关(我试图解除它并以不同的方式设置它而没有成功)。 DTS似乎是我的手机和三星s4 mini之间唯一的软件差异。 问题:我可以理解我的Android设备的模拟端不如iphone,我也可以假设我的Android设备的模拟部分坏了…但我不明白为什么我没有获得当我插入蓝牙收发器设备时,结果相同。

音频框架:流,策略,设备

我试图更好地了解Android音频框架 (特别是froyo)。 我差点把它分成流 。 AudioFlinger将每个流映射为“策略”,然后将策略路由到适当的“设备”(BT,Headset,Speaker ..) 但是我仍然很难理解:1)多个应用程序如何在同一个流上播放? 他们可以“玩”还是必须处理焦点(请求,放弃和倾听变化)? 2)当正在播放多个流时…一个流相对于另一个流的优先级是多少? 当然,通话中的流具有最高优先级,但是有任何“规则”可以理解事情的确如何运作。 如果对这个问题更有信心的人有任何研究的文件/资源​​……那就太好了。 谢谢! 马尔科