从零開始学android<mediaplayer自带播放器(视频播放).四十九.>
SurfaceHolder显示一个surface的抽象接口,使你能够控制surface的大小和格式。 以及在surface上编辑像素,和监视surace的改变。这个接口通常通过SurfaceView类实现。
<span style="font-size:18px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" > <ImageButton
android:id="@+id/imageButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/play" /> <SurfaceView
android:id="@+id/surfaceview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/imageButton1" /> <ImageButton
android:id="@+id/imageButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/surfaceview"
android:layout_alignRight="@+id/surfaceview"
android:src="@drawable/stop" /> <ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/surfaceview"
android:layout_centerHorizontal="true"
android:layout_marginBottom="162dp"
/> </RelativeLayout>
</span>
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzYxNjk3Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
<span style="font-size:18px;">package com.example.mediaplayer2; import java.io.File; import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnHoverListener;
import android.widget.ImageButton;
import android.widget.ImageView; public class MainActivity extends Activity {
private ImageButton play = null;// 播放
private ImageButton stop = null;// 停止播放
private MediaPlayer media = null;
private ImageView image=null ;
private SurfaceView surfaceView = null;
private SurfaceHolder surfaceHolder = null;
private Boolean pauseFlag=false; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_main);
this.play = (ImageButton) super.findViewById(R.id.imageButton1);
this.stop = (ImageButton) super.findViewById(R.id.imageButton2);
this.surfaceView = (SurfaceView) super.findViewById(R.id.surfaceview);// 实例化SurfaceView
this.surfaceHolder = this.surfaceView.getHolder();// 实例化SurfaceHolder
this.surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);// 设置格式
this.image=(ImageView)this.findViewById(R.id.imageView1);
this.media = new MediaPlayer();// 实例化MeidaPlayer组件
try {
// 取得SD卡上的视频文件
String path = Environment.getExternalStorageDirectory()
+ File.separator + "Movies" + File.separator + "abc.mp4";
// 设置资源
this.media.setDataSource(path); // 少了一些推断
} catch (Exception e) {
e.printStackTrace();
}
// 分别对開始播放盒停止播放进行监听
this.play.setOnClickListener(new PlayOnClickListenerImpl());
this.stop.setOnClickListener(new StopOnClickListenerImpl());
this.surfaceView.setOnClickListener(new pauseOrstart() );
this.surfaceView.setOnHoverListener(new OnHoverListener() { public boolean onHover(View v, MotionEvent event) {
// TODO Auto-generated method stub
if (MainActivity.this.media.isPlaying()) {
MainActivity.this.image.setImageResource(R.drawable.stop); }
else {
MainActivity.this.image.setImageResource(R.drawable.play);
}
return true;
}
});
} private class PlayOnClickListenerImpl implements OnClickListener {
@Override
public void onClick(View v) {
// 设置音频格式啊
MainActivity.this.media
.setAudioStreamType(AudioManager.STREAM_MUSIC);
// 设置播放的范围
MainActivity.this.media.setDisplay(MainActivity.this.surfaceHolder);
try {
// 准备播放
MainActivity.this.media.prepare();
} catch (Exception e) {
}
// 開始播放
MainActivity.this.media.start();
} } private class StopOnClickListenerImpl implements OnClickListener {
@Override
public void onClick(View v) {
// 停止播放
if (MainActivity.this.media!=null) { MainActivity.this.media.stop();
}
}
}
private class pauseOrstart implements OnClickListener{ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (MainActivity.this.media!=null) { if (MainActivity.this.pauseFlag) {
MainActivity.this.media.start();
MainActivity.this.pauseFlag=false;
}
else {
MainActivity.this.media.pause();
MainActivity.this.pauseFlag=true;
}
}
}}
}
</span>
从零開始学android<mediaplayer自带播放器(视频播放).四十九.>的更多相关文章
- 从零開始学android<Bitmap图形组件.四十七.>
android.graphics.Bitmap(位图)是Android手机中专门提供的用于操作图片资源的操作类,使用此类能够直接从资源文件之中进行图片资源的读取.而且对这些图片进行一些简单的改动. 经 ...
- 从零開始学android<数据存储(1)SharedPreferences属性文件.三十五.>
在android中有五种保存数据的方法.各自是: Shared Preferences Store private primitive data in key-value pairs. 相应属性的键值 ...
- 第13章、布局Layouts之RelativeLayout相对布局(从零開始学Android)
RelativeLayout相对布局 RelativeLayout是一种相对布局,控件的位置是依照相对位置来计算的,后一个控件在什么位置依赖于前一个控件的基本位置,是布局最经常使用,也是最灵活的一种布 ...
- 从零開始学android<SeekBar滑动组件.二十二.>
拖动条能够由用户自己进行手工的调节,比如:当用户须要调整播放器音量或者是电影的播放进度时都会使用到拖动条,SeekBar类的定义结构例如以下所看到的: java.lang.Object ↳ an ...
- 从零開始学android<TabHost标签组件.二十九.>
TabHost主要特点是能够在一个窗体中显示多组标签栏的内容,在Android系统之中每一个标签栏就称为一个Tab.而包括这多个标签栏的容器就将其称为TabHost.TabHost类的继承结构例如以下 ...
- 从零開始学android<Menu菜单组件.三十.>
在Android系统之中.菜单一共同拥有三类:选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu). 今天我们就用几个样例来分别介绍下菜单的使用 acti ...
- 从零開始学android<ImageSwitcher图片切换组件.二十六.>
ImageSwitcher组件的主要功能是完毕图片的切换显示,比如用户在进行图片浏览的时候.能够通过button点击一张张的切换显示的图片,并且使用ImageSwitcher组件在每次切换的时候也能够 ...
- 从零開始学android<RelativeLayout相对布局.十六.>
相对布局管理器指的是參考某一其它控件进行摆放,能够通过控制,将组件摆放在一个指定參考组件的上.下.左.右等位置,这些能够直接通过各个组件提供的属性完毕. 以下介绍一下各个方法的基本使用 No. 属性名 ...
- 从零開始学android<使用嵌套布局实现计算器界面.十七.>
所谓的嵌套布局就是在一个文件里嵌套多个布局文件 <span style="font-size:18px;"> <LinearLayout android:layo ...
随机推荐
- Scalatra文件下载时中文乱码
可以采用Servlet平台的解决方法进行解决: Ok(file.get, Map( "Content-Type" -> (file.contentType.getOrElse ...
- jdbc防止sql注入-PreparedStatement
jdbc防止sql注入 jdbc防止sql注入-PreparedStatement public List getUserByName(String name,String password){ ...
- 使用Python创建MySQL数据库实现字段动态添加以及动态的插入数据
应用场景: 我们须要设计一个数据库来保存多个文档中每一个文档的keyword. 假如我们每一个文档字符都超过了1000,取当中出现频率最大的为我们的keyword. 如果每个文档的keyword都超过 ...
- 在Tomcat下指定Jsp生成的Java文件路径
在tomcat的配置文件server.xml(路径:tomcat路径\conf下面)里,找到:<Context docBase="D:/workspace/icinfo/trunk/w ...
- ibatis 批量更新(一)
1.4.2.3 批量修改 支持单个动态更新.批量动态更新 <update id="updateCONSULT_SCHEDULEDynamic" parameterClas ...
- oracle默认连接数150
当oracle连接数超过最大的150登录不上 sqlplus / as sysdba ###报错,提示连接数未释放! ---释放网络连接数 ps -ef |grep ora |grep " ...
- ACM遇到的问题与解决方案
C++防止栈溢出措施: 只要在你的代码里加上下面这句话, OK,栈溢出直接搞定!!! #pragma comment(linker, "/STACK:102400000,102400000& ...
- VC6.0设置注释快捷键
第一步:工具栏上右键选择Customize(定制),选择“Add-ins and Macro Files(附加项和宏文件)”页,把SAMPLE前面打上钩. 第二步:选择“Commands(命令)”页, ...
- 10个常见的Android 新手误区
在过去十年的移动开发平台中,作为资深的移动开发人员,我们认为Android平台是一个新手最广为人知的平台.它不仅是一个廉价的工具,而且有着良好的开发社区,以及从所周知的编程语言(Java),使得开发A ...
- Windows下面安装和配置Solr 4.9(三)支持中文分词器
首先将下载解压后的solr-4.9.0的目录里面F:\tools\开发工具\Lucene\solr-4.9.0\contrib\analysis-extras\lucene-libs找到lucene- ...