Android_多媒体详解

来源:互联网 发布:nginx 压力测试 编辑:程序博客网 时间:2024/05/29 12:02

Android_多媒体详解

①播放音频

在Android中播放音频文件一般是使用MediaPlayer类来实现的。MediaPlayer包含以下控制方法:
1、setDataSource():设置要播放的音频文件的位置
2、prepare():播放之前完成准备工作
3、start():开始或继续播放
4、pause():暂停播放
5、reset():重置
6、seekTo():从指定位置位置开始播放
7、stop():停止
8、release():释放相关资源
9、isPlaying():是否正在播放
10、getDuration():获取音频文件长度

实例:
public class MainActivity extends Activity implements OnClickListener {private Button play;private Button pause;private Button stop;private MediaPlayer mediaPlayer = new MediaPlayer();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);play = (Button) findViewById(R.id.play);pause = (Button) findViewById(R.id.pause);stop = (Button) findViewById(R.id.stop);play.setOnClickListener(this);pause.setOnClickListener(this);stop.setOnClickListener(this);initMediaPlayer();}private void initMediaPlayer() {try {File file = new File(Environment.getExternalStorageDirectory(),"music.mp3");mediaPlayer.setDataSource(file.getPath());mediaPlayer.prepare();} catch (Exception e) {e.printStackTrace();}}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.play:if (!mediaPlayer.isPlaying()) {mediaPlayer.start();}break;case R.id.pause:if (mediaPlayer.isPlaying()) {mediaPlayer.pause();}break;case R.id.stop:if (mediaPlayer.isPlaying()) {mediaPlayer.reset();initMediaPlayer();}break;default:break;}}@Overrideprotected void onDestroy() {super.onDestroy();if (mediaPlayer != null) {mediaPlayer.stop();mediaPlayer.release();}}}

②播放视频

播放视频主要使用VideoView类来实现。常用方法:
1、setVideoPath():设置播放文件位置
2、start():开始
3、pause():暂停
4、resume():重新开始
5、seekTo():从指定位置开始
6、isPlaying():是否正在播放
7、getDuration():载入长度

实例:
public class MainActivity extends Activity implements OnClickListener {private VideoView videoView;private Button play;private Button pause;private Button replay;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);play = (Button) findViewById(R.id.play);pause = (Button) findViewById(R.id.pause);replay = (Button) findViewById(R.id.replay);videoView = (VideoView) findViewById(R.id.video_view);play.setOnClickListener(this);pause.setOnClickListener(this);replay.setOnClickListener(this);initVideoPath();}private void initVideoPath() {File file = new File(Environment.getExternalStorageDirectory(), "movie.3gp");videoView.setVideoPath(file.getPath());}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.play:if (!videoView.isPlaying()) {videoView.start();}break;case R.id.pause:if (videoView.isPlaying()) {videoView.pause();}break;case R.id.replay:if (videoView.isPlaying()) {videoView.resume();}break;}}@Overrideprotected void onDestroy() {super.onDestroy();if (videoView != null) {videoView.suspend();}}}

③调用摄像头和相册

public class MainActivity extends Activity {public static final int TAKE_PHOTO = 1;public static final int CROP_PHOTO = 2;private Button takePhoto;private Button chooseFromAlbum;private ImageView picture;private Uri imageUri;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);takePhoto = (Button) findViewById(R.id.take_photo);chooseFromAlbum = (Button) findViewById(R.id.choose_from_album);picture = (ImageView) findViewById(R.id.picture);takePhoto.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {File outputImage = new File(Environment.getExternalStorageDirectory(),"output_image.jpg");try {if (outputImage.exists()) {outputImage.delete();}outputImage.createNewFile();} catch (IOException e) {e.printStackTrace();}imageUri = Uri.fromFile(outputImage);Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);startActivityForResult(intent, TAKE_PHOTO);}});chooseFromAlbum.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {File outputImage = new File(Environment.getExternalStorageDirectory(),"output_image.jpg");try {if (outputImage.exists()) {outputImage.delete();}outputImage.createNewFile();} catch (IOException e) {e.printStackTrace();}imageUri = Uri.fromFile(outputImage);Intent intent = new Intent("android.intent.action.GET_CONTENT");intent.setType("image/*");intent.putExtra("crop", true);intent.putExtra("scale", true);intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);startActivityForResult(intent, CROP_PHOTO);}});}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {switch (requestCode) {case TAKE_PHOTO:if (resultCode == RESULT_OK) {Intent intent = new Intent("com.android.camera.action.CROP");intent.setDataAndType(imageUri, "image/*");intent.putExtra("scale", true);intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);startActivityForResult(intent, CROP_PHOTO);}break;case CROP_PHOTO:if (resultCode == RESULT_OK) {try {Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));picture.setImageBitmap(bitmap);} catch (FileNotFoundException e) {e.printStackTrace();}}break;default:break;}}}

④使用通知

public class MainActivity extends Activity implements OnClickListener {private Button sendNotice;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sendNotice = (Button) findViewById(R.id.send_notice);sendNotice.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.send_notice:NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);Notification notification = new Notification(R.drawable.ic_launcher, "This is ticker text",System.currentTimeMillis());Uri soundUri = Uri.fromFile(new File("/system/media/audio/ringtones/Basic_tone.ogg"));notification.sound = soundUri;long[] vibrates = {0, 1000, 1000, 1000};notification.vibrate = vibrates;notification.ledARGB = Color.GREEN;notification.ledOnMS = 1000;notification.ledOffMS = 1000;notification.flags = Notification.FLAG_SHOW_LIGHTS;//notification.defaults = Notification.DEFAULT_ALL;Intent intent = new Intent(this, NotificationActivity.class);PendingIntent pi = PendingIntent.getActivity(this, 0, intent,PendingIntent.FLAG_CANCEL_CURRENT);notification.setLatestEventInfo(this, "This is content title","This is content text", pi);manager.notify(1, notification);break;default:break;}}}




























































0 0
原创粉丝点击