可以选择用耳机还是扬声器播放(蓝牙的就留到下次吧),要求SDK不小于5
public class MainActivity extends Activity implements OnClickListener {
private AudioManager mAudioManager;
private MediaPlayer mMediaPlayer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
mMediaPlayer = new MediaPlayer();
mMediaPlayer.reset();
try {
File audio = new File(Environment.getExternalStorageDirectory(),
"/Music/xxx.mp3");
mMediaPlayer.setDataSource(audio.getAbsolutePath());
mMediaPlayer.prepare();
mMediaPlayer.setOnPreparedListener(new PrepareListener());
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
findViewById(R.id.btn_speaker).setOnClickListener(this);
findViewById(R.id.btn_headset).setOnClickListener(this);
findViewById(R.id.btn_bluetooth).setOnClickListener(this);
}
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.btn_speaker:
// if (!mAudioManager.isSpeakerphoneOn())
// return;
mAudioManager.setMode(AudioManager.ROUTE_SPEAKER);
mAudioManager.setSpeakerphoneOn(true);
break;
case R.id.btn_headset:
// if (!mAudioManager.isWiredHeadsetOn())
// return;
mAudioManager.setMode(AudioManager.MODE_NORMAL);
mAudioManager.setWiredHeadsetOn(true);
break;
case R.id.btn_bluetooth:
break;
default:
break;
}
}
@Override
protected void onDestroy() {
// change mode back to normal
mAudioManager.setMode(AudioManager.MODE_NORMAL);
// release resource, important
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
super.onDestroy();
}
private final class PrepareListener implements OnPreparedListener {
public void onPrepared(MediaPlayer mp) {
mMediaPlayer.start();
}
}
}
分享到:
相关推荐
1. **选择音频输出设备**: 要选择系统中的特定音频输出设备,我们可以使用winmm.dll中的`mciSendString`函数。这个函数允许我们控制多媒体控制接口(MCI),它可以操作多种多媒体设备,包括声卡。例如,我们可以...
此外,电阻“R101”、“R100”以及焊盘跳线的设计用于控制电路的功耗和音频输出状态(如静音功能)。 ### 二、蓝牙音频电路的工作原理 蓝牙音频电路通过蓝牙模块建立无线连接,将音频数据编码后以蓝牙信号的形式...
* 音频输出设置:选择音频输出方式,例如 PCM、Dolby Atmos、DTS:X 等。 * 音量调整:调整音量,包括总音量和声道音量。 视频设置 * 视频输入设置:选择视频输入来源,例如 HDMI、Component、Composite 等。 * ...
这个功能的实现解决了这个问题,使得播放器能够实时响应系统声音设备的变更,自动将音频输出切换到用户当前选择的设备上,提高了用户体验。 实现这个功能的关键在于使用BASS的API接口,尤其是与设备管理和事件处理...
3. **音频输出原理**:在51单片机中实现音频输出,通常需要通过PWM(脉宽调制)技术来实现模拟信号的生成。PWM是一种数字信号处理方式,通过改变脉冲宽度来模拟不同幅度的模拟信号,进而驱动扬声器发声。51单片机的...
项目描述提及"**自动获取音频输入输出设备,选择特定设备后设置成默认**",这表明代码将涉及到Windows API调用和可能的枚举操作,用于检测系统中的所有音频设备,并允许用户或程序选择一个设备作为新的默认设备。...
本文档概括了海思HI35XX音频模块的使用总结,涵盖音频输入、音频输出、音频编码、音频解码四个子模块的使用方法。音频输入和输出模块通过对HI35XX芯片SIO接口的控制实现音频输入输出功能。音频编码和解码模块提供对G...
python实现音频添加隐写数据 1. 解析音频格式: ... 为了增强音频水印的鲁棒性,在通过判断音频文件的大小后选择相应的范围数添加隐写数据 从而使音频即便被截断也可通过相似度方式查看是否包含隐写数据
在实际操作中,根据具体需求和资源条件选择合适的方法,可以提高工作效率并保证音频质量。在提供的`FFmpegJointAudio`压缩包中,可能包含了一些示例文件和更详细的教程,可以进一步探索和学习。
10. **免费与付费版本**: 音频剪切工具可能有免费和付费两种版本,付费版通常提供更多的功能、无水印输出和更好的技术支持。 了解这些知识点后,你可以根据自己的需求选择合适的音频剪切工具,无论是为了个人娱乐...
PCHiFi系统通常包括高解析度音频播放器、数字模拟转换器(DAC)、以及优质的音频输出设备。 **音频播放Src**:这里的"Src"可能指的是Source,即音源或源代码。在软件开发中,源代码是程序的原始形式,可以被编译或...
不同的编码方式在音质、压缩比和计算复杂度上有所不同,根据实际应用需求选择合适的编码方式至关重要。 2. **网络传输协议**:HTTP、TCP/IP等传统网络协议不适用于实时音频通信,因为它们无法保证数据包的实时性和...
在设计中,我们还考虑了高速开关电路的选择,选择了H 桥型输出方式,以充分利用电源电压,浮动输出载波的峰-峰值可达10V,有效地提高了输出功率。同时,我们选择了VMOSFET 管作为开关管,以提高功率放大器的效率和...
它推荐使用额定功率在0.7W及以上的扬声器,以充分发挥其音频输出能力。功放芯片的功率等级直接决定了它驱动扬声器的能力,能够根据实际应用的需求选择适当的功率等级是非常重要的。 针对抑制干扰,AW8736集成了艾为...
1. **音频输入与输出**:Android系统支持多种音频输入和输出方式,如麦克风录音和扬声器播放。AudioRecord类用于捕获音频数据,而AudioTrack类则用于播放这些数据。这两个类是Android音频处理的基础。 2. **音频流...
在实际应用中,如果对存储空间有较高要求,人们往往会选择压缩音频格式,如MP3、AAC等,它们通过牺牲一定的音质来大幅减小文件大小。然而,在专业音频制作、编辑或分析时,PCM和WAV这样的无损格式是首选,因为它们能...
- **规一化混音算法**更适合于需要高质量音频输出的场合,如音乐制作等。 - **ALSA混音算法**则更适合于需要实时处理音频的场合,如在线会议系统等。 ### 结语 通过以上分析可以看出,规一化混音算法和ALSA混音...
8. **连接性**:介绍如何通过蓝牙、Wi-Fi或其他无线方式将音频输出到其他设备,如家庭音响系统或智能扬声器。 9. **实际应用案例**:可能包含实际设备的测试结果和用户体验反馈,以展示理论知识在实际产品中的应用...
标题所揭示的知识点为音频功率放大器(音频功放),其具体功能是将...设计者需要根据这些信息,通过精心计算、元件选择和电路布局来实现一个高性能的10倍音频功率放大器,以满足特定应用(如摇头机)的音频输出需求。
数字音频接口(DAI)是指在板级或板间传输数字音频信号的方式。相比于模拟接口,数字音频接口抗干扰能力更强,硬件设计简单,DAI 在音频电路设计中得到越来越广泛的应用。 数字音频接口的类型有多种,常见的有 I2S...