package irdc.ex08_15;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.graphics.PixelFormat;
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.webkit.URLUtil;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;
/* Activity实现SurfaceHolder.Callback */
public class EX08_15 extends Activity implements SurfaceHolder.Callback
{
private TextView mTextView01;
private EditText mEditText01;
/* 建立MediaPlayer对象 */
private MediaPlayer mMediaPlayer01;
/* 用以配置MediaPlayer的SurfaceView */
private SurfaceView mSurfaceView01;
/* SurfaceHolder对象 */
private SurfaceHolder mSurfaceHolder01;
private ImageButton mPlay, mReset, mPause, mStop;
/* 识别MediaPlayer是否已被释放 */
private boolean bIsReleased = false;
/* 识别MediaPlayer是否正处于暂停 */
private boolean bIsPaused = false;
/* LogCat输出TAG filter */
private static final String TAG = "HippoMediaPlayer";
private String currentFilePath = "";
private String currentTempFilePath = "";
private String strVideoURL = "";
private List<String> aryFileDownloaded;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/* 将.3gp影像文件存放URL网址 */
strVideoURL = "http://www.dubblogs.cc:8751/Android/Test/Media/3gp/test.3gp";
//http://www.dubblogs.cc:8751/Android/Test/Media/3gp/test2.3gp
mTextView01 = (TextView)findViewById(R.id.myTextView1);
mEditText01 = (EditText)findViewById(R.id.myEditText1);
mEditText01.setText(strVideoURL);
/* 初始化临时盘路径数组 */
aryFileDownloaded = new ArrayList<String>();
/* 绑定Layout上的SurfaceView */
mSurfaceView01 = (SurfaceView) findViewById(R.id.mSurfaceView1);
/* 设定PixnelFormat */
getWindow().setFormat(PixelFormat.TRANSPARENT);
/* 设定SurfaceHolder为Layout SurfaceView */
mSurfaceHolder01 = mSurfaceView01.getHolder();
mSurfaceHolder01.addCallback(this);
/* 由于原有的影片Size较小,故指定其为固定比例 */
mSurfaceHolder01.setFixedSize(160, 128);
mSurfaceHolder01.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mPlay = (ImageButton) findViewById(R.id.play);
mReset = (ImageButton) findViewById(R.id.reset);
mPause = (ImageButton) findViewById(R.id.pause);
mStop = (ImageButton) findViewById(R.id.stop);
/* 播放按钮 */
mPlay.setOnClickListener(new ImageButton.OnClickListener()
{
public void onClick(View view)
{
if(checkSDCard())
{
strVideoURL = mEditText01.getText().toString();
playVideo(strVideoURL);
mTextView01.setText(R.string.str_play);
}
else
{
mTextView01.setText(R.string.str_err_nosd);
}
}
});
/* 重新播放按钮 */
mReset.setOnClickListener(new ImageButton.OnClickListener()
{
public void onClick(View view)
{
if(checkSDCard())
{
if(bIsReleased == false)
{
if (mMediaPlayer01 != null)
{
mMediaPlayer01.seekTo(0);
mTextView01.setText(R.string.str_play);
}
}
}
else
{
mTextView01.setText(R.string.str_err_nosd);
}
}
});
/* 暂停按钮 */
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);
}
}
}
}
else
{
mTextView01.setText(R.string.str_err_nosd);
}
}
});
/* 终止按钮 */
mStop.setOnClickListener(new ImageButton.OnClickListener()
{
public void onClick(View view)
{
if(checkSDCard())
{
try
{
if (mMediaPlayer01 != null)
{
if(bIsReleased==false)
{
mMediaPlayer01.seekTo(0);
mMediaPlayer01.pause();
mTextView01.setText(R.string.str_stop);
}
}
}
catch(Exception e)
{
mTextView01.setText(e.toString());
Log.e(TAG, e.toString());
e.printStackTrace();
}
}
else
{
mTextView01.setText(R.string.str_err_nosd);
}
}
});
}
/* 自定义下载URL影片并播放 */
private void playVideo(final String strPath)
{
try
{
/* 若传入的strPath为现有播放的链接,则直接播放 */
if (strPath.equals(currentFilePath) && mMediaPlayer01 != null)
{
mMediaPlayer01.start();
return;
}
else if(mMediaPlayer01 != null)
{
mMediaPlayer01.stop();
}
currentFilePath = strPath;
/* 重新建构MediaPlayer对象 */
mMediaPlayer01 = new MediaPlayer();
/* 设定播放音量 */
mMediaPlayer01.setAudioStreamType(2);
/* 设定显示于SurfaceHolder */
mMediaPlayer01.setDisplay(mSurfaceHolder01);
mMediaPlayer01.setOnErrorListener(new MediaPlayer.OnErrorListener()
{
@Override
public boolean onError(MediaPlayer mp, int what, int extra)
{
// TODO Auto-generated method stub
Log.i(TAG, "Error on Listener, what: " + what + "extra: " + extra);
return false;
}
});
mMediaPlayer01.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener()
{
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent)
{
// TODO Auto-generated method stub
Log.i(TAG, "Update buffer: " + Integer.toString(percent) + "%");
}
});
mMediaPlayer01.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
{
@Override
public void onCompletion(MediaPlayer mp)
{
// TODO Auto-generated method stub
Log.i(TAG,"mMediaPlayer01 Listener Completed");
mTextView01.setText(R.string.str_done);
}
});
mMediaPlayer01.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
{
@Override
public void onPrepared(MediaPlayer mp)
{
// TODO Auto-generated method stub
Log.i(TAG,"Prepared Listener");
}
});
Runnable r = new Runnable()
{
public void run()
{
try
{
/* 在线程运行中,调用自定义函数抓下文件 */
setDataSource(strPath);
/* 下载完后才会调用prepare */
mMediaPlayer01.prepare();
Log.i(TAG, "Duration: " + mMediaPlayer01.getDuration());
mMediaPlayer01.start();
bIsReleased = false;
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
SDK开发范例大全源码第8章 (821个子文件)
resources.ap_ 35KB
resources.ap_ 19KB
resources.ap_ 19KB
resources.ap_ 19KB
resources.ap_ 15KB
resources.ap_ 14KB
resources.ap_ 12KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 10KB
resources.ap_ 8KB
resources.ap_ 8KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
EX08_24.apk 41KB
EX08_25.apk 26KB
EX08_09.apk 26KB
EX08_23.apk 24KB
EX08_15.apk 23KB
EX08_08.apk 22KB
EX08_27.apk 20KB
EX08_13.apk 19KB
EX08_26.apk 19KB
EX08_18.apk 17KB
EX08_22.apk 16KB
EX08_21.apk 16KB
EX08_20_1.apk 15KB
EX08_19.apk 15KB
EX08_20.apk 15KB
EX08_23_1.apk 15KB
EX08_16.apk 14KB
EX08_17.apk 14KB
EX08_17.apk 14KB
EX08_12.apk 13KB
EX08_02.apk 13KB
EX08_14.apk 12KB
EX08_11.apk 12KB
EX08_10.apk 11KB
EX08_07.apk 11KB
EX08_01.apk 11KB
EX08_04.apk 11KB
EX08_05.apk 11KB
EX08_06.apk 10KB
EX08_03.apk 10KB
proguard.cfg 1KB
proguard.cfg 1KB
proguard.cfg 1KB
proguard.cfg 1KB
proguard.cfg 1KB
proguard.cfg 1KB
EX08_15.class 9KB
mService1.class 9KB
mService1.class 9KB
EX08_12.class 7KB
EX08_27.class 7KB
EX08_09.class 7KB
EX08_08.class 7KB
EX08_16.class 7KB
EX08_14.class 6KB
EX08_25.class 6KB
EX08_18.class 5KB
EX08_26.class 5KB
EX08_11.class 5KB
EX08_13_1.class 4KB
EX08_07.class 4KB
EX08_10.class 4KB
EX08_24$1.class 4KB
EX08_26$1.class 4KB
EX08_05$myInternetGalleryAdapter.class 3KB
EX08_24.class 3KB
EX08_19.class 3KB
EX08_01$1.class 3KB
EX08_26$2.class 3KB
EX08_26$mBroadcastReceiver.class 3KB
MyHandler.class 3KB
EX08_04.class 3KB
EX08_23.class 3KB
EX08_21$1.class 3KB
EX08_01$2.class 3KB
EX08_27$mSocketConnectRunnable1$1.class 3KB
EX08_27$mSocketConnectRunnable1.class 3KB
EX08_06.class 2KB
EX08_13.class 2KB
EX08_22.class 2KB
共 821 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
wdzh
- 粉丝: 1
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页