多媒体应用之/SoundPool/MediaRecorder/MediaPlayerVideo/SurfaceView
来源:互联网 发布:c语言switch 编辑:程序博客网 时间:2024/05/18 00:45
SoundPool
1.SoundPool是用于播放提示音的适合短促且对反应速度比较高的情况,要求他占用的内存小(一般在20k左右就很大了)
2.代码实现
public class MainActivity extends AppCompatActivity { private Button mBtnSound; private SoundPool pool; private int voicID; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mBtnSound= (Button) findViewById(R.id.button_sound); //初始化要放在onCreate方法中,避免初始化之后立刻调用play方法,因为load需要时间,立刻调用会出错 voicID=initSoundPoul(); mBtnSound.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { playSound(); } }); } /*** * 该方法用于调用soundpool的play方法 * 第一个参数传id即声音的来源 * 第二个和第三个参数传入的是左声道和右声道设置的值 * 第四个参数是设置优先级 * 第五个参数是设置是否循环 * 第六个参数播放速度(播放码率) */ public void playSound(){ pool.play(voicID,1,1,0,-1,1); } //初始化SoundPlay private int initSoundPoul(){ //判断一下当前的版本号,如果是API大于21就使用SoundPool.Builder,如果小于API21就使用SoundPool if (Build.VERSION.SDK_INT>21){ SoundPool.Builder builder=new SoundPool.Builder(); builder.setMaxStreams(2);//同时播放的流的最大数量,即同时能播放音乐的数量上限 AudioAttributes.Builder attrBuilder=new AudioAttributes.Builder(); attrBuilder.setLegacyStreamType(AudioManager.STREAM_MUSIC);//设置流的类型 builder.setAudioAttributes(attrBuilder.build());//该方法内必须要传一个AudioAttributes对象,通过AudioAttributes.Builder建立 pool=builder.build();//通过build()方法构建SoundPool }else { pool=new SoundPool(2,AudioManager.STREAM_MUSIC,0); } return pool.load(getApplicationContext(),R.raw.outgoing,1);//load方法返回以Int值类型的数据 }}
MediaRecorder录音功能
1.这里用了两个button一个用于启动录音功能另一个用于停止录音,就是简单的创建一个MediaRecorder对象,然后设置声音来源,设置音频格式,设置编码格式,然后将得到的录音发到一个指定的文件中,最后调用开始,和结束
2.需要添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
3.代码实现
case R.id.button_start: mRecorder=new MediaRecorder(); mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//设置声音来源 mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//设置音频格式 mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//设置编码格式 mRecorder.setOutputFile(Environment.getExternalStorageDirectory()+"/my.3gp");//写入sd卡 try { mRecorder.prepare();//准备 mRecorder.start();//开始 } catch (IOException e) { e.printStackTrace(); } break; case R.id.button_end: //回收资源 mRecorder.stop();//停止 mRecorder.reset();//置位 mRecorder.release();//释放 break;
MediaPlayerVideo
1.改方法只能播放简单的视频,如MP3,MP4格式的,实用不大
2.需要添加权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
3.代码实现
mVideo.setVideoPath(Environment.getExternalStorageDirectory()+"/aa.mp4");//设置文件路径 mVideo.setMediaController(new MediaController(MainActivity.this){ });//设置媒体控制 mVideo.start();
MediaPlayerSurfaceView
1.创建一个SurfaceView布局,然后调用MediaPlayer找到文件的路径,然后将文件的显示显示在SurfaceView上,最后调用MediaPlay的start方法开始播放
<Button android:id="@+id/button_play" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="播放视频"/> <SurfaceView android:id="@+id/surface_view" android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1"/>
2.添加权限
<uses-permission android:name="android.permissiom.READ_EXTERNAL_STORAGE"></uses-permission>
3.代码实现
public class MainActivity extends AppCompatActivity { private Button mBtnStart; private SurfaceView mSurface; private MediaPlayer player; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mBtnStart= (Button) findViewById(R.id.button_play); mSurface= (SurfaceView) findViewById(R.id.surface_view); mBtnStart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (player==null){ player=new MediaPlayer(); } player.reset(); try { player.setDataSource(Environment.getExternalStorageDirectory()+"/aa.mp4"); player.setAudioStreamType(AudioManager.STREAM_MUSIC); player.setDisplay(mSurface.getHolder()); player.prepare(); player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.start(); } }); } catch (IOException e) { e.printStackTrace(); } } }); }}
0 0
- 多媒体应用之/SoundPool/MediaRecorder/MediaPlayerVideo/SurfaceView
- SoundPool、 VedioView、 MediaRecorder、 SurfaceView、 Camera、
- Android0915<十九>(多媒体、SoundPool、MediaRecorder、SurfaceView,简单地使用摄像头)
- 音乐(多媒体)SoundPool,MediaRecorder和Mediaplayer
- Android 多媒体应用:MediaRecorder 录制音视频 之 音频
- Android 多媒体应用:MediaRecorder 录制音视频 之 音频
- Android 多媒体 通过MediaRecorder+SurfaceView实现拍照,录像
- Android 多媒体应用:视频播放之VideoView与SurfaceView
- Android 多媒体应用:视频播放之VideoView与SurfaceView
- Android --- 多媒体应用(SoundPool播放音频)
- Android多媒体应用:视频录制-MediaRecorder
- Android --- 多媒体应用(MediaRecorder 录音)
- Android多媒体之音频、视频录制MediaRecorder
- 安卓之MediaRecorder(多媒体录制)
- android之音频的播放和录制(MediaPlayer,SoundPool,MediaRecorder)
- Android开发之录音MediaRecorder、播放音频(MediaPlayer、SoundPool)
- Android -- 视频音频多媒体播放,在线播放, MediaPlayer, SurfaceView, SoundPool, Timer定时器使用
- Android -- 视频音频多媒体播放,在线播放, MediaPlayer, SurfaceView, SoundPool, Timer定时器使用
- 洛谷1088 火星人
- 规定C++输出每行不超过多少字数
- UE4材质初探
- TextureView+SurfaceTexture+OpenGL ES来播放视频(三)
- 图论相关算法汇总(二)
- 多媒体应用之/SoundPool/MediaRecorder/MediaPlayerVideo/SurfaceView
- 欢迎使用CSDN-markdown编辑器
- AutoCAD启动自动加载程序的研究
- 后缀数组学习小结
- sql处理数据困难的办法--用程序处理生成单一sql
- 关于《不止于Java》
- Android开发-通过USB实现ADB控制
- Unity3D技巧
- Error:(16, 0) Gradle DSL method not found: 'runProguard()'