一,MainActivity.java源码
import android.app.Activity;
import android.graphics.PixelFormat;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
public class EX07_14 extends Activity
implements SurfaceHolder.Callback
{
private TextView mTextView01;
private static final String TAG = "HIPPO_MediaPlayer"; //打印日志的标志
private MediaPlayer mMediaPlayer01;
private SurfaceView mSurfaceView01;
private SurfaceHolder mSurfaceHolder01;
private ImageButton mPlay;
private ImageButton mPause;
private ImageButton mReset;
private ImageButton mStop;
private boolean bIsPaused = false;
private boolean bIsReleased = false;
private String strVideoPath = "";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if(!checkSDCard()) //如果没有SD卡
{
mMakeTextToast
(
getResources().getText(R.string.str_err_nosd).toString(),
true
);
}
mTextView01 = (TextView)findViewById(R.id.myTextView1);
getWindow().setFormat(PixelFormat.UNKNOWN);
mSurfaceView01 = (SurfaceView) findViewById(R.id.mSurfaceView1); //显示动画用的容器
mSurfaceHolder01 = mSurfaceView01.getHolder();
mSurfaceHolder01.addCallback(this);
mSurfaceHolder01.setFixedSize(176,144);
mSurfaceHolder01.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mPlay = (ImageButton) findViewById(R.id.play);
mPause = (ImageButton) findViewById(R.id.pause);
mReset = (ImageButton) findViewById(R.id.reset);
mStop = (ImageButton) findViewById(R.id.stop);
strVideoPath = "/sdcard/a.3gp";
mPlay.setOnClickListener(new ImageButton.OnClickListener()
{
public void onClick(View view)
{
if(checkSDCard())
{
playVideo(strVideoPath);
}
}
});
mPause.setOnClickListener(new ImageButton.OnClickListener()
{
public void onClick(View view)
{
if(checkSDCard())
{
if (mMediaPlayer01 != null)
{
if(bIsReleased == false)
{
if(bIsPaused==false)
{
mMediaPlayer01.pause();
bIsPaused = true;
mTextView01.setText(R.string.str_pause);
}
else if(bIsPaused==true)
{
mMediaPlayer01.start();
bIsPaused = false;
mTextView01.setText(R.string.str_play);
}
}
}
}
}
});
mReset.setOnClickListener(new ImageButton.OnClickListener()
{
public void onClick(View view)
{
if(checkSDCard())
{
if(bIsReleased == false)
{
if (mMediaPlayer01 != null)
{
mMediaPlayer01.seekTo(0);
}
}
}
}
});
mStop.setOnClickListener(new ImageButton.OnClickListener()
{
public void onClick(View view)
{
if(checkSDCard())
{
if (mMediaPlayer01 != null)
{
if(bIsReleased==false)
{
mMediaPlayer01.stop();
mMediaPlayer01.release();
bIsReleased = true;
mTextView01.setText(R.string.str_stop);
}
}
}
}
});
}
private void playVideo(String strPath)
{
mMediaPlayer01 = new MediaPlayer();
mMediaPlayer01.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer01.setDisplay(mSurfaceHolder01);
try
{
mMediaPlayer01.setDataSource(strPath);
}
catch (Exception e)
{
// TODO Auto-generated catch block
mTextView01.setText("setDataSource Exceeption:"+e.toString());
}
try
{
mMediaPlayer01.prepare();
}
catch (Exception e)
{
// TODO Auto-generated catch block
mTextView01.setText("prepare Exceeption:"+e.toString());
}
mMediaPlayer01.start();
bIsReleased = false;
mTextView01.setText(R.string.str_play);
mMediaPlayer01.setOnCompletionListener
(new MediaPlayer.OnCompletionListener()
{
@Override
public void onCompletion(MediaPlayer arg0)
{
// TODO Auto-generated method stub
mTextView01.setText(R.string.str_stop);
}
});
}
private boolean checkSDCard()
{
if(android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
{
return true;
}
else
{
return false;
}
}
public void mMakeTextToast(String str, boolean isLong)
{
if(isLong==true)
{
Toast.makeText(EX07_14.this, str, Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(EX07_14.this, str, Toast.LENGTH_SHORT).show();
}
}
@Override
public void surfaceChanged
(SurfaceHolder surfaceholder, int format, int w, int h)
{
// TODO Auto-generated method stub
Log.i(TAG, "Surface Changed");
}
@Override
public void surfaceCreated(SurfaceHolder surfaceholder)
{
// TODO Auto-generated method stub
Log.i(TAG, "Surface Changed");
}
@Override
public void surfaceDestroyed(SurfaceHolder surfaceholder)
{
// TODO Auto-generated method stub
Log.i(TAG, "Surface Destroyed");
}
}
二,main.xml 源码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/white"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/myTextView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@drawable/blue"
android:text="@string/hello"
/>
<SurfaceView
android:id="@+id/mSurfaceView1"
android:layout_width="100px"
android:layout_height="100px">
</SurfaceView>
<SeekBar android:id="@+id/seekBar" android:layout_height="wrap_content" android:layout_width="fill_parent" />
<LinearLayout
android:orientation="horizontal"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:padding="10dip"
>
<ImageButton android:id="@+id/play"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/play"
/>
<ImageButton android:id="@+id/pause"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/pause"
/>
<ImageButton android:id="@+id/reset"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/reset"
/>
<ImageButton android:id="@+id/stop"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/stop"
/>
</LinearLayout>
</LinearLayout>
三,源码中所需其余图片等 ,自备就可以。经测试通过可以播放,前提需要sdcard中已经传入播放文件
分享到:
相关推荐
Android实例源码-音乐播放器类安卓源代码(9例) Android多线程断点续传下载+在线播放音乐 GL音乐播放器 基于SDL、FFmpeg的android播放器源码 简单实用的音乐播放器 简单音乐播放器,实现了播放器基本功能,使用...
简易的android视屏播放器
两个Android项目源码: 一:使用nanohttpd-2.3.1.jar搭建简易Android服务器,并对外提供手机内部的视频地址。 二:从简易服务器中通过接口获取视频地址信息。通过VideoView进行视频内容播放。
7.3 播放视频 7.4 录制歌曲 7.5 相机设置 7.6 闹钟设置 7.7 铃声设置 7.8 小结 第8章 网络与通信 8.1 网络通信基础 8.1.1 无线网络技术 8.1.2 Android网络基础 8.2 HTTP通信 8.2.1 ...
互动直播系统能够快速搭建的支持视频播放、图片分享、语音文字转化、刷屏送礼等互动方式,高质量、低时延、稳定快速、多协议、操作简易、支持高并发、大数据、全终端的泛娱乐化手机视频直播平台。 本帖提供的源码...
安卓Android原生App源码、苹果ios原生App源码,附带超级详细的全套配置安装教程 (包括直播系统服务器配置、安装部署、ios打包上架、短信使用、 支付平台申请文档、后台配置说明、直播二次开发文档等)!
7.3 播放视频 7.4 录制歌曲 7.5 相机设置 7.6 闹钟设置 7.7 铃声设置 7.8 小结 第8章 网络与通信 8.1 网络通信基础 8.1.1 无线网络技术 8.1.2 Android网络基础 8.2 HTTP通信 8.2.1 HttpURLConnection接口 8.2.2 ...
方维互动直播系统能够快速搭建的支持视频播放、图片分享、语音文字转化、刷屏送礼等互动方式,高质量、低时延、稳定快速、多协议、操作简易、支持高并发、大数据、全终端的泛娱乐化手机视频直播平台。 本帖提供的...
Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来...
在Andriod Studio中使用Broadcast实现了简易音乐播放器的功能。可以进行播放、暂停、歌曲切换的功能。效果如下图: 由于无法上传视频,故展示GIF,没有音乐播放 项目源码 已发布至gitee 准备工作 新建assets文件夹,...
此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...
有文字有图片还有视频可以播放,全方位给用户带来视听娱乐享受,随时随地获取时事新闻。用作毕业设计都完全可以,用作大作业那绝对也是极佳。具体的演示可以参考我的对应博客,下载下来即可运行。 博客介绍:...
一:使用nanohttpd-2.3.1.jar搭建简易Android服务器,并对外提供手机内部的视频地址。 二:从简易服务器中通过接口获取视频地址信息。通过VideoView进行视频内容播放。 三:增加Android内置编译使用的Android.mk。并...