Android开发_多媒体的简单应用
来源:互联网 发布:linux 添加开机动画 编辑:程序博客网 时间:2024/05/21 09:51
SoundPool类
SoundPool类适合用来播放一些短暂的反应速度要求高的声音。SoundPool载入音乐文件使用了独立的线程,不会阻塞UI主线程的操作。SoundPool类支持同时播放多个音效。 应用实例如下:
public class MainActivity extends Activity {private SoundPool sp;private int soundID;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/** * maxStreams : 音源的个数 streamType : 音源的类型 srcQuality : 音源的质量 */sp = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);// 实例化AudioManager对象,控制声音AudioManager am = (AudioManager) this.getSystemService(MainActivity.AUDIO_SERVICE);// 最大音量float audioMaxVolumn = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);// 当前音量float audioCurrentVolumn = am.getStreamVolume(AudioManager.STREAM_MUSIC);float volumnRatio = audioCurrentVolumn / audioMaxVolumn;// 装载音源,返回相应的idsoundID = sp.load(this, R.raw.song, 1);// 播放声音,priority:优先级,0最低,loop:循环次数,0是不循环,-1是永远循环,rate:回放速度,0.5-2.0之间,1为正常速度// sp.play(soundID, leftVolume, rightVolume, priority,loop, rate);sp.play(soundID, volumnRatio, volumnRatio, 1, 0, 1);}}
MediaPlayer类
使用MediaPlayer类来播放音频文件
public class Main extends Activity implements OnClickListener,OnCompletionListener{private MediaPlayer mediaPlayer;private Button btnPause;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);Button btnStart1 = (Button)findViewById(R.id.btnStart1);Button btnStart2 = (Button)findViewById(R.id.btnStart2);Button btnStop = (Button)findViewById(R.id.btnStop);btnPause = (Button)findViewById(R.id.btnPause);btnStart1.setOnClickListener(this);btnStart2.setOnClickListener(this);btnStop.setOnClickListener(this);btnPause.setOnClickListener(this);}// 回掉方法,监听音频文件播放完毕public void onCompletion(MediaPlayer mp){mp.release();setTitle("释放资源");}public void onClick(View view){try{switch (view.getId()) {case R.id.btnStart1: // 播放工程目录下的文件mediaPlayer = MediaPlayer.create(this, R.raw.music);mediaPlayer.setOnCompletionListener(this);// 不需要调用prepare()方法,因为在create()中已经调用过了mediaPlayer.start();break;case R.id.btnStart2:// 播放SD卡上的音频文件(/sdcard/music.mp3)mediaPlayer = new MediaPlayer();mediaPlayer.setDataSource("/sdcard/music.mp3");mediaPlayer.prepare();mediaPlayer.start();break;case R.id.btnStop:if(mediaPlayer != null){if(mediaPlayer.isPlaying())mediaPlayer.stop();}break;case R.id.btnPause:if(mediaPlayer != null){if("播放".equals(btnPause.getText().toString())){mediaPlayer.start();btnPause.setText("暂停");}else if("暂停".equals(btnPause.getText().toString())){mediaPlayer.pause();btnPause.setText("播放");}}break;default:break;}}catch (Exception e) {// TODO: handle exception}}}
使用MediaPlayer类来播放视频文件
public class MainActivity extends Activity {private SurfaceView sv;private SurfaceHolder sh;private Callback callback = new Callback() {MediaPlayer mp = null;@Overridepublic void surfaceDestroyed(SurfaceHolder arg0) {if (mp != null) {mp.stop();// 停止播放mp.release();// 释放资源mp = null;}}@Overridepublic void surfaceCreated(SurfaceHolder arg0) {mp = MediaPlayer.create(this, R.raw.move);try {mp.prepare();// 准备播放} catch (IllegalStateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}mp.setDisplay(sh);mp.start();// 播放视频}@Overridepublic void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2,int arg3) {}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);sv = new SurfaceView(this);sh = sv.getHolder();sh.addCallback(callback);setContentView(sv);}}
使用VideoView类来播放视频文件
<span style="font-size:14px;">public class MainActivity extends Activity {private VideoView vv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);vv = new VideoView(this);setContentView(vv);vv.setVideoPath("/mnt/sdcard/movie.mp4");vv.setMediaController(new MediaController(this));}}</span>
更详细MediaPlayer类介绍:http://www.eoeandroid.com/thread-176453-1-1.html(引用)
MediaRecorder录音
需要获取的权限:<uses-permission android:name="android.permission.RECORD_AUDIO" />
<span style="font-size:14px;">public class MainActivity extends Activity {private MediaRecorder mr;private Button btnStart;// 开始录音按钮private Button btnStop;// 停止录音按钮@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btnStart = (Button) findViewById(R.id.btnStart);btnStop = (Button) findViewById(R.id.btnStop);btnStart.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {startRecord();// 开始录音}});btnStop.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {stopRecord();// 停止录音}});}// 停止录音方法protected void stopRecord() {if (mr != null) {mr.stop();mr.release();mr = null;}}// 开始录音方法protected void startRecord() {if (mr == null) {// 在sdcard卡下创建相应的文件目录File dir = new File(Environment.getExternalStorageDirectory(),"sounds");if (!dir.exists()) {dir.mkdir();}// 创建录音文件File file = new File(dir, System.currentTimeMillis() + "amr");if (!file.exists()) {try {file.createNewFile();} catch (IOException e) {e.printStackTrace();}}mr = new MediaRecorder();// 创建对象// 设置录音源mr.setAudioSource(MediaRecorder.AudioSource.MIC);// 设置输出格式mr.setOutputFormat(MediaRecorder.OutputFormat.AMR_WB);// 设置音源编码mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);// 设置输出路径mr.setOutputFile(file.getAbsolutePath());try {mr.prepare();// 准备录音mr.start();// 开始录音} catch (IllegalStateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}}</span>
通过调用系统的摄像头来进行拍照
public class Main extends Activity implements OnClickListener{private ImageView imageView;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);Button btnTakePicture = (Button)findViewById(R.id.btnTakePicture);btnTakePicture.setOnClickListener(this);imageView = (ImageView)findViewById(R.id.imageview);}protected void onActivityResult(int requestCode, int resultCode, Intent data){if(requestCode == 1){if(resultCode == Activity.RESULT_OK){Bitmap cameraBitmap = (Bitmap)data.getExtras().get("data");imageView.setImageBitmap(cameraBitmap);}}} public void onClick(View view) { Intent intent =new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, 1); }}
通过调用系统的摄像头来进行录像
public class Main extends Activity implements OnClickListener {public VideoView videoView;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);Button btnTakePicture = (Button) findViewById(R.id.btnTakePicture);btnTakePicture.setOnClickListener(this);videoView = (VideoView) findViewById(R.id.videoview);}protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == 1) { if(resultCode == Activity.RESULT_OK) { Uri uri = data.getData(); Cursor cursor = this.getContentResolver().query(uri,null,null,null,null); if(cursor.moveToFirst()) { String videoPath = cursor.getString(cursor.getColumnIndex("_data")); videoView.setVideoURI(Uri.parse(videoPath)); videoView.setMediaController(new MediaController(this)); videoView.start(); } } }}public void onClick(View view) {Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);startActivityForResult(intent, 1);}}
0 0
- Android开发_多媒体的简单应用
- Android开发--多媒体应用开发(二)--SoundPool的使用
- QT_PC学习_多媒体入门_简单场合应用
- Android 多媒体开发学习之制作一个简单的画板
- Android 多媒体开发学习之简单的音乐播放器
- Android手机多媒体的应用
- Android多媒体应用开发-控制摄像头拍照
- Android多媒体应用开发-控制摄像头拍照
- Android-应用开发-多媒体编程(九)
- Android多媒体应用开发系列(一) 拍照
- Android简单应用的开发
- Android开发_简单的网络编程
- Android开发--多媒体应用开发(一)--MediaPlayer的使用介绍
- Android多媒体开发【1】-- 利用SurfaceView + MediaPlayer开发最简单的视频播放器
- Android多媒体开发【2】-- 利用VideoView开发最简单的视频播放器
- Android多媒体开发【1】-- 利用SurfaceView + MediaPlayer开发最简单的视频播放器
- Android多媒体开发【2】-- 利用VideoView开发最简单的视频播放器
- HiMPP多媒体应用开发
- HiKey - UEFI
- linux中bg/fg/jobs/kill命令
- 【伯乐在线】HashMap的工作原理
- jar下载
- php(3)——运算符、流程控制
- Android开发_多媒体的简单应用
- 关于github上一个关于lytro的代码
- Java集合之List
- CocoaPods的安装与使用
- cocos2dx CCObject引用计数,内存释放分析(1)
- vim自动格式化代码
- 【Java之对象清理】finalize()的用途
- 第五章 Linux系统的远程登录
- GridControl 实践