Android 播放音频和视频
2016-03-06 09:52
561 查看
目前只能播放项目中的音频和视频文件,如果要播放手机中文件还待进一步研究
一、播放音频:
public class MainActivity extends Activity { VideoView vv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vv = (VideoView) findViewById(R.id.surface); //播放视频需要使用VideoView控件 findViewById(R.id.button1).setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { play_video(); } }); findViewById(R.id.button2).setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { play_music(); } }); } private void play_video() { String uri = "android.resource://" + getPackageName() + "/" + R.raw.three; //注意构造的url!!! vv.setVideoURI(Uri.parse(uri)); // 添加资源的url vv.setMediaController(new MediaController(this)); //给空间绑定安卓自带的控制器 vv.start(); //停止就是调用stop方法 } private void play_music() { MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.bkg); //添加资源id mediaPlayer.setLooping(true); //是否循环播放 mediaPlayer.start(); //停止就是调用stop方法 } }
今天测试了下,终于把一个错误给解决了,在真机上测试的时候要注意视频的格式!!如果只有声音没有图像那么应该就是视频格式的问题了
二、播放视频
(1)使用mediaplayer播放视频:
package com.example.activity; import java.io.IOException; import android.app.Activity; import android.content.res.AssetFileDescriptor; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.net.Uri; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.SurfaceHolder; import android.view.SurfaceHolder.Callback2; import android.view.SurfaceView; import android.view.View; import com.example.dasaitest.R; public class MainActivity extends Activity implements Callback2 { SurfaceView sv; MediaPlayer mp; SurfaceHolder surfaceHolder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.media_shipin); init(); play(); } public void play() { surfaceHolder = sv.getHolder(); surfaceHolder.addCallback(this); } public void init() { sv = (SurfaceView) this.findViewById(R.id.surface); DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); } @Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub Uri uri = Uri.parse("android.resource://" + getApplicationContext().getPackageName() + "/" + R.drawable.haha); try { mp = new MediaPlayer(); mp.setDisplay(surfaceHolder); mp.setDataSource(this, uri); // AssetFileDescriptor af = getAssets().openFd("haha.3gp"); // mp.setDataSource(af.getFileDescriptor(), af.getStartOffset(), // af.getLength()); mp.prepare(); mp.start(); mp.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { // TODO Auto-generated method stub sv.setVisibility(View.GONE); } }); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub } @Override public void surfaceRedrawNeeded(SurfaceHolder holder) { // TODO Auto-generated method stub } }
需要在布局文件中加surfaceview控件~~
(2)使用VideoView播放视频:
①:加控件<VideoView android:id="@+id/vv" android:layout_width="match_parent" android:layout_height="250dp" />
②:加代码:
//可加视频播放控制器 VideoView videoView; MediaController controller; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.videoview); Uri uri = Uri.parse("android.resource://com.example.playvideo/" + R.drawable.video); /*com.example.playvideo是该Activity所在的包名 */ videoView = (VideoView) findViewById(R.id.vv); videoView.setVideoURI(uri); videoView.start(); //下面是设置和添加视频播放控制器 controller = new MediaController(this); controller.setMediaPlayer(videoView); videoView.setMediaController(controller); }
如果是播放手机存储卡上的音频或视频,只要找到文件的绝对路径就可以播放
相关文章推荐
- Android Studio中新建library项目。
- Android应用程序打包时,出现错误:"XXX" is not translated in "af" , "am" , "ar" ....
- android px sp dp (-百度)(菜鸟新手)
- android Butt 按钮单击事件的监听
- Android ActionBar的基本用法(转自bigconvience)
- huhx的android封神之路-------->Activity的生命周期
- Android高性能ORM数据库DBFlow入门
- Android Studio中的项目 和引用Library中的minSdkVersion要 一致。
- 8种android 对话框(Dialog)使用方法详解
- Android布局(RelativeLayout、TableLayout等)使用方法
- 深入理解Android消息处理系统——Looper、Handler、Thread
- Android Drawable
- Android自定义控件ImageViwe(一)——依据控件的大小来设置缩放图片显示
- 关于两个可移动ViewGroup触摸事件冲突处理
- Android 图片如何高效加载与缓存 —— (3) 改进和增加功能
- Android Studio 各种配置(更新中)
- 安卓学习笔记(2)
- 聊一聊Android 6.0的运行时权限
- Android模拟器Genymotion安装
- android引导页viewpager实现