一、播放声音SoundPool
SoundPool播放短的音效,不能播放歌曲
可以用soundpool,用soundpool可以播一些短的反应速度要求高的声音,比如游戏中的爆破声,而mediaplayer适合播放长点的。SoundPool载入音乐文件使用了独立的线程,不会阻塞UI主线程的操作, SoundPool类支持同时播放多个音效,这对于游戏来说是十分必要的,而MediaPlayer类是同步执行的只能一个文件一个文件的播放。
实例:
sp=new SoundPool(1,AudioManager.STREAM_MUSIC,0);
加载:
soundId = sp.load(this, R.raw.note1, 1);
播放,可设置慢速、快速、频率高低等
sp.play(soundId, 1, 1, 0, 0, 2.0f);
二、播放声音MediaPlay
MediaPlayer可播放长的声音,可后台播放
创建:
mp= MediaPlayer.create(this,R.raw.song);
释放:
mp.release();
相关资源准备、该下载就下载
mp.prepare();
播放:
mp.start();
三、录音MediaRecord
写入外部存储的权限:
"android.permission.WRITE_EXTERNAL_STORAGE"/>
录音权限:
"android.permission.RECORD_AUDIO"/>
创建目录:
File dir=new File(Environment.getExternalStorageDirectory(),"sonunds");
if(!dir.exists())
{
dir.mkdir();//创建目录
}
创建文件:
File soundFile=new File(dir,System.currentTimeMillis()+".amr");
if(!soundFile.exists())
try//捕获一个异常
soundFile.createNewFile();
catch(IOException e)
e.printStackTrace();
指定输出
mr=new MediaRecorder();
mr.setOutputFile(soundFile.getAbsolutePath());/
准备并开始录制:
mr.prepare();
mr.start();
停止录制:
mr.stop();
案例分析:
界面,四个按钮:
android:id="@+id/btnPlaySound"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="PlaySound" /> android:id="@+id/btnPlaySong"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="PlaySong" /> android:id="@+id/btnRecordBegin"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="开始录制"/> android:id="@+id/btnRecordStop"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="停止录制"/>播放短的音效sp=new SoundPool(1,AudioManager.STREAM_MUSIC,0); soundId = sp.load(this, R.raw.note1, 1); findViewById(R.id.btnPlaySound).setOnClickListener(new View.OnClickListener() { @Override publicvoid onClick(View v) { sp.play(soundId, 1, 1, 0, 0,2.0f); } });播放歌曲findViewById(R.id.btnPlaySong).setOnClickListener(newView.OnClickListener() { @Override publicvoid onClick(View v) { if (mp!=null) { mp.start(); } } });4)录音findViewById(R.id.btnRecordBegin).setOnClickListener(new View.OnClickListener() { @Override publicvoid onClick(View v) { startRecord(); } privatevoid startRecord() { if(mr==null) { File dir=new File(Environment.getExternalStorageDirectory(),"sonunds"); if(!dir.exists()) { dir.mkdir();//创建目录 } File soundFile=new File(dir,System.currentTimeMillis()+".amr"); if(!soundFile.exists()) { try//捕获一个异常 { soundFile.createNewFile(); } catch(IOException e) { e.printStackTrace(); } } mr=new MediaRecorder(); mr.setAudioSource(MediaRecorder.AudioSource.MIC);//指定输入源 mr.setOutputFormat(MediaRecorder.AudioEncoder.AMR_WB);//输出编码格式 mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);//输入编码格式 mr.setOutputFile(soundFile.getAbsolutePath());//指定输出 try { mr.prepare(); mr.start(); } catch (IllegalStateException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } } } });5)停止录音findViewById(R.id.btnRecordStop).setOnClickListener(new View.OnClickListener() { @Override publicvoid onClick(View v) { stopRecord(); } privatevoid stopRecord() { if(mr!=null) { mr.stop(); mr.release(); mr=null; } } });6)权限设置 "android.permission.WRITE_EXTERNAL_STORAGE"/> "android.permission.RECORD_AUDIO" />×××:另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 分享题目:10天学通Android开发(8)-多媒体-创新互联 分享地址:http://jxruijie.cn/article/gigpc.html
android:id="@+id/btnPlaySound"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="PlaySound" />
android:id="@+id/btnPlaySong"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="PlaySong" /> android:id="@+id/btnRecordBegin"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="开始录制"/> android:id="@+id/btnRecordStop"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="停止录制"/>播放短的音效sp=new SoundPool(1,AudioManager.STREAM_MUSIC,0); soundId = sp.load(this, R.raw.note1, 1); findViewById(R.id.btnPlaySound).setOnClickListener(new View.OnClickListener() { @Override publicvoid onClick(View v) { sp.play(soundId, 1, 1, 0, 0,2.0f); } });播放歌曲findViewById(R.id.btnPlaySong).setOnClickListener(newView.OnClickListener() { @Override publicvoid onClick(View v) { if (mp!=null) { mp.start(); } } });4)录音findViewById(R.id.btnRecordBegin).setOnClickListener(new View.OnClickListener() { @Override publicvoid onClick(View v) { startRecord(); } privatevoid startRecord() { if(mr==null) { File dir=new File(Environment.getExternalStorageDirectory(),"sonunds"); if(!dir.exists()) { dir.mkdir();//创建目录 } File soundFile=new File(dir,System.currentTimeMillis()+".amr"); if(!soundFile.exists()) { try//捕获一个异常 { soundFile.createNewFile(); } catch(IOException e) { e.printStackTrace(); } } mr=new MediaRecorder(); mr.setAudioSource(MediaRecorder.AudioSource.MIC);//指定输入源 mr.setOutputFormat(MediaRecorder.AudioEncoder.AMR_WB);//输出编码格式 mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);//输入编码格式 mr.setOutputFile(soundFile.getAbsolutePath());//指定输出 try { mr.prepare(); mr.start(); } catch (IllegalStateException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } } } });5)停止录音findViewById(R.id.btnRecordStop).setOnClickListener(new View.OnClickListener() { @Override publicvoid onClick(View v) { stopRecord(); } privatevoid stopRecord() { if(mr!=null) { mr.stop(); mr.release(); mr=null; } } });6)权限设置 "android.permission.WRITE_EXTERNAL_STORAGE"/> "android.permission.RECORD_AUDIO" />×××:另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 分享题目:10天学通Android开发(8)-多媒体-创新互联 分享地址:http://jxruijie.cn/article/gigpc.html
android:id="@+id/btnPlaySong"
android:layout_width="wrap_content"
android:text="PlaySong" />
android:id="@+id/btnRecordBegin"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="开始录制"/> android:id="@+id/btnRecordStop"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="停止录制"/>播放短的音效sp=new SoundPool(1,AudioManager.STREAM_MUSIC,0); soundId = sp.load(this, R.raw.note1, 1); findViewById(R.id.btnPlaySound).setOnClickListener(new View.OnClickListener() { @Override publicvoid onClick(View v) { sp.play(soundId, 1, 1, 0, 0,2.0f); } });播放歌曲findViewById(R.id.btnPlaySong).setOnClickListener(newView.OnClickListener() { @Override publicvoid onClick(View v) { if (mp!=null) { mp.start(); } } });4)录音findViewById(R.id.btnRecordBegin).setOnClickListener(new View.OnClickListener() { @Override publicvoid onClick(View v) { startRecord(); } privatevoid startRecord() { if(mr==null) { File dir=new File(Environment.getExternalStorageDirectory(),"sonunds"); if(!dir.exists()) { dir.mkdir();//创建目录 } File soundFile=new File(dir,System.currentTimeMillis()+".amr"); if(!soundFile.exists()) { try//捕获一个异常 { soundFile.createNewFile(); } catch(IOException e) { e.printStackTrace(); } } mr=new MediaRecorder(); mr.setAudioSource(MediaRecorder.AudioSource.MIC);//指定输入源 mr.setOutputFormat(MediaRecorder.AudioEncoder.AMR_WB);//输出编码格式 mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);//输入编码格式 mr.setOutputFile(soundFile.getAbsolutePath());//指定输出 try { mr.prepare(); mr.start(); } catch (IllegalStateException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } } } });5)停止录音findViewById(R.id.btnRecordStop).setOnClickListener(new View.OnClickListener() { @Override publicvoid onClick(View v) { stopRecord(); } privatevoid stopRecord() { if(mr!=null) { mr.stop(); mr.release(); mr=null; } } });6)权限设置 "android.permission.WRITE_EXTERNAL_STORAGE"/> "android.permission.RECORD_AUDIO" />×××:另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 分享题目:10天学通Android开发(8)-多媒体-创新互联 分享地址:http://jxruijie.cn/article/gigpc.html
android:id="@+id/btnRecordBegin"
android:text="开始录制"/>
android:id="@+id/btnRecordStop"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="停止录制"/>播放短的音效sp=new SoundPool(1,AudioManager.STREAM_MUSIC,0); soundId = sp.load(this, R.raw.note1, 1); findViewById(R.id.btnPlaySound).setOnClickListener(new View.OnClickListener() { @Override publicvoid onClick(View v) { sp.play(soundId, 1, 1, 0, 0,2.0f); } });播放歌曲findViewById(R.id.btnPlaySong).setOnClickListener(newView.OnClickListener() { @Override publicvoid onClick(View v) { if (mp!=null) { mp.start(); } } });4)录音findViewById(R.id.btnRecordBegin).setOnClickListener(new View.OnClickListener() { @Override publicvoid onClick(View v) { startRecord(); } privatevoid startRecord() { if(mr==null) { File dir=new File(Environment.getExternalStorageDirectory(),"sonunds"); if(!dir.exists()) { dir.mkdir();//创建目录 } File soundFile=new File(dir,System.currentTimeMillis()+".amr"); if(!soundFile.exists()) { try//捕获一个异常 { soundFile.createNewFile(); } catch(IOException e) { e.printStackTrace(); } } mr=new MediaRecorder(); mr.setAudioSource(MediaRecorder.AudioSource.MIC);//指定输入源 mr.setOutputFormat(MediaRecorder.AudioEncoder.AMR_WB);//输出编码格式 mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);//输入编码格式 mr.setOutputFile(soundFile.getAbsolutePath());//指定输出 try { mr.prepare(); mr.start(); } catch (IllegalStateException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } } } });5)停止录音findViewById(R.id.btnRecordStop).setOnClickListener(new View.OnClickListener() { @Override publicvoid onClick(View v) { stopRecord(); } privatevoid stopRecord() { if(mr!=null) { mr.stop(); mr.release(); mr=null; } } });6)权限设置 "android.permission.WRITE_EXTERNAL_STORAGE"/> "android.permission.RECORD_AUDIO" />×××:另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。 分享题目:10天学通Android开发(8)-多媒体-创新互联 分享地址:http://jxruijie.cn/article/gigpc.html
android:id="@+id/btnRecordStop"
android:text="停止录制"/>
播放短的音效
findViewById(R.id.btnPlaySound).setOnClickListener(new View.OnClickListener() {
@Override
publicvoid onClick(View v) {
sp.play(soundId, 1, 1, 0, 0,2.0f);
});
播放歌曲
findViewById(R.id.btnPlaySong).setOnClickListener(newView.OnClickListener() {
if (mp!=null) {
4)录音
findViewById(R.id.btnRecordBegin).setOnClickListener(new View.OnClickListener() {
startRecord();
privatevoid startRecord() {
if(mr==null)
mr.setAudioSource(MediaRecorder.AudioSource.MIC);//指定输入源
mr.setOutputFormat(MediaRecorder.AudioEncoder.AMR_WB);//输出编码格式
mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);//输入编码格式
mr.setOutputFile(soundFile.getAbsolutePath());//指定输出
try {
} catch (IllegalStateException e) {
// TODO Auto-generatedcatch block
} catch (IOException e) {
5)停止录音
findViewById(R.id.btnRecordStop).setOnClickListener(new View.OnClickListener() {
stopRecord();
privatevoid stopRecord() {
if(mr!=null)
mr.release();
mr=null;
6)权限设置
"android.permission.RECORD_AUDIO" />
×××:
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
在线咨询
拨打电话