SoundPool、 VedioView、 MediaRecorder、 SurfaceView、 Camera、
来源:互联网 发布:软件开发 tr4阶段 编辑:程序博客网 时间:2024/06/16 03:08
SoundPool
提示音,适合短促且对反应速度比较高的情况(游戏音效或按键声等),一般文件较小,只有几十K,使用MediaPlayer会浪费内存,所以用SoundPool。
priority —— 流的优先级,值越大优先级高,影响当同时播放数量超出了最大支持数时SoundPool对该流的处理;
loop —— 循环播放的次数,0为值播放一次,-1为无限循环,其他值为播放loop+1次(例如,3为一共播放4次).
rate —— 播放的速率,范围0.5-2.0(0.5为一半速率,1.0为正常速率,2.0为两倍速率)
1.管理多个音频资源,通过load()函数,成功则返回非0的soundID;
2.同时播放多个音频,通过play()函数,成功则返回非0的streamID;
3.pause()、resume()和stop()等操作是针对streamID(播放流)的;
4.当设置为无限循环时,需要手动调用stop()来终止播放;
5.播放流的优先级(play()中的priority参数),只在同时播放数超过设定的最大数时起作用;
6.程序中不用考虑(play触发的)播放流的生命周期,无效的soundID/streamID不会导致程序错误。
package com.example.administrator.mymusicplayer;import android.app.Activity;import android.media.AudioAttributes;import android.media.AudioManager;import android.media.SoundPool;import android.os.Build;import android.os.Bundle;import android.view.View;import android.widget.Button;/** * Created by Administrator on 2015/9/15. */public class SoundPoolActivity extends Activity { private Button mButtonSoundPool; private static int voiceID; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_soundpool); mButtonSoundPool = (Button) findViewById(R.id.button_soundpool); mButtonSoundPool.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { playSound(); } }); voiceID = initSoundPool(); } private SoundPool pool = null; public void playSound() { pool.play(voiceID, 1, 1, 0, 0, 1); } private int initSoundPool() { 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()); pool = builder.build(); } else { pool = new SoundPool(2, AudioManager.STREAM_MUSIC, 0); } return pool.load(getApplicationContext(), R.raw.outgoing, 1); }}
MediaRecorder
录制音视频
录制结束时,调用stop方法,并且调用reset、release方法释放掉资源。
注意加上权限:
package com.example.administrator.mymusicplayer;import android.app.Activity;import android.media.MediaRecorder;import android.os.Environment;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Button;import java.io.IOException;public class MainActivity extends Activity implements View.OnClickListener { private Button mButtonStart; private Button mButtonStop; private MediaRecorder mediaRecorder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mButtonStart = (Button) findViewById(R.id.button_start_recorder); mButtonStop = (Button) findViewById(R.id.button_stop_recorder); mButtonStart.setOnClickListener(this); mButtonStop.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.button_start_recorder: mediaRecorder = new MediaRecorder(); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); mediaRecorder.setOutputFile(Environment.getExternalStorageDirectory() + "/MyRecorder.mp3"); try { mediaRecorder.prepare(); mediaRecorder.start(); } catch (IOException e) { e.printStackTrace(); } break; case R.id.button_stop_recorder: mediaRecorder.stop(); mediaRecorder.reset(); mediaRecorder.release(); break; } }}
VedioView
视频播放,仅限于mp4和3gp格式。
注意权限:
package com.example.administrator.mymusicplayer;import android.app.Activity;import android.os.Bundle;import android.os.Environment;import android.view.View;import android.widget.Button;import android.widget.MediaController;import android.widget.VideoView;/** * Created by Administrator on 2015/9/15. */public class VideoViewActivity extends Activity { private Button mButtonStart; private VideoView videoView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_vedioview); mButtonStart = (Button) findViewById(R.id.button_start); videoView = (VideoView) findViewById(R.id.videoview); mButtonStart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { videoView.setVideoPath(Environment.getExternalStorageDirectory()+"/VID_20150502_090524.3gp"); videoView.setMediaController(new MediaController(VideoViewActivity.this)); videoView.start(); } }); }}
SurfaceView
自带绘制线程,SurfaceView是视图(View)的继承类,这个视图里内嵌了一个专门用于绘制的Surface。
注意权限:
package com.example.administrator.mymediasurfaceview;import android.app.Activity;import android.media.AudioManager;import android.media.MediaPlayer;import android.os.Environment;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.SurfaceView;import android.view.View;import android.widget.Button;import java.io.IOException;public class MainActivity extends Activity { private Button mButtonStart; private SurfaceView mSurfaceView; private MediaPlayer player; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mButtonStart = (Button) findViewById(R.id.button_start); mSurfaceView = (SurfaceView) findViewById(R.id.surfaceview); mButtonStart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (player == null){ player = new MediaPlayer(); } player.reset(); try { player.setDataSource(Environment.getExternalStorageDirectory()+"/VID_20150502_090524.3gp"); player.setAudioStreamType(AudioManager.STREAM_MUSIC); player.setDisplay(mSurfaceView.getHolder()); player.prepare(); player.setOnPreparedListener(new MediaPlayer.OnPreparedListener(){ @Override public void onPrepared(MediaPlayer mediaPlayer) { mediaPlayer.start(); } }); } catch (IOException e) { e.printStackTrace(); } } }); }}
Camera
这里给一个例子,调用系统的照相机拍摄一张照片并显示。
package com.example.administrator.mymediasurfaceview;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.view.View;import android.widget.Button;import android.widget.ImageView;import java.io.File;import java.io.IOException;/** * Created by Administrator on 2015/9/15. */public class CameraActivity extends Activity { private Button mButtonStartCamera; private ImageView mImageView; private File file; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_camera); mButtonStartCamera = (Button) findViewById(R.id.button_start_camera); mImageView = (ImageView) findViewById(R.id.imageview); mButtonStartCamera.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(); intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);//隐式启动系统相机 file = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".jpg"); try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));//告诉系统相机将照片保存的位置 startActivityForResult(intent,0x23);//开始启动 } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode==0x23){ if (resultCode==RESULT_OK){ mImageView.setImageURI(Uri.fromFile(file));//得到图片 } } }}
- SoundPool、 VedioView、 MediaRecorder、 SurfaceView、 Camera、
- 多媒体应用之/SoundPool/MediaRecorder/MediaPlayerVideo/SurfaceView
- 09-15 Camera (摄像机),SoundPool(播放提示音等小音频),VideoView(播放视频),SurfaceView(播放视频),MediaRecorder(录制音频)
- 安卓使用surfaceview+Camera+MediaRecorder实现视频录制
- 基于camera+SurfaceView+MediaRecorder的录制微视频
- Android0915<十九>(多媒体、SoundPool、MediaRecorder、SurfaceView,简单地使用摄像头)
- VedioView和SurfaceView的一个奇怪特性
- MediaPlayer 、soundPool、SurfaceView
- Android camera、surfaceview、mediarecorder播放、抓拍与录制、前后置切换
- 录制视频(Surfaceview+MediaRecorder)
- 音乐(多媒体)SoundPool,MediaRecorder和Mediaplayer
- 使用MediaRecorder+SurfaceView实现录像
- androi surfaceview and camera
- hardware.Camera及SurfaceView
- Android之SurfaceView、Camera
- 关于SurfaceView和MediaRecorder实现录像功能
- Android中的音频处理------SoundPool,MediaRecorder,MediaPlayer以及RingStone总结
- android之音频的播放和录制(MediaPlayer,SoundPool,MediaRecorder)
- JSP之Session生命周期
- 安卓虚拟摇杆
- iOS——越狱与免证书调试
- hadoop操作命令
- 计算器的简单实现
- SoundPool、 VedioView、 MediaRecorder、 SurfaceView、 Camera、
- hdu 2680畅通工程续
- 命令行方式下登录SqlPlus,密码含特殊字符
- codeforces_#135_div2_219A
- ImageView 使用网络图片
- 堆和栈的区别
- Android Studio 代码页面保护色配置
- Struts2 OGNL总结
- 编译原理:第五节