--------------------------------------------AndroidManifest.xml----------------------------------

<manifestxmlns:android="http://schemas.android.com/apk/res/android"

package="com.ch19"

android:versionCode="1"

android:versionName="1.0">

<uses-sdk

android:minSdkVersion="10"

android:targetSdkVersion="15"/>

<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme">

<activity

android:name=".MainActivity"

android:label="@string/title_activity_main">

<intent-filter>

<actionandroid:name="android.intent.action.MAIN"/>

<categoryandroid:name="android.intent.category.LAUNCHER"/>

</intent-filter>

</activity>

</application>

</manifest>

--------------------------------------------activity_main.xml-------------------------------------

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/LinearLayout1"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:weightSum="1"

android:orientation="vertical">

<SurfaceView

android:id="@+id/surfaceVIew"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:layout_weight="0.15"

tools:context=".MainActivity"/>

<LinearLayout

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:layout_weight="0.85">

<Button

android:id="@+id/btn1"

android:text="开唱"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

<Button

android:id="@+id/btn2"

android:text="暂停"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

<Button

android:id="@+id/btn3"

android:text="停止"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

<Button

android:id="@+id/btn4"

android:text="调低音量"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

<Button

android:id="@+id/btn5"

android:text="调高音量"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

</LinearLayout>

</LinearLayout>

--------------------------------------------MainActivity.java--------------------------------------

packagecom.ch19;

importjava.io.File;

importjava.io.IOException;

importandroid.app.Activity;

importandroid.media.AudioManager;

importandroid.media.MediaPlayer;

importandroid.os.Bundle;

importandroid.os.Environment;

importandroid.util.Log;

importandroid.view.SurfaceHolder;

importandroid.view.SurfaceView;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.view.Window;

importandroid.view.WindowManager;

importandroid.widget.Button;

/**

*

*项目名称:com.ch19

*类名称:MainActivity

*类描述:播放、暂停、停止、增加音量、减少音量

*创建人:方勇

*创建时间:2012-11-29下午1:36:47

*Copyright(c)方勇-版权所有

*/

publicclassMainActivityextendsActivity{

privateButtonbtn_play,btn_pause,btn_stop,btn_low,btn_height;

privateSurfaceViewmSurfaceView;

/*播放视频对象*/

privateMediaPlayermediaPlayer;

/*系统声音*/

privateAudioManageraudioManager;

/*播放位置*/

privateintposition;

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setWindow();

setContentView(R.layout.activity_main);

findViews();

setListeners();

mediaPlayer=newMediaPlayer();

setSurfaceView();

}

//横竖屏切换时的处理

@Override

protectedvoidonSaveInstanceState(BundleoutState){

if(mediaPlayer!=null&&mediaPlayer.isPlaying()){

outState.putInt("position",mediaPlayer.getCurrentPosition());

}

super.onSaveInstanceState(outState);

}

//横竖屏切换后的处理

@Override

protectedvoidonRestoreInstanceState(BundlesavedInstanceState){

if(savedInstanceState.containsKey("position")){

position=savedInstanceState.getInt("position");

}

super.onRestoreInstanceState(savedInstanceState);

}

/*实例化UI*/

privatevoidfindViews(){

btn_play=(Button)findViewById(R.id.btn1);

btn_pause=(Button)findViewById(R.id.btn2);

btn_stop=(Button)findViewById(R.id.btn3);

btn_low=(Button)findViewById(R.id.btn4);

btn_height=(Button)findViewById(R.id.btn5);

mSurfaceView=(SurfaceView)findViewById(R.id.surfaceVIew);

audioManager=(AudioManager)getSystemService(AUDIO_SERVICE);

}

/*为5个按钮设置监听*/

privatevoidsetListeners(){

btn_play.setOnClickListener(onClickListener);

btn_pause.setOnClickListener(onClickListener);

btn_stop.setOnClickListener(onClickListener);

btn_low.setOnClickListener(onClickListener);

btn_height.setOnClickListener(onClickListener);

}

/*屏幕为全屏、无标题*/

privatevoidsetWindow(){

requestWindowFeature(Window.FEATURE_NO_TITLE);//无标题

////设置窗体始终点亮

//getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,

//WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

////设置窗体背景模糊

//getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND);

//设置窗体全屏

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

}

/*播放视频*/

privatevoidplayMedia(){

/*初始化状态*/

mediaPlayer.reset();

/*设置声音流类型*/

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

/*设置mp3\mp4加载路径*/

Filefile=newFile(Environment.getExternalStorageDirectory(),"sv.3gp");

try{

mediaPlayer.setDataSource(file.getAbsolutePath());

//缓冲

mediaPlayer.prepare();

//开始播放

mediaPlayer.start();

//具体位置

Log.i("position",position+"------");

mediaPlayer.seekTo(position);

//视频输出到View

mediaPlayer.setDisplay(mSurfaceView.getHolder());

//重置位置为0

position=0;

}catch(IllegalArgumentExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(IllegalStateExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

/*设置surfaceView视图*/

privatevoidsetSurfaceView(){

//createsa"push"surface

mSurfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

//设置事件,回调函数

mSurfaceView.getHolder().addCallback(newSurfaceHolder.Callback(){

/*SurfaceView创建时*/

@Override

publicvoidsurfaceCreated(SurfaceHolderholder){

if(position>0){

playMedia();

position=0;

}

}

@Override

publicvoidsurfaceChanged(SurfaceHolderholder,intformat,intwidth,intheight){

//TODOAuto-generatedmethodstub

}

/*SurfaceView销毁视图*/

@Override

publicvoidsurfaceDestroyed(SurfaceHolderholder){

if(mediaPlayer.isPlaying()){

mediaPlayer.stop();

}

/*Activity销毁时停止播放,释放资源。不做这个操作,即使退出,还是能听到视频的声音*/

mediaPlayer.release();

}

});

}

//设置5个按钮的监听事件

privateOnClickListeneronClickListener=newOnClickListener(){

@Override

publicvoidonClick(Viewv){

switch(v.getId()){

caseR.id.btn1://播放

if(mediaPlayer!=null&&mediaPlayer.isPlaying()){

return;

}else{

playMedia();

}

break;

caseR.id.btn2://暂停

if(mediaPlayer!=null&&mediaPlayer.isPlaying()){

position=mediaPlayer.getCurrentPosition();

mediaPlayer.pause();

}else{

return;

}

break;

caseR.id.btn3://停止

if(mediaPlayer!=null&&mediaPlayer.isPlaying()){

mediaPlayer.stop();

position=0;

}else{

return;

}

break;

caseR.id.btn4://调小音量

//获取当前的音乐音量

intvolume=audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

Log.v("Volume","volume"+volume);

//音量>0

if(volume>0){

audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_LOWER,0);

}else{

return;

}

break;

caseR.id.btn5://调大音量

volume=audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

//音量<100

if(volume<audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)){

audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_RAISE,0);

}else{

return;

}

break;

}

}

};

}

--------------------------------------------效果----------------------------------------------------

ch019 Android surfaceView_第1张图片

<!--EndFragment-->

更多相关文章

  1. Catalog Service - 解析微软微服务架构实例代码
  2. 介绍一个微软开源项目网站--CodePlex
  3. 具体分析微软的xml解析器
  4. 继 GitHub 后微软又收购了 npm
  5. 想来微软实习吗?
  6. 尝鲜!微软首个AI量化投资开源平台Qlib上手体验!
  7. 10% + 10% = 0.11 ?是 bug 还是 feature ?微软开源的计算器项目告
  8. 大新闻!Python 之父重新出山,加入微软开发部
  9. GitHub 热门:微软新开源的 Python 静态类型检查器

随机推荐

  1. Android各类资源收集(持续更新中...)
  2. Android(安卓)Databinding数据绑定框架
  3. Android第三方异步网路加载库AsyncHttpCl
  4. Android(安卓)7.1 APP 启动流程分析
  5. Android(安卓)开发技术周报 Issue#285
  6. Android(安卓)串口开发(一) 串口读写操作
  7. Android monkeyrunner整理
  8. android之样式和主题
  9. Android实现Splash界面全屏效果
  10. Android(安卓)- 布局(layout) 详解